> Am 12.09.2025 um 19:03 schrieb Jeff Law <[email protected]>:
> 
> Shreya's work to add the addptr pattern on the RISC-V port exposed a latent 
> bug in LRA.
> 
> We lazily allocate/reallocate the ira_reg_equiv structure and when we do 
> (re)allocation we'll over-allocate and zero-fill so that we don't have to 
> actually allocate and relocate the data so often.
> 
> In the case exposed by Shreya's work we had N requested entries at the last 
> rellocation step.  We actually allocate N+M entries.  During LRA we allocate 
> enough new pseudos and thus have N+M+1 pseudos.
> 
> In get_equiv we read ira_reg_equiv[regno] without bounds checking so we read 
> past the allocated part of the array and get back junk which we use and 
> depending on the precise contents we fault in various fun and interesting 
> ways.
> 
> We could either arrange to re-allocate ira_reg_equiv again on some path 
> through LRA (possibly in get_equiv itself).  We could also just insert the 
> bounds check in get_equiv like is done elsewhere in LRA.  Vlad indicated no 
> strong preference in an email last week.
> 
> So this just adds the bounds check in a manner similar to what's done 
> elsewhere in LRA.  Bootstrapped and regression tested on x86_64 as well as 
> RISC-V with Shreya's work enabled and regtested across the various embedded 
> targets.
> 
> OK for the trunk?

If the issue is latent on branches I suggest to backport as well given the 
‚undefined‘ failure mode.

Richard 

> 
> Jeff
> <P>

Reply via email to