diff options
author | Diego Novillo <dnovillo@redhat.com> | 2001-02-28 01:25:42 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2001-02-27 20:25:42 -0500 |
commit | 87aee676f2abe6163710ed4d932eaf35e5de045c (patch) | |
tree | 2a0e66e7640bbbce0aaeac010f6b08b76136f15c /gcc | |
parent | 67935d3f86b738dcd382bedbb4373de98e1f9759 (diff) | |
download | gcc-87aee676f2abe6163710ed4d932eaf35e5de045c.zip gcc-87aee676f2abe6163710ed4d932eaf35e5de045c.tar.gz gcc-87aee676f2abe6163710ed4d932eaf35e5de045c.tar.bz2 |
c-common.c (walk_stmt_tree): Visit the chain of the current tree even if walk_subtrees is 0.
2001-02-27 Diego Novillo <dnovillo@redhat.com>
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c-common.c | 26 | ||||
-rw-r--r-- | gcc/c-semantics.c | 5 |
3 files changed, 21 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf6e7c5..7d4496a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-02-27 Diego Novillo <dnovillo@redhat.com> + + * 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 <dj@redhat.com> * config/m68k/m68k.c (output_function_prologue): Save the new CFA diff --git a/gcc/c-common.c b/gcc/c-common.c index 7a35bff..3823405 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 d6477f6..bf85f7f 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) { |