[Bug rtl-optimization/64916] [5.0 regression] ira.c update_equiv_regs patch causes gcc/testsuite/gcc.target/arm/pr43920-2.c regression
amker at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 4 02:52:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64916
amker at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |amker at gcc dot gnu.org
--- Comment #2 from amker at gcc dot gnu.org ---
Below is full dump of pr43920-2.c with "-mthumb -mcpu=cortex-m3 -Os" options:
10: NOTE_INSN_BASIC_BLOCK 2
2: r116:SI=r0:SI
3: r117:SI=r1:SI
REG_DEAD r1:SI
4: r118:SI=r2:SI
REG_DEAD r2:SI
5: NOTE_INSN_FUNCTION_BEG
12: r2:SI=0x1
13: r1:SI=0
15: r0:SI=call [`lseek'] argc:0
REG_DEAD r2:SI
REG_DEAD r1:SI
REG_CALL_DECL `lseek'
16: r111:SI=r0:SI
REG_DEAD r0:SI
17: r2:SI=0x2
18: r1:SI=0
19: r0:SI=r116:SI
REG_DEAD r116:SI
20: r0:SI=call [`lseek'] argc:0
REG_DEAD r2:SI
REG_DEAD r1:SI
REG_CALL_DECL `lseek'
21: r112:SI=r0:SI
REG_DEAD r0:SI
22: cc:CC=cmp(r111:SI,0xffffffffffffffff)
23: pc={(cc:CC==0)?L46:pc}
REG_DEAD cc:CC
REG_BR_PROB 159
24: NOTE_INSN_BASIC_BLOCK 3
25: cc:CC=cmp(r112:SI,0xffffffffffffffff)
26: pc={(cc:CC==0)?L50:pc}
REG_DEAD cc:CC
REG_BR_PROB 159
27: NOTE_INSN_BASIC_BLOCK 4
28: NOTE_INSN_DELETED
29: {cc:CC_NOOV=cmp(r112:SI-r111:SI,0);r114:SI=r112:SI-r111:SI;}
REG_DEAD r112:SI
30: pc={(cc:CC_NOOV==0)?L54:pc}
REG_DEAD cc:CC_NOOV
REG_BR_PROB 400
31: NOTE_INSN_BASIC_BLOCK 5
32: [r117:SI]=r111:SI
REG_DEAD r117:SI
REG_DEAD r111:SI
33: [r118:SI]=r114:SI
REG_DEAD r118:SI
REG_DEAD r114:SI
7: r110:SI=0
REG_EQUAL 0
76: pc=L34
77: barrier
46: L46:
45: NOTE_INSN_BASIC_BLOCK 6
8: r110:SI=r111:SI
REG_DEAD r111:SI
REG_EQUAL 0xffffffffffffffff
78: pc=L34
79: barrier
50: L50:
49: NOTE_INSN_BASIC_BLOCK 7
6: r110:SI=r112:SI
REG_DEAD r112:SI
REG_EQUAL 0xffffffffffffffff
80: pc=L34
81: barrier
54: L54:
53: NOTE_INSN_BASIC_BLOCK 8
9: r110:SI=0xffffffffffffffff
REG_EQUAL 0xffffffffffffffff
34: L34:
35: NOTE_INSN_BASIC_BLOCK 9
40: r0:SI=r110:SI
REG_DEAD r110:SI
41: use r0:SI
Before r216169 (with REG_EQUAL in insn9), jumps from basic block 6/7/8 can be
merged because r110 equals to -1 afterwards. But with the patch, the equal
information of r110==-1 in basic block 8 is lost. As a result, jump from 8->9
can't be merged and two additional instructions are generated.
More information about the Gcc-bugs
mailing list