diff options
author | Nathan Froyd <froydnj@codesourcery.com> | 2010-06-09 15:34:07 +0000 |
---|---|---|
committer | Nathan Froyd <froydnj@gcc.gnu.org> | 2010-06-09 15:34:07 +0000 |
commit | 2a4449a3b51e3a8a74111c0d0cdbfcfbf0280cc7 (patch) | |
tree | f591df14aec60eb4f3d7ef970df84e67ef698457 | |
parent | 0244e6f7e07176d02c4135e64e776bc117553c90 (diff) | |
download | gcc-2a4449a3b51e3a8a74111c0d0cdbfcfbf0280cc7.zip gcc-2a4449a3b51e3a8a74111c0d0cdbfcfbf0280cc7.tar.gz gcc-2a4449a3b51e3a8a74111c0d0cdbfcfbf0280cc7.tar.bz2 |
cp-tree.h (struct saved_scope): Change decl_ns_list field type to a VEC.
* cp-tree.h (struct saved_scope): Change decl_ns_list field type
to a VEC.
* decl2.c (cp_write_global_declarations): Adjust for new type of
decl_namespace_list.
* name-lookup.c (current_decl_namespace): Likewise.
(push_decl_namespace): Likewise.
(pop_decl_namespace): Likewise.
From-SVN: r160487
-rw-r--r-- | gcc/cp/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 2 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 3 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 9 |
4 files changed, 17 insertions, 7 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aca50f8..8a26141 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,15 @@ 2010-06-09 Nathan Froyd <froydnj@codesourcery.com> + * cp-tree.h (struct saved_scope): Change decl_ns_list field type + to a VEC. + * decl2.c (cp_write_global_declarations): Adjust for new type of + decl_namespace_list. + * name-lookup.c (current_decl_namespace): Likewise. + (push_decl_namespace): Likewise. + (pop_decl_namespace): Likewise. + +2010-06-09 Nathan Froyd <froydnj@codesourcery.com> + * call.c (build_java_interface_fn_ref): Call build_function_type_list instead of build_function_type. * decl.c (cxx_init_decl_processing): Likewise. diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index eaf3459..adff616 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -896,7 +896,7 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; struct GTY(()) saved_scope { VEC(cxx_saved_binding,gc) *old_bindings; tree old_namespace; - tree decl_ns_list; + VEC(tree,gc) *decl_ns_list; tree class_name; tree class_type; tree access_specifier; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index a33751c..691c1db 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3586,7 +3586,8 @@ cp_write_global_declarations (void) at_eof = 1; /* Bad parse errors. Just forget about it. */ - if (! global_bindings_p () || current_class_type || decl_namespace_list) + if (! global_bindings_p () || current_class_type + || !VEC_empty (tree,decl_namespace_list)) return; if (pch_file) diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index db4246c..af6829f 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3195,8 +3195,8 @@ current_decl_namespace (void) { tree result; /* If we have been pushed into a different namespace, use it. */ - if (decl_namespace_list) - return TREE_PURPOSE (decl_namespace_list); + if (!VEC_empty (tree, decl_namespace_list)) + return VEC_last (tree, decl_namespace_list); if (current_class_type) result = decl_namespace_context (current_class_type); @@ -3380,8 +3380,7 @@ push_decl_namespace (tree decl) { if (TREE_CODE (decl) != NAMESPACE_DECL) decl = decl_namespace_context (decl); - decl_namespace_list = tree_cons (ORIGINAL_NAMESPACE (decl), - NULL_TREE, decl_namespace_list); + VEC_safe_push (tree, gc, decl_namespace_list, ORIGINAL_NAMESPACE (decl)); } /* [namespace.memdef]/2 */ @@ -3389,7 +3388,7 @@ push_decl_namespace (tree decl) void pop_decl_namespace (void) { - decl_namespace_list = TREE_CHAIN (decl_namespace_list); + VEC_pop (tree, decl_namespace_list); } /* Return the namespace that is the common ancestor |