This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: The Integrated Register Allocator
Vladimir Makarov <vmakarov@redhat.com> wrote:
> It is a latent reload bug. It can be reproduced in the old allocator
> if r1 and r0 is swapped in REG_ALLOC_ORDER. Accidentally, R0 is used
> for the two reloads because the two reloads is reported not
> conflicting. The reason for this is because they are chained. Function
> gen_reload can not use r14 as an operand of the addition and therefore
> use r0 as target of r14 value.
>
> The bug can not be fixed in gen_reload because at this stage only hard
> registers used for the reload can be used (in other words, gen_reload
> can not spill a pseudo-register and use its hard-register for this).
> The bug should be fixed in reload_uniq_chain_p which should take
> gen_reload behavior into account. I don't know when I can provide a
> patch for this.
Thanks for the explanation! I'll take a look at it more
closely, though this problem seems beyond me.
Regards,
kaz