>>> 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