This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]