diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2010-10-19 00:24:36 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2010-10-19 00:24:36 +0000 |
commit | 21016e43e2ead79d6dec8827a8c66339f467813b (patch) | |
tree | 6999acbad04fe1f45049c9e3c40d68981df29d9f /gcc/combine.c | |
parent | 91d2ae685621582eb429f0b2d5a2277151d55121 (diff) | |
download | gcc-21016e43e2ead79d6dec8827a8c66339f467813b.zip gcc-21016e43e2ead79d6dec8827a8c66339f467813b.tar.gz gcc-21016e43e2ead79d6dec8827a8c66339f467813b.tar.bz2 |
re PR rtl-optimization/45966 (Incorrect combiner transformation.)
PR rtl-optimization/45966
* combine.c (try_combine): If added_sets_2, deal with the case
where i0 feeds i1 and i1 feeds i2.
From-SVN: r165674
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index a5088b0f..556228f7 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; } |