From: Diego Novillo Date: Wed, 28 Feb 2001 01:25:42 +0000 (+0000) Subject: c-common.c (walk_stmt_tree): Visit the chain of the current tree even if walk_subtree... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=87aee676f2abe6163710ed4d932eaf35e5de045c;p=gcc.git c-common.c (walk_stmt_tree): Visit the chain of the current tree even if walk_subtrees is 0. 2001-02-27 Diego Novillo * c-common.c (walk_stmt_tree): Visit the chain of the current tree even if walk_subtrees is 0. * c-semantics.c (prune_unused_decls): Return a non-null value to stop traversing the tree chain. From-SVN: r40106 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf6e7c57b87..7d4496a7715 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-02-27 Diego Novillo + + * c-common.c (walk_stmt_tree): Visit the chain of the current tree + even if walk_subtrees is 0. + * c-semantics.c (prune_unused_decls): Return a non-null value to + stop traversing the tree chain. + 2001-02-27 DJ Delorie * config/m68k/m68k.c (output_function_prologue): Save the new CFA diff --git a/gcc/c-common.c b/gcc/c-common.c index 7a35bffdd61..3823405aedc 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -3797,25 +3797,25 @@ walk_stmt_tree (tp, func, data) if (result) return result; - /* Even if we didn't, FUNC may have decided that there was nothing - interesting below this point in the tree. */ - if (!walk_subtrees) - return NULL_TREE; - /* FUNC may have modified the tree, recheck that we're looking at a statement node. */ code = TREE_CODE (*tp); if (!statement_code_p (code)) return NULL_TREE; - /* Walk over all the sub-trees of this operand. Statement nodes never - contain RTL, and we needn't worry about TARGET_EXPRs. */ - len = TREE_CODE_LENGTH (code); - - /* Go through the subtrees. We need to do this in forward order so - that the scope of a FOR_EXPR is handled properly. */ - for (i = 0; i < len; ++i) - WALK_SUBTREE (TREE_OPERAND (*tp, i)); + /* Visit the subtrees unless FUNC decided that there was nothing + interesting below this point in the tree. */ + if (walk_subtrees) + { + /* Walk over all the sub-trees of this operand. Statement nodes + never contain RTL, and we needn't worry about TARGET_EXPRs. */ + len = TREE_CODE_LENGTH (code); + + /* Go through the subtrees. We need to do this in forward order so + that the scope of a FOR_EXPR is handled properly. */ + for (i = 0; i < len; ++i) + WALK_SUBTREE (TREE_OPERAND (*tp, i)); + } /* Finally visit the chain. This can be tail-recursion optimized if we write it this way. */ diff --git a/gcc/c-semantics.c b/gcc/c-semantics.c index d6477f6eb4f..bf85f7fcc13 100644 --- a/gcc/c-semantics.c +++ b/gcc/c-semantics.c @@ -151,10 +151,7 @@ prune_unused_decls (tp, walk_subtrees, data) tree t = *tp; if (t == NULL_TREE) - { - *walk_subtrees = 0; - return NULL_TREE; - } + return (tree) 1; if (TREE_CODE (t) == DECL_STMT) {