From: Jason Merrill Date: Mon, 7 Nov 2011 17:51:16 +0000 (-0500) Subject: decl.c (cp_finish_decl): Only make_tree_vector if we're calling check_initializer. X-Git-Tag: releases/gcc-4.7.0~2396 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b12e4c429258129df86a23dbc1143f0e48f6ba53;p=thirdparty%2Fgcc.git decl.c (cp_finish_decl): Only make_tree_vector if we're calling check_initializer. * decl.c (cp_finish_decl): Only make_tree_vector if we're calling check_initializer. From-SVN: r181099 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 201c2c10cfb9..66b4e5194f9b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-11-07 Jason Merrill + + * decl.c (cp_finish_decl): Only make_tree_vector if we're calling + check_initializer. + 2011-11-06 Jason Merrill PR c++/35688 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d2daf9189566..3b283d83d268 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 %", 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)