https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69689
Bug ID: 69689
Summary: gcc.target/i386/addr-sel-1.c FAILs with PR69274 fix
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Blocks: 69274
Target Milestone: ---
Target: i?86-*-*
With
Index: gcc/ira.c
===================================================================
--- gcc/ira.c (revision 231814)
+++ gcc/ira.c (working copy)
@@ -1888,10 +1888,11 @@ ira_setup_alts (rtx_insn *insn, HARD_REG
}
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;
}
}
I see
FAIL: gcc.target/i386/addr-sel-1.c scan-assembler b\\\\+1
where we fail to reload_combine
(insn 6 21 8 2 (parallel [
(set (reg:SI 1 dx [orig:87 _2 ] [87])
(plus:SI (reg:SI 0 ax [99])
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
])
/space/rguenther/src/svn/trunk3/gcc/testsuite/gcc.target/i386/addr-sel-1.c:13
218 {*addsi_1}
(nil))
...
(insn 10 8 11 2 (set (reg:SI 1 dx [98])
(sign_extend:SI (mem/j:QI (plus:SI (reg:SI 1 dx [orig:87 _2 ] [87])
(symbol_ref:SI ("b") [flags 0x2] <var_decl 0x7faa46f94d80
b>)) [0 b S1 A8])))
/space/rguenther/src/svn/trunk3/gcc/testsuite/gcc.target/i386/addr-sel-1.c:13
151 {extendqisi2}
(nil))
probably because dx dies in the same instruction it is used in.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69274
[Bug 69274] [6 Regression] 435.gromacs performance regression after r231814 on
x86 Haswell and bdver2