This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/84251] [8 Regression] Performance regression in gcc 8 when comparing floating point numbers
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 09 Feb 2018 09:32:05 +0000
- Subject: [Bug target/84251] [8 Regression] Performance regression in gcc 8 when comparing floating point numbers
- Auto-submitted: auto-generated
- References: <bug-84251-4@http.gcc.gnu.org/bugzilla/>
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