https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84251
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
cse1 pass of gcc-7 converts several insns (15,16,19,24) in BB4 from:
12: L12:
13: NOTE_INSN_BASIC_BLOCK 4
14: flags:CCFPU=cmp(r89:DF,r90:DF)
15: r96:QI=ordered(flags:CCFPU,0)
16: r95:SI=zero_extend(r96:QI)
18: r97:SI=0
17: flags:CCFPU=cmp(r89:DF,r90:DF)
19: r92:SI={(uneq(flags:CCFPU,0))?r95:SI:r97:SI}
20: r88:SI=r92:SI
24: ax:SI=r88:SI
25: use ax:SI
to:
12: L12:
13: NOTE_INSN_BASIC_BLOCK 4
14: flags:CCFPU=cmp(r89:DF,r90:DF)
15: r96:QI=0x1
REG_DEAD flags:CCFPU
16: r95:SI=0x1
REG_DEAD r96:QI
18: r97:SI=0
17: flags:CCFPU=cmp(r89:DF,r90:DF)
REG_DEAD r90:DF
REG_DEAD r89:DF
19: r92:SI=uneq(flags:CCFPU,0)
REG_DEAD r97:SI
REG_DEAD r95:SI
REG_DEAD flags:CCFPU
20: r88:SI=r92:SI
REG_DEAD r92:SI
24: ax:SI=r92:SI
REG_DEAD r88:SI
25: use ax:SI
cse2 pass later removes (insn 17):
12: L12:
13: NOTE_INSN_BASIC_BLOCK 4
19: r92:SI=uneq(flags:CCFPU,0)
REG_DEAD flags:CCFPU
24: ax:SI=r92:SI
REG_DEAD r92:SI
25: use ax:SI
For some reason, cse1 pass of gcc-8 converts only (insn 24), leaving:
12: L12:
13: NOTE_INSN_BASIC_BLOCK 4
14: flags:CCFP=unspec[cmp(r89:DF,r90:DF)] 27
15: r96:QI=ordered(flags:CCFP,0)
REG_DEAD flags:CCFP
16: r95:SI=zero_extend(r96:QI)
REG_DEAD r96:QI
18: r97:SI=0
17: flags:CCFP=unspec[cmp(r89:DF,r90:DF)] 27
REG_DEAD r90:DF
REG_DEAD r89:DF
19: r92:SI={(uneq(flags:CCFP,0))?r95:SI:r97:SI}
REG_DEAD r97:SI
REG_DEAD r95:SI
REG_DEAD flags:CCFP
20: r88:SI=r92:SI
REG_DEAD r92:SI
24: ax:SI=r92:SI
REG_DEAD r88:SI
25: use ax:SI