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.

Reply via email to