summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cppmacro.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2172a8e272a..af210008cbe 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2000-10-29 Neil Booth <neilb@earthling.net>
+ * cppmacro.c (_cpp_create_definition): Optimize the case of
+ a macro defined to itself.
+
+2000-10-29 Neil Booth <neilb@earthling.net>
+
* cpplex.c (save_comment): Don't store new lines in C++ comments.
2000-10-29 Michael Hayes <mhayes@redhat.com>
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));
OpenPOWER on IntegriCloud