This is the mail archive of the gcc@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: [i386] Scalar DImode instructions on XMM registers


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


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