	* gimpify.c (gimplify_body): Only verify_gimple_in_seq with
	checking enabled.
	* tree-ssa-loop-manip.c (add_exit_phis_var): Assert that var
	is a gimple_reg.
	* tree-into-ssa (compute_global_livein): Change the worklist
	type from an array to a VEC.

Index: gimplify.c
===================================================================
--- gimplify.c	(revision 190176)
+++ gimplify.c	(working copy)
@@ -8200,8 +8200,10 @@ gimplify_body (tree fndecl, bool do_parm
   pop_gimplify_context (outer_bind);
   gcc_assert (gimplify_ctxp == NULL);
 
+#ifdef ENABLE_CHECKING
   if (!seen_error ())
     verify_gimple_in_seq (gimple_bind_body (outer_bind));
+#endif
 
   timevar_pop (TV_TREE_GIMPLIFY);
   input_location = saved_location;
Index: tree-ssa-loop-manip.c
===================================================================
--- tree-ssa-loop-manip.c	(revision 190176)
+++ tree-ssa-loop-manip.c	(working copy)
@@ -162,10 +162,8 @@ add_exit_phis_var (tree var, bitmap live
   basic_block def_bb = gimple_bb (SSA_NAME_DEF_STMT (var));
   bitmap_iterator bi;
 
-  if (is_gimple_reg (var))
-    bitmap_clear_bit (livein, def_bb->index);
-  else
-    bitmap_set_bit (livein, def_bb->index);
+  gcc_checking_assert (is_gimple_reg (var));
+  bitmap_clear_bit (livein, def_bb->index);
 
   def = BITMAP_ALLOC (NULL);
   bitmap_set_bit (def, def_bb->index);
Index: tree-into-ssa.c
===================================================================
--- tree-into-ssa.c	(revision 190176)
+++ tree-into-ssa.c	(working copy)
@@ -408,26 +408,28 @@ set_current_def (tree var, tree def)
    for LIVEIN).  */
 
 void
-compute_global_livein (bitmap livein ATTRIBUTE_UNUSED, bitmap def_blocks ATTRIBUTE_UNUSED)
+compute_global_livein (bitmap livein, bitmap def_blocks)
 {
-  basic_block bb, *worklist, *tos;
   unsigned i;
   bitmap_iterator bi;
+  VEC (basic_block, heap) *worklist;
 
-  tos = worklist
-    = (basic_block *) xmalloc (sizeof (basic_block) * (last_basic_block + 1));
+  /* Normally the work list size is bounded by the number of basic
+     blocks in the largest loop.  We don't know this number, but we
+     can be fairly sure that it will be relatively small.  */
+  worklist = VEC_alloc (basic_block, heap, MAX (8, n_basic_blocks / 100));
 
   EXECUTE_IF_SET_IN_BITMAP (livein, 0, i, bi)
-    *tos++ = BASIC_BLOCK (i);
+    VEC_safe_push (basic_block, heap, worklist, BASIC_BLOCK (i));
 
   /* Iterate until the worklist is empty.  */
-  while (tos != worklist)
+  while (! VEC_empty (basic_block, worklist))
     {
       edge e;
       edge_iterator ei;
 
       /* Pull a block off the worklist.  */
-      bb = *--tos;
+      basic_block bb = VEC_pop (basic_block, worklist);
 
       /* For each predecessor block.  */
       FOR_EACH_EDGE (e, ei, bb->preds)
@@ -440,13 +442,13 @@ compute_global_livein (bitmap livein ATT
 	      && ! bitmap_bit_p (livein, pred_index)
 	      && ! bitmap_bit_p (def_blocks, pred_index))
 	    {
-	      *tos++ = pred;
+	      VEC_safe_push (basic_block, heap, worklist, pred);
 	      bitmap_set_bit (livein, pred_index);
 	    }
 	}
     }
 
-  free (worklist);
+  VEC_free (basic_block, heap, worklist);
 }
 
 
