This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/84251] [8 Regression] Performance regression in gcc 8 when comparing floating point numbers


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]