aboutsummaryrefslogtreecommitdiff
path: root/gcc/ira.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-02-08 09:09:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-02-08 09:09:22 +0000
commit43f4a281a321cf24391870c340e2a52e8acb6b7f (patch)
tree432be309bd23dbde8ace856de84c5d8c7ecc89a5 /gcc/ira.c
parente8dfe49e7d737db40010122c5fad7f4ca9926eaa (diff)
downloadgcc-43f4a281a321cf24391870c340e2a52e8acb6b7f.zip
gcc-43f4a281a321cf24391870c340e2a52e8acb6b7f.tar.gz
gcc-43f4a281a321cf24391870c340e2a52e8acb6b7f.tar.bz2
re PR target/69274 (435.gromacs performance regression after r231814 on x86 Haswell and bdver2)
2016-02-08 Richard Biener <rguenther@suse.de> PR rtl-optimization/69274 * ira.c (ira_setup_alts): Do not change recog_data.operand order. * gcc.target/i386/addr-sel-1.c: XFAIL. From-SVN: r233209
Diffstat (limited to 'gcc/ira.c')
-rw-r--r--gcc/ira.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ira.c b/gcc/ira.c
index 249e2ff..81d1d33 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1889,10 +1889,11 @@ ira_setup_alts (rtx_insn *insn, HARD_REG_SET &alts)
}
if (commutative < 0)
break;
- if (curr_swapped)
- break;
+ /* Swap forth and back to avoid changing recog_data. */
std::swap (recog_data.operand[commutative],
recog_data.operand[commutative + 1]);
+ if (curr_swapped)
+ break;
}
}