This is the mail archive of the
mailing list for the GCC project.
LRA spill/fill memory alignment question
- From: "Steve Ellcey " <sellcey at imgtec dot com>
- To: <gcc at gcc dot gnu dot org>
- Date: Wed, 4 Mar 2015 16:13:50 -0800
- Subject: LRA spill/fill memory alignment question
- Authentication-results: sourceware.org; auth=none
I have a question about spilling variables and alignment requirements.
There is currently code that allows one to declare local variables with
an alignment that is greater than MAX_STACK_ALIGNMENT. In that case
expand_stack_vars calls allocate_dynamic_stack_space to create a
pointer to properly aligned stack space. (There is actually a bug
in this code, PR 65315, but I have submitted a patch.)
But there does not seem to be any way to do spills and fills into
memory that has an alignment requirement greater than MAX_STACK_ALIGNMENT.
Is that correct? I am looking at MIPS using the LRA allocator. I was
hoping there was some way to spill 16 byte registers into a 16 byte
aligned spill slot even if the MAX_STACK_ALIGNMENT is 8 bytes.
I know x86 has some platform specific code to dynamically increase the
stack alignment and I think that is how they handle this situation but
I don't see any other platforms using that technique and I was wondering
if there is any more generalized method for spilling registers to memory
with an alignment requirement greater than MAX_STACK_ALIGNMENT.