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



Jakub Jelinek <jakub at gcc dot gnu.org> changed:



           What    |Removed                     |Added

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

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-03-01

                 CC|                            |jakub at gcc dot gnu.org,

                   |                            |uros at gcc dot gnu.org

   Target Milestone|---                         |4.8.0

            Summary|ICE in assign_by_spills, at |[4.8 Regression] ICE in

                   |lra-assigns.c:1268          |assign_by_spills, at

                   |                            |lra-assigns.c:1268

     Ever Confirmed|0                           |1



--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-01 
08:30:31 UTC ---

Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188526

but it was merely latent before that, so it isn't LRA bug, because it fails

with reload equally.

I think the problem is in combine, where we have:

ax = call ...

flags = r59 != 0

r60 = flags >= 0 ? ax : r59

r65 = buf

r68 = 768

rep stosd [r65 .. r65 + r68 - 4] = 0

r59 = r60



and the combiner combines the r60 = flags >= 0 ? ax : r59 instruction with

r59 = r60 into r59 = flags >= 0 ? ax : r59 instruction in the last spot, thus

extending the lifetime of the ax and flags hard registers across various other

instructions.

Reply via email to