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



Richard Biener <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

                 CC|                            |jakub at gcc dot gnu.org



--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-30 
10:53:21 UTC ---

(gdb) call debug_gimple_stmt (stmt)

# .MEM_159(ab) = VDEF <.MEM>

D.63506 ={v} {CLOBBER};



SSA form is not up-to-date.  It's a latent issue with sinking clobbers

during EH cleanup.  We have



<L6>:

  # .MEM_32(ab) = VDEF <.MEM_31(ab)>

  D.2688 ={v} {CLOBBER};

  resx 3



<L7>:

  # .MEM_61 = VDEF <.MEM_32(ab)>

  MEM[(struct new_allocator *)&D.2706] ={v} {CLOBBER};

  # .MEM_62 = VDEF <.MEM_61>

  D.2706 ={v} {CLOBBER};

  # .MEM_34 = VDEF <.MEM_62>

  D.2706 ={v} {CLOBBER};

  resx 2



<L8>:

  # .MEM_35 = VDEF <.MEM_34>

  t ={v} {CLOBBER};

  resx 1



and first sink D.2688 ={v} {CLOBBER}; into the successor (L7), dropping

virtual operands.  Then we continue sinking but call unlink_stmt_vdef

on the moved stmt which no longer has up-to-date SSA form and thus

we ICE.



As we only sink across forwarder edges we can trivially keep the original

virtual operands in place.



I have a patch.

Reply via email to