summaryrefslogtreecommitdiff
path: root/gcc/cppmacro.c
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-29 11:37:18 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-10-29 11:37:18 +0000
commit4dab9f9fd58bbd0f3e62a40c352bf4ca5f11af08 (patch)
treec48aad594f9cc3ca2781664e65c553c6fb3277cb /gcc/cppmacro.c
parenta543b315a64c3e51edb6ca5a4f30a022b85dada6 (diff)
downloadgcc-4dab9f9fd58bbd0f3e62a40c352bf4ca5f11af08.tar.gz
* cppmacro.c (_cpp_create_definition): Optimize the case of
a macro defined to itself. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37123 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cppmacro.c')
-rw-r--r--gcc/cppmacro.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c
index 58d3020797c..35e66f48054 100644
--- a/gcc/cppmacro.c
+++ b/gcc/cppmacro.c
@@ -1403,7 +1403,6 @@ _cpp_create_definition (pfile, node)
macro->paramc = 0;
macro->fun_like = 0;
macro->var_args = 0;
- macro->disabled = 0;
macro->count = 0;
macro->expansion = (cpp_token *) POOL_FRONT (&pfile->macro_pool);
@@ -1485,6 +1484,11 @@ _cpp_create_definition (pfile, node)
/* Clear the whitespace flag from the leading token. */
macro->expansion[0].flags &= ~PREV_WHITE;
+ /* Implement the macro-defined-to-itself optimisation. */
+ macro->disabled = (macro->count == 1 && !macro->fun_like
+ && macro->expansion[0].type == CPP_NAME
+ && macro->expansion[0].val.node == node);
+
/* Commit the memory. */
POOL_COMMIT (&pfile->macro_pool, macro->count * sizeof (cpp_token));