]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
decl.c (cp_finish_decl): Only make_tree_vector if we're calling check_initializer.
authorJason Merrill <jason@redhat.com>
Mon, 7 Nov 2011 17:51:16 +0000 (12:51 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 7 Nov 2011 17:51:16 +0000 (12:51 -0500)
* decl.c (cp_finish_decl): Only make_tree_vector if we're calling
check_initializer.

From-SVN: r181099

gcc/cp/ChangeLog
gcc/cp/decl.c

index 201c2c10cfb99c9e63cfa93593c2cb9efef8b43a..66b4e5194f9b12b990cbeaf52ce0275ca6914166 100644 (file)
@@ -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
index d2daf9189566c70cdcc47e0de40df0497ab15e6b..3b283d83d2686016d419304e57889d0b1b7bf637 100644 (file)
@@ -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)