Hi,

On GCC4.3 I am facing a problem due to a reload error: unable to find
register to spill in class 'CHIP_REGS'.

This happens on a really nasty set of rules that involve expands, splits
and a TARGET_SECONDARY_RELOAD. Since this code has been brough through
some older GCC versions, I am trying to get around to refactor it and
hopefully in the end, get rid of the register spill failure.

So, I would like if someone could give a couple of hints on how the
splits fit together with the rest.

So, at expansion time we generate the RTL and during register allocation
and reload we have loads of matching. However, what happens when we have
a define_insn where the output template is "#". Will this trigger the
split at expansion time too?

During reload we have TARGET_SECONDARY_RELOAD being massively called
with all kinds of expressions and reload modes. One interesting thing I
noticed is that in gcc4.3 i386 has no TARGET_SECONDARY_RELOAD defined
and it made me wonder if the secondary reload is really something of a
hack that is best avoided by writing clearer/better backend rules or if
there are specific cases which it _has_ to be defined for reload to
work.

Cheers,

-- 
PMatos

Reply via email to