Problem in gen_reload(), seeking an explanation

Joern Rennecke
Mon Jun 21 10:06:00 GMT 1999

> OK, understood. Do I have to care about a FLOAT_REGS = FLOAT_REGS + 
> GENERAL_REGS case here? Just to make sure I'm not breaking anything.

reload shouldn't crate floating point adds, if that's what you mean.

> >but that will still not handle the case properly when an add can
> >operate on some register class that is not a subset of GENERAL_REGS.
> >I don't know if we have any target where this is an issue, though.
> Uhm, such an argument would probably point to a solution with 
> gen_rtx_SET(gen_rtx_PLUS()) instead of gen_add2_insn for insn validation 
> again? Otherwise you would have to put a lot of checking into the swap 
> decision and probably need a new backend macro.

We could also do the swap if the first operand of the add doesn't satisfies
the predicate for operand 1 of the addsi3 pattern / expander, but the
second operand of the add does.  As long as the predicates are defined
sensible, this will help.

More information about the Gcc mailing list