diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1b3cceb3015..dbde8050440 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2001-08-07 Jason Merrill + + * tree.c (walk_tree): Walk siblings even if !walk_subtrees. + 2001-08-06 Richard Henderson * decl2.c (finish_objects): Pass a symbol_ref and priority to @@ -140,7 +144,7 @@ declaring a function, and create last_function_parms correctly. 2001-07-25 Jason Merrill - + * call.c (joust): Only prefer a non-builtin candidate to a builtin one if they have the same signature. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 348942c29ea..3642890f255 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1198,12 +1198,18 @@ walk_tree (tp, func, data, htab) if (result) return result; + code = TREE_CODE (*tp); + /* 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; - - code = TREE_CODE (*tp); + { + if (statement_code_p (code) || code == TREE_LIST || code == OVERLOAD) + /* But we still need to check our siblings. */ + return walk_tree (&TREE_CHAIN (*tp), func, data, htab); + else + return NULL_TREE; + } /* Handle common cases up front. */ if (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (code))