On 05/27/2015 07:20 AM, Ilya Enkovich wrote:

I looked into assign_stack_local_1 call for this spill. LRA correctly
requests 16 bytes size with 16 bytes alignment. But
assign_stack_local_1 look reduces alignment to 8 because estimated
stack alignment before RA is 8 and requested mode's (DI) alignment
fits it. Probably LRA should pass biggest_mode of the reg when
requesting a stack slot?
It's hard to say for sure. Within the lra_reg structure, biggest_mode refers to the largest mode in which a pseudo is referenced. So for a pseudo it might make sense. Presumably the biggest_mode for the pseudo in question is larger than DImode, right?


I handled it by increasing stack_alignment_estimated when transform
some instructions to vector mode.
I haven't looked deeply, but if your pass runs after stack_alignment_estimated is initially computed, then this seems like a desirable way to fix the problem.

jeff

Reply via email to