[Bug rtl-optimization/55845] 454.calculix miscompares with -march=btver2 -O3 -ffastmath -fschedule-insns -mvzeroupper for test data run

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Fri Jan 4 08:13:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55845

Uros Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-01-04
     Ever Confirmed|0                           |1

--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2013-01-04 08:13:03 UTC ---
Please note how unspec_volatile vzeroupper (insn 225) moves above conditional
jump comparison, passing many instructions:

_.c.218r.csa:

  ...
  110: {r8:SI=r8:SI+r11:SI;clobber flags:CC;}
      REG_UNUSED flags:CC
  111: flags:CCZ=cmp(bx:SI,r11:SI)
      REG_DEAD r11:SI
      REG_DEAD bx:SI
  105: xmm2:V4DF=vec_select(vec_concat(xmm1:V4DF,xmm1:V4DF),parallel)
  106: xmm1:V4DF=xmm1:V4DF+xmm2:V4DF
      REG_DEAD xmm2:V4DF
  234: xmm1:V2DF=xmm1:V2DF
  235: xmm1:DF=xmm1:DF
  109: xmm0:DF=xmm0:DF+xmm1:DF
      REG_DEAD xmm1:DF
  112: pc={(flags:CCZ==0)?L230:pc}
      REG_DEAD flags:CCZ
      REG_BR_PROB 0xd06
  226: NOTE_INSN_BASIC_BLOCK 22
  225: unspec/v[0] 43
  113: L113:
  114: NOTE_INSN_BASIC_BLOCK 23
  ...

_.c.219r.jump2:

  ...
  110: {r8:SI=r8:SI+r11:SI;clobber flags:CC;}
      REG_UNUSED flags:CC
  225: unspec/v[0] 43
  111: flags:CCZ=cmp(bx:SI,r11:SI)
      REG_DEAD r11:SI
      REG_DEAD bx:SI
  105: xmm2:V4DF=vec_select(vec_concat(xmm1:V4DF,xmm1:V4DF),parallel)
  106: xmm1:V4DF=xmm1:V4DF+xmm2:V4DF
      REG_DEAD xmm2:V4DF
  109: xmm0:DF=xmm0:DF+xmm1:DF
      REG_DEAD xmm1:DF
  112: pc={(flags:CCZ==0)?L231:pc}
      REG_DEAD flags:CCZ
      REG_BR_PROB 0xd06
  113: L113:
  114: NOTE_INSN_BASIC_BLOCK 23
  ...

Confirmed as rtl-optimization infrastructure problem.



More information about the Gcc-bugs mailing list