[Bug target/56484] [4.8 Regression] ICE in assign_by_spills, at lra-assigns.c:1268

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 1 08:31:00 GMT 2013


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.



More information about the Gcc-bugs mailing list