aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-08-20 11:19:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-08-20 11:19:22 +0000
commit145881069e8d5a19e131b5c1922bdb2e27b708da (patch)
tree86faaa7d5f8b59c06113801b45f3d5eae539e5f1 /gcc/cp
parent412bbe81d92ba9c32a2ebd523391bb8f6637a2f7 (diff)
downloadgcc-145881069e8d5a19e131b5c1922bdb2e27b708da.zip
gcc-145881069e8d5a19e131b5c1922bdb2e27b708da.tar.gz
gcc-145881069e8d5a19e131b5c1922bdb2e27b708da.tar.bz2
tree.c (WALK_SUBTREE): Call walk_tree_1.
2007-08-20 Richard Guenther <rguenther@suse.de> * tree.c (WALK_SUBTREE): Call walk_tree_1. (walk_type_fields): Take lh parameter. (walk_tree): Rename to ... (walk_tree_1): ... this. Do not call the walk_subtrees langhook but the now passed callback. Pass lh on recursion. (walk_tree_without_duplicates): Rename to ... (walk_tree_without_duplicates_1): ... this. Take lh parameter and call walk_tree_1. * tree.h (walk_tree_lh): New typedef. (walk_tree_1): Declare. (walk_tree_without_duplicates_1): Likewise. (walk_tree): New define to walk_tree_1 with NULL lh parameter. (walk_tree_without_duplicates): New define to walk_tree_without_duplicates_1 with NULL lh parameter. * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove. * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees langhook. * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove. (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise. (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees initializer. java/ * lang.c (java_tree_inlining_walk_subtrees): Remove. (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove. cp/ * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove define. * tree.h (cp_walk_tree): New define to walk_tree_1 with cp_walk_subtrees lh parameter. (cp_walk_tree_without_duplicates): New define to walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter. * tree.c (count_trees): Call cp_walk_tree_without_duplicates. (verify_stmt_tree): Call cp_walk_tree. (break_out_target_exprs): Likewise. (WALK_SUBTREE): Likewise. * cp-gimplify.c (cp_genericize): Likewise. * cp-pt.c (find_parameter_packs_r): Likewise. (uses_parameter_packs): Likewise. (make_pack_expansion): Likewise. (check_for_bare_parameter_packs): Likewise. (for_each_template_parm): Likewise. * decl.c (check_default_argument): Call cp_walk_tree_without_duplicates. * except.c (build_throw): Likewise. * decl2.c (type_visibility): Likewise. * semantics.c (expand_or_defer_fn): Likewise. (finalize_nrv): Call cp_walk_tree. From-SVN: r127642
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog26
-rw-r--r--gcc/cp/cp-gimplify.c2
-rw-r--r--gcc/cp/cp-objcp-common.h3
-rw-r--r--gcc/cp/cp-tree.h4
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/cp/except.c2
-rw-r--r--gcc/cp/pt.c34
-rw-r--r--gcc/cp/semantics.c8
-rw-r--r--gcc/cp/tree.c10
10 files changed, 60 insertions, 34 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b12b785..d9dbda9 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,29 @@
+2007-08-20 Richard Guenther <rguenther@suse.de>
+
+ * cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES):
+ Remove define.
+ * tree.h (cp_walk_tree): New define to walk_tree_1 with
+ cp_walk_subtrees lh parameter.
+ (cp_walk_tree_without_duplicates): New define to
+ walk_tree_without_duplicates_1 with cp_walk_subtrees lh parameter.
+ * tree.c (count_trees): Call
+ cp_walk_tree_without_duplicates.
+ (verify_stmt_tree): Call cp_walk_tree.
+ (break_out_target_exprs): Likewise.
+ (WALK_SUBTREE): Likewise.
+ * cp-gimplify.c (cp_genericize): Likewise.
+ * cp-pt.c (find_parameter_packs_r): Likewise.
+ (uses_parameter_packs): Likewise.
+ (make_pack_expansion): Likewise.
+ (check_for_bare_parameter_packs): Likewise.
+ (for_each_template_parm): Likewise.
+ * decl.c (check_default_argument): Call
+ cp_walk_tree_without_duplicates.
+ * except.c (build_throw): Likewise.
+ * decl2.c (type_visibility): Likewise.
+ * semantics.c (expand_or_defer_fn): Likewise.
+ (finalize_nrv): Call cp_walk_tree.
+
2007-08-20 Jakub Jelinek <jakub@redhat.com>
PR c++/33025
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index c83fcae..6fcc9b0 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -746,7 +746,7 @@ cp_genericize (tree fndecl)
/* We do want to see every occurrence of the parms, so we can't just use
walk_tree's hash functionality. */
p_set = pointer_set_create ();
- walk_tree (&DECL_SAVED_TREE (fndecl), cp_genericize_r, p_set, NULL);
+ cp_walk_tree (&DECL_SAVED_TREE (fndecl), cp_genericize_r, p_set, NULL);
pointer_set_destroy (p_set);
/* Do everything else. */
diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h
index 2c6267a..9cff31b 100644
--- a/gcc/cp/cp-objcp-common.h
+++ b/gcc/cp/cp-objcp-common.h
@@ -104,9 +104,6 @@ extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t,
#undef LANG_HOOKS_ATTRIBUTE_TABLE
#define LANG_HOOKS_ATTRIBUTE_TABLE cxx_attribute_table
-#undef LANG_HOOKS_TREE_INLINING_WALK_SUBTREES
-#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \
- cp_walk_subtrees
#undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
cp_cannot_inline_tree_fn
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index a80fbad..c35bb95 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4736,6 +4736,10 @@ extern void verify_stmt_tree (tree);
extern linkage_kind decl_linkage (tree);
extern tree cp_walk_subtrees (tree*, int*, walk_tree_fn,
void*, struct pointer_set_t*);
+#define cp_walk_tree(a,b,c,d) \
+ walk_tree_1 (a, b, c, d, cp_walk_subtrees)
+#define cp_walk_tree_without_duplicates(a,b,c) \
+ walk_tree_without_duplicates_1 (a, b, c, cp_walk_subtrees)
extern int cp_cannot_inline_tree_fn (tree*);
extern int cp_auto_var_in_fn_p (const_tree, const_tree);
extern tree fold_if_not_in_template (tree);
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 6172296..a890ee1 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -9061,8 +9061,7 @@ check_default_argument (tree decl, tree arg)
The keyword `this' shall not be used in a default argument of a
member function. */
- var = walk_tree_without_duplicates (&arg, local_variable_p_walkfn,
- NULL);
+ var = cp_walk_tree_without_duplicates (&arg, local_variable_p_walkfn, NULL);
if (var)
{
error ("default argument %qE uses local variable %qD", arg, var);
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index d66b731..97a03c7 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1561,7 +1561,7 @@ static int
type_visibility (tree type)
{
int vis = VISIBILITY_DEFAULT;
- walk_tree_without_duplicates (&type, min_vis_r, &vis);
+ cp_walk_tree_without_duplicates (&type, min_vis_r, &vis);
return vis;
}
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index b5c93b4..081dd0f 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -782,7 +782,7 @@ build_throw (tree exp)
we don't have to do them during unwinding. But first wrap
them in MUST_NOT_THROW_EXPR, since they are run after the
exception object is initialized. */
- walk_tree_without_duplicates (&temp_expr, wrap_cleanups_r, 0);
+ cp_walk_tree_without_duplicates (&temp_expr, wrap_cleanups_r, 0);
exp = build2 (COMPOUND_EXPR, TREE_TYPE (exp), temp_expr, exp);
exp = build1 (CLEANUP_POINT_EXPR, TREE_TYPE (exp), exp);
}
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 76d3518..3f218e6 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -2391,7 +2391,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
if (TYPE_P (t))
{
tree context = TYPE_CONTEXT (t);
- walk_tree (&context, &find_parameter_packs_r, ppd, ppd->visited);
+ cp_walk_tree (&context, &find_parameter_packs_r, ppd, ppd->visited);
}
/* This switch statement will return immediately if we don't find a
@@ -2405,8 +2405,8 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
case BOUND_TEMPLATE_TEMPLATE_PARM:
/* Check the template arguments. */
- walk_tree (&TYPE_TI_ARGS (t), &find_parameter_packs_r, ppd,
- ppd->visited);
+ cp_walk_tree (&TYPE_TI_ARGS (t), &find_parameter_packs_r, ppd,
+ ppd->visited);
/* Dig out the underlying TEMPLATE_TEMPLATE_PARM. */
t = TYPE_TI_TEMPLATE (t);
@@ -2442,7 +2442,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
if (TYPE_TEMPLATE_INFO (t))
{
tree args = TREE_VALUE (TYPE_TEMPLATE_INFO (t));
- walk_tree (&args, &find_parameter_packs_r, ppd, ppd->visited);
+ cp_walk_tree (&args, &find_parameter_packs_r, ppd, ppd->visited);
}
*walk_subtrees = 0;
@@ -2462,8 +2462,8 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
return NULL_TREE;
case INTEGER_TYPE:
- walk_tree (&TYPE_MAX_VALUE (t), &find_parameter_packs_r,
- ppd, ppd->visited);
+ cp_walk_tree (&TYPE_MAX_VALUE (t), &find_parameter_packs_r,
+ ppd, ppd->visited);
*walk_subtrees = 0;
return NULL_TREE;
@@ -2485,7 +2485,7 @@ uses_parameter_packs (tree t)
struct find_parameter_pack_data ppd;
ppd.parameter_packs = &parameter_packs;
ppd.visited = pointer_set_create ();
- walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited);
+ cp_walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited);
pointer_set_destroy (ppd.visited);
return parameter_packs != NULL_TREE;
}
@@ -2535,8 +2535,8 @@ make_pack_expansion (tree arg)
class expansion. */
ppd.visited = pointer_set_create ();
ppd.parameter_packs = &parameter_packs;
- walk_tree (&TREE_PURPOSE (arg), &find_parameter_packs_r,
- &ppd, ppd.visited);
+ cp_walk_tree (&TREE_PURPOSE (arg), &find_parameter_packs_r,
+ &ppd, ppd.visited);
if (parameter_packs == NULL_TREE)
{
@@ -2553,8 +2553,8 @@ make_pack_expansion (tree arg)
{
/* Determine which parameter packs will be expanded in this
argument. */
- walk_tree (&TREE_VALUE (value), &find_parameter_packs_r,
- &ppd, ppd.visited);
+ cp_walk_tree (&TREE_VALUE (value), &find_parameter_packs_r,
+ &ppd, ppd.visited);
}
}
@@ -2592,7 +2592,7 @@ make_pack_expansion (tree arg)
/* Determine which parameter packs will be expanded. */
ppd.parameter_packs = &parameter_packs;
ppd.visited = pointer_set_create ();
- walk_tree (&arg, &find_parameter_packs_r, &ppd, ppd.visited);
+ cp_walk_tree (&arg, &find_parameter_packs_r, &ppd, ppd.visited);
pointer_set_destroy (ppd.visited);
/* Make sure we found some parameter packs. */
@@ -2637,7 +2637,7 @@ check_for_bare_parameter_packs (tree t)
ppd.parameter_packs = &parameter_packs;
ppd.visited = pointer_set_create ();
- walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited);
+ cp_walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited);
pointer_set_destroy (ppd.visited);
if (parameter_packs)
@@ -5896,10 +5896,10 @@ for_each_template_parm (tree t, tree_fn_t fn, void* data,
pfd.visited = visited;
else
pfd.visited = pointer_set_create ();
- result = walk_tree (&t,
- for_each_template_parm_r,
- &pfd,
- pfd.visited) != NULL_TREE;
+ result = cp_walk_tree (&t,
+ for_each_template_parm_r,
+ &pfd,
+ pfd.visited) != NULL_TREE;
/* Clean up. */
if (!visited)
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 9d0f9df..176e6be 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -3184,9 +3184,9 @@ expand_or_defer_fn (tree fn)
}
/* Replace AGGR_INIT_EXPRs with appropriate CALL_EXPRs. */
- walk_tree_without_duplicates (&DECL_SAVED_TREE (fn),
- simplify_aggr_init_exprs_r,
- NULL);
+ cp_walk_tree_without_duplicates (&DECL_SAVED_TREE (fn),
+ simplify_aggr_init_exprs_r,
+ NULL);
/* If this is a constructor or destructor body, we have to clone
it. */
@@ -3336,7 +3336,7 @@ finalize_nrv (tree *tp, tree var, tree result)
data.var = var;
data.result = result;
data.visited = htab_create (37, htab_hash_pointer, htab_eq_pointer, NULL);
- walk_tree (tp, finalize_nrv_r, &data, 0);
+ cp_walk_tree (tp, finalize_nrv_r, &data, 0);
htab_delete (data.visited);
}
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 1d16f2c..3edf39f 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1282,7 +1282,7 @@ int
count_trees (tree t)
{
int n_trees = 0;
- walk_tree_without_duplicates (&t, count_trees_r, &n_trees);
+ cp_walk_tree_without_duplicates (&t, count_trees_r, &n_trees);
return n_trees;
}
@@ -1319,7 +1319,7 @@ verify_stmt_tree (tree t)
{
htab_t statements;
statements = htab_create (37, htab_hash_pointer, htab_eq_pointer, NULL);
- walk_tree (&t, verify_stmt_tree_r, &statements, NULL);
+ cp_walk_tree (&t, verify_stmt_tree_r, &statements, NULL);
htab_delete (statements);
}
@@ -1521,8 +1521,8 @@ break_out_target_exprs (tree t)
target_remap = splay_tree_new (splay_tree_compare_pointers,
/*splay_tree_delete_key_fn=*/NULL,
/*splay_tree_delete_value_fn=*/NULL);
- walk_tree (&t, bot_manip, target_remap, NULL);
- walk_tree (&t, bot_replace, target_remap, NULL);
+ cp_walk_tree (&t, bot_manip, target_remap, NULL);
+ cp_walk_tree (&t, bot_replace, target_remap, NULL);
if (!--target_remap_count)
{
@@ -2290,7 +2290,7 @@ cp_walk_subtrees (tree *tp, int *walk_subtrees_p, walk_tree_fn func,
#define WALK_SUBTREE(NODE) \
do \
{ \
- result = walk_tree (&(NODE), func, data, pset); \
+ result = cp_walk_tree (&(NODE), func, data, pset); \
if (result) goto out; \
} \
while (0)