OSDN Git Service

PR rtl-optimization/45966
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Oct 2010 00:24:36 +0000 (00:24 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Oct 2010 00:24:36 +0000 (00:24 +0000)
* combine.c (try_combine): If added_sets_2, deal with the case
where i0 feeds i1 and i1 feeds i2.

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

gcc/ChangeLog
gcc/combine.c

index 9ee8309..f9eea06 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-18  Bernd Schmidt  <bernds@codesourcery.com>
+
+       PR rtl-optimization/45966
+       * combine.c (try_combine): If added_sets_2, deal with the case
+       where i0 feeds i1 and i1 feeds i2.
+
 2010-10-18  Jan Hubicka  <jh@suse.cz>
 
        * ipa.c (cgraph_externally_visible_p): Handle externally visible and
index a5088b0..556228f 100644 (file)
@@ -3192,6 +3192,8 @@ try_combine (rtx i3, rtx i2, rtx i1, rtx i0, int *new_direct_jump_p)
            t = subst (t, i0dest, i0src, 0, 0);
          if (i1_feeds_i2_n)
            t = subst (t, i1dest, i1src, 0, 0);
+         if (i0_feeds_i1_n && i1_feeds_i2_n)
+           t = subst (t, i0dest, i0src, 0, 0);
 
          XVECEXP (newpat, 0, --total_sets) = t;
        }