summaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-19 00:24:36 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-19 00:24:36 +0000
commit590de186001cbe4c43db6dd6185d264a0eaacb24 (patch)
tree6999acbad04fe1f45049c9e3c40d68981df29d9f /gcc/combine.c
parent687f24704d9cc0ade2af6c142e5f66c95225cf62 (diff)
downloadgcc-590de186001cbe4c43db6dd6185d264a0eaacb24.tar.gz
PR rtl-optimization/45966
* 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
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index a5088b0f72b..556228f77b8 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -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;
}