avoid alignment of static variables affecting stack's
authorJan Beulich <jbeulich@suse.com>
Fri, 11 Dec 2015 15:53:24 +0000 (15:53 +0000)
committerJan Beulich <jbeulich@gcc.gnu.org>
Fri, 11 Dec 2015 15:53:24 +0000 (15:53 +0000)
commit9d7d6446562e305c085b89b792368301310f3bac
treed77f563c2a5cfa28caccef30637717356cd82991
parent34955216a7af430fddffff00d8f9a501f3786fcd
avoid alignment of static variables affecting stack's

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.

gcc/
2015-12-11  Jan Beulich  <jbeulich@suse.com>

* cfgexpand.c (expand_one_var): Exit early for static and
external variables when adjusting stack alignment related.

gcc/testsuite/
2015-12-11  Jan Beulich  <jbeulich@suse.com>

* gcc.c-torture/execute/stkalign.c: New.

From-SVN: r231569
gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/stkalign.c [new file with mode: 0644]