http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54332
--- Comment #22 from H.J. Lu <hjl.tools at gmail dot com> 2012-08-21 19:27:50 UTC --- This seems to work: diff --git a/gcc/df-scan.c b/gcc/df-scan.c index 35100d1..39f444f 100644 --- a/gcc/df-scan.c +++ b/gcc/df-scan.c @@ -4392,6 +4392,7 @@ df_bb_verify (basic_block bb) if (!INSN_P (insn)) continue; df_insn_refs_verify (&collection_rec, bb, insn, true); + df_free_collection_rec (&collection_rec); } /* Do the artificial defs and uses. */ diff --git a/gcc/vec.h b/gcc/vec.h index cc7e819..3a298ff 100644 --- a/gcc/vec.h +++ b/gcc/vec.h @@ -1031,21 +1031,9 @@ vec_reserve (vec_t<T> *vec_, int reserve MEM_STAT_DECL) sizeof (T), false PASS_MEM_STAT); else - { - /* Only allow stack vectors when re-growing them. The initial - allocation of stack vectors must be done with the - VEC_stack_alloc macro, because it uses alloca() for the - allocation. */ - if (vec_ == NULL) - { - fprintf (stderr, "Stack vectors must be initially allocated " - "with VEC_stack_alloc.\n"); - gcc_unreachable (); - } - return (vec_t<T> *) vec_stack_o_reserve (vec_, reserve, - offsetof (vec_t<T>, vec), - sizeof (T) PASS_MEM_STAT); - } + return (vec_t<T> *) vec_stack_o_reserve (vec_, reserve, + offsetof (vec_t<T>, vec), + sizeof (T) PASS_MEM_STAT); }