https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63661

--- Comment #20 from Martin Jambor <jamborm at gcc dot gnu.org> ---
So had a look at what my tiny bit in IRA does with this testcase and
while it certainly triggers the bug, I don't think it causes it.  It
performs exactly the same modifications as when -mtune=nehalem is not
specified on the command line.

The functions I introduced split life-ranges of three registers, an SI
mode one, DF mode one and a DI mode one.  The bug occurs when both the
latter two (DF and DI mode) are split.

One suspicious thing is that in the nehalem case, the DF register is
assigned to r12 (as opposed to a stack spill in the non-nehalem case)
but I think that register is killed before being used, and
(coincidentally?) it is being overwritten by the value from the
DI-life-split register (r15) - in what seems like another effort of
IRA to split their life-range but with one crucial instruction being
lost (as in not present after reload).

I'm afraid I'll need help of someone who knows IRA, Vladimir, could
you please have a look at what happens in function bar during IRA and
reload?

Reply via email to