PR rtl-optimization/26087
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2006 14:58:07 +0000 (14:58 +0000)
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 5 Feb 2006 14:58:07 +0000 (14:58 +0000)
* rtlanal.c (canonicalize_condition): Do not cross basic block
boundaries.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110614 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/rtlanal.c

index e1fac08..4908f5c 100644 (file)
@@ -1,3 +1,9 @@
+2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>
+
+       PR rtl-optimization/26087
+       * rtlanal.c (canonicalize_condition): Do not cross basic block
+       boundaries.
+
 2006-02-04  Alexandre Oliva  <aoliva@redhat.com>
 
        PR debug/24444
index 91fb489..1390ad9 100644 (file)
@@ -4508,6 +4508,7 @@ canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest,
   rtx op0, op1;
   int reverse_code = 0;
   enum machine_mode mode;
+  basic_block bb = BLOCK_FOR_INSN (insn);
 
   code = GET_CODE (cond);
   mode = GET_MODE (cond);
@@ -4569,7 +4570,11 @@ canonicalize_condition (rtx insn, rtx cond, int reverse, rtx *earliest,
 
       if ((prev = prev_nonnote_insn (prev)) == 0
          || !NONJUMP_INSN_P (prev)
-         || FIND_REG_INC_NOTE (prev, NULL_RTX))
+         || FIND_REG_INC_NOTE (prev, NULL_RTX)
+         /* In cfglayout mode, there do not have to be labels at the
+            beginning of a block, or jumps at the end, so the previous
+            conditions would not stop us when we reach bb boundary.  */
+         || BLOCK_FOR_INSN (prev) != bb)
        break;
 
       set = set_of (op0, prev);