Fix 34826
authorMircea Namolaru <namolaru@il.ibm.com>
Thu, 17 Jan 2008 17:49:32 +0000 (17:49 +0000)
committerRevital Eres <revitale@gcc.gnu.org>
Thu, 17 Jan 2008 17:49:32 +0000 (17:49 +0000)
From-SVN: r131604

gcc/ChangeLog
gcc/loop-doloop.c

index c337e95a9c5aa610f97e14c8b06db1c4007c3e39..15885512ed314dde94b1389e7a0c51eea3d7a0cf 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-17  Mircea Namolaru  <namolaru@il.ibm.com>
+
+       PR rtl-optimization/34826
+       * loop-doloop (doloop_modify): Update the REG_BR_PROB note.
+
 2008-01-17  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        * global.c (find_reg): Mark the eh regs as used if necessary.
index 6e33a4f9ba014273b7f8199efc18e4418541840f..448bb723a55e7a67507ec282cbe98e1766a9f10b 100644 (file)
@@ -348,6 +348,7 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
   bool increment_count;
   basic_block loop_end = desc->out_edge->src;
   enum machine_mode mode;
+  rtx true_prob_val;
 
   jump_insn = BB_END (loop_end);
 
@@ -361,6 +362,10 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
       fputs (" iterations).\n", dump_file);
     }
 
+  /* Get the probabilty of the original branch. If it exists we would
+     need to update REG_BR_PROB of the new jump_insn.  */
+  true_prob_val = find_reg_note (jump_insn, REG_BR_PROB, NULL_RTX);
+
   /* Discard original jump to continue loop.  The original compare
      result may still be live, so it cannot be discarded explicitly.  */
   delete_insn (jump_insn);
@@ -516,6 +521,15 @@ doloop_modify (struct loop *loop, struct niter_desc *desc,
       REG_NOTES (jump_insn)
        = gen_rtx_EXPR_LIST (REG_NONNEG, NULL_RTX, REG_NOTES (jump_insn));
     }
+  /* Update the REG_BR_PROB note.  */
+  if (true_prob_val)
+    {
+      /* Seems safer to use the branch probability.  */
+      REG_NOTES (jump_insn) =
+        gen_rtx_EXPR_LIST (REG_BR_PROB,
+                           GEN_INT (desc->in_edge->probability),
+                           REG_NOTES (jump_insn));
+    }
 }
 
 /* Process loop described by LOOP validating that the loop is suitable for