diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-11-07 17:51:16 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-11-07 17:51:16 +0000 |
commit | 18aeca2550226b6e869545bf8e10fb68f3a2a55d (patch) | |
tree | 0a913208222d0d411ef29b8b2eb99725d0b35cf2 | |
parent | 2219274c3d2e38da421511bb8d95bcea06fb8f9b (diff) | |
download | gcc-18aeca2550226b6e869545bf8e10fb68f3a2a55d.tar.gz |
* decl.c (cp_finish_decl): Only make_tree_vector if we're calling
check_initializer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181099 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 201c2c10cfb..66b4e5194f9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-11-07 Jason Merrill <jason@redhat.com> + + * decl.c (cp_finish_decl): Only make_tree_vector if we're calling + check_initializer. + 2011-11-06 Jason Merrill <jason@redhat.com> PR c++/35688 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d2daf918956..3b283d83d26 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -6049,9 +6049,12 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, /* This variable seems to be a non-dependent constant, so process its initializer. If check_initializer returns non-null the initialization wasn't constant after all. */ - tree init_code = check_initializer (decl, init, flags, &cleanups); + tree init_code; + cleanups = make_tree_vector (); + init_code = check_initializer (decl, init, flags, &cleanups); if (init_code == NULL_TREE) init = NULL_TREE; + release_tree_vector (cleanups); } else if (!DECL_PRETTY_FUNCTION_P (decl)) /* Deduce array size even if the initializer is dependent. */ @@ -6150,6 +6153,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, error ("Java object %qD not allocated with %<new%>", decl); init = NULL_TREE; } + cleanups = make_tree_vector (); init = check_initializer (decl, init, flags, &cleanups); /* Thread-local storage cannot be dynamically initialized. */ if (DECL_THREAD_LOCAL_P (decl) && init) @@ -6320,6 +6324,7 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, unsigned i; tree t; FOR_EACH_VEC_ELT (tree, cleanups, i, t) push_cleanup (decl, t, false); + release_tree_vector (cleanups); } if (was_readonly) |