diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-29 11:37:18 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-10-29 11:37:18 +0000 |
commit | 4dab9f9fd58bbd0f3e62a40c352bf4ca5f11af08 (patch) | |
tree | c48aad594f9cc3ca2781664e65c553c6fb3277cb /gcc/cppmacro.c | |
parent | a543b315a64c3e51edb6ca5a4f30a022b85dada6 (diff) | |
download | gcc-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.c | 6 |
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)); |