On 11/06/2015 12:17 PM, Ramana Radhakrishnan wrote:
On 06/11/15 11:08, Bernd Schmidt wrote:
This one is a fix for something that could currently only affect c6x, but I 
have code that exposes it on i386.

When optionally gathering operand info in regrename, we can overflow the array in certain 
situations. This can occur when we have a situation where a value is constructed in 
multiple small registers and then accessed as a larger one (CDImode in the testcase I 
have). In that case we enter the "superset" path, which fails the involved 
chains, but the smaller pieces still all get seen by record_operand_use, and there may be 
more of them than MAX_REGS_PER_ADDRESS.

The following fixes it. Bootstrapped and tested  with -frename-registers 
enabled at -O1 on x86_64-linux. Ok?


Bernd

This sounds like it will fix http://gcc.gnu.org/PR66785 ...

Ah, I didn't realize something else was using this functionality:

gcc/config/aarch64/cortex-a57-fma-steering.c
1025:  regrename_init (true);

Yeah, the description of that bug makes it sound like the same issue.


Bernd

Reply via email to