>>> On 24.10.14 at 11:10, <richard.guent...@gmail.com> wrote:
> On Fri, Oct 24, 2014 at 11:01 AM, Jan Beulich <jbeul...@suse.com> wrote:
>>>>> On 23.10.14 at 20:13, <l...@redhat.com> wrote:
>>> On 10/23/14 01:09, Jan Beulich wrote:
>>>>>>> On 23.10.14 at 08:50, <ja...@redhat.com> wrote:
>>>>> On Thu, Oct 23, 2014 at 07:30:27AM +0100, Jan Beulich wrote:
>>>>>> Function (or more narrow) scope static variables (as well as others not
>>>>>> placed on the stack) should also not have any effect on the stack
>>>>>> alignment. I noticed the issue first with Linux'es dynamic_pr_debug()
>>>>>> construct using an 8-byte aligned sub-file-scope local variable.
>>>>>>
>>>>>> According to my checking bad behavior started with 4.6.x (4.5.3 was
>>>>>> still okay), but generated code got quite a bit worse as of 4.9.0.
>>>>>
>>>>> If the static/external var has BLKmode, then perhaps it is safe, but I
>>>>> wonder about other vars, say vectors etc.  Such vars are most likely
>>>>> loaded from their memory location, and if for some reason that needs to be
>>>>> spilled again, stack realignment would not be able to do that.
>>>>> Or do we inspect the IL and for any pseudos with modes needing larger
>>>>> alignment we adjust the dynamic stack realignment fields?
>>>>
>>>> I don't know, but it would seem to me that this ought to happen
>>>> anyway: If the pseudo holds the result of some computation
>>>> other than a simple load from memory and needs spilling, the same
>>>> would apply afaict.
>>>
>>> For something in static storage, this seems OK.  However, I think a hard
>>> register variable ought to be left alone -- even if we can't spill it to
>>> a stack slot today, there's a reasonable chance we might add that
>>> capability in the future.
>>
>> Hmm, but then wouldn't it need to be the code generating the spill
>> that's responsible for enforcing suitable alignment? I can certainly
>> re-submit without the hard register special cased (as it would still
>> fix the original issue I'm seeing), but it feels wrong to do so.
> 
> Yes, ISTR the spilling code is supposed to update the required
> stack alignment.  After all the RA decision might affect required
> alignment of spills.

Thanks for confirming. So is the patch then okay to commit as is?

Jan

Reply via email to