OSDN Git Service

PR target/29777
[pf3gnuchains/gcc-fork.git] / gcc / tree-ssa-loop-manip.c
index 21d1ea1..0b29c5e 100644 (file)
@@ -60,7 +60,7 @@ create_iv (tree base, tree step, tree var, struct loop *loop,
   if (!var)
     {
       var = create_tmp_var (TREE_TYPE (base), "ivtmp");
-      add_referenced_tmp_var (var);
+      add_referenced_var (var);
     }
 
   vb = make_ssa_name (var, NULL_TREE);
@@ -841,6 +841,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor,
   use_operand_p op;
   bool ok;
   unsigned est_niter;
+  unsigned irr = loop_preheader_edge (loop)->flags & EDGE_IRREDUCIBLE_LOOP;
   sbitmap wont_exit;
 
   est_niter = expected_loop_iterations (loop);
@@ -883,7 +884,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor,
   loop_split_edge_with (loop_latch_edge (loop), NULL);
   exit_bb = single_pred (loop->latch);
 
-  new_exit = make_edge (exit_bb, rest, EDGE_FALSE_VALUE);
+  new_exit = make_edge (exit_bb, rest, EDGE_FALSE_VALUE | irr);
   new_exit->count = loop_preheader_edge (loop)->count;
   est_niter = est_niter / factor + 1;
   new_exit->probability = REG_BR_PROB_BASE / est_niter;
@@ -916,7 +917,7 @@ tree_unroll_loop (struct loops *loops, struct loop *loop, unsigned factor,
       else
        {
          var = create_tmp_var (TREE_TYPE (init), "unrinittmp");
-         add_referenced_tmp_var (var);
+         add_referenced_var (var);
        }
 
       new_init = make_ssa_name (var, NULL_TREE);