Hi,

This patch restores df_free_collection_rec call inside the insn traversal
loop and removes the stack allocation check in vec_reserve.  It has
been approved in

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54332#c25

It has been tested on Linux/x86-64 and checked in.

Thanks.


H.J.
---
2012-08-21  H.J. Lu  <hongjiu...@intel.com>

        PR middle-end/54332
        * df-scan.c (df_bb_verify): Restore df_free_collection_rec call
        inside the insn traversal loop.

        * vec.h (vec_reserve): Remove the stack allocation check.

diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 55492fa..df90365 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -4448,6 +4448,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 5fdb859..1922616 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -1099,21 +1099,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);
 }
 
 

Reply via email to