reload bug
Joern Rennecke
amylaar@cygnus.co.uk
Tue Dec 1 09:04:00 GMT 1998
> A note, if I move your new code out one nesting level, then it appears to
> work. ie, I put your new code before this statement:
>
> /* I is nonneg if this reload used a register.
> If reload_reg_rtx[r] is 0, this is an optional reload
> that we opted to ignore. */
>
> if (i >= 0 && reload_reg_rtx[r] != 0)
> [ ... ]
>
> I have no clue if that's the right thing to do or not.
Yes, it is the right thing to do.
Basically, there are two ways we manage references to pseudos:
If we can make a reload, even if it's optional, the reload itself
carries the information. emit_reload_insns has to use that information to
update its tables.
If for some reason we can't make a reload at all, a USE or CLOBBER of the
pseudo is created. CLOBBERs are directly evaluated by emit_reload_insns,
while USEs are evaluated by delete_output_reload.
More information about the Gcc-bugs
mailing list