OSDN Git Service

PR rtl-optimization/47612
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 20:24:15 +0000 (20:24 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 4 May 2011 20:24:15 +0000 (20:24 +0000)
* df-problems.c (can_move_insns_across): Don't pick a cc0 setter
as the last insn of the sequence to be moved.

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

gcc/ChangeLog
gcc/df-problems.c

index 00d8497..4ff3175 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-04  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR rtl-optimization/47612
+       * df-problems.c (can_move_insns_across): Don't pick a cc0 setter
+       as the last insn of the sequence to be moved.
+
 2011-05-04  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/48864
index 0f398ba..e5b88e3 100644 (file)
@@ -4001,7 +4001,10 @@ can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
          if (bitmap_intersect_p (merge_set, test_use)
              || bitmap_intersect_p (merge_use, test_set))
            break;
-         max_to = insn;
+#ifdef HAVE_cc0
+         if (!sets_cc0_p (insn))
+#endif
+           max_to = insn;
        }
       next = NEXT_INSN (insn);
       if (insn == to)
@@ -4038,7 +4041,11 @@ can_move_insns_across (rtx from, rtx to, rtx across_from, rtx across_to,
     {
       if (NONDEBUG_INSN_P (insn))
        {
-         if (!bitmap_intersect_p (test_set, local_merge_live))
+         if (!bitmap_intersect_p (test_set, local_merge_live)
+#ifdef HAVE_cc0
+             && !sets_cc0_p (insn)
+#endif
+             )
            {
              max_to = insn;
              break;