diff options
author | Martin Liska <mliska@suse.cz> | 2018-11-09 16:05:40 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-11-09 15:05:40 +0000 |
commit | 47b840eb39c3f0b3ddb01e81a359b9926b13cf44 (patch) | |
tree | 1153d06dcb763580bae79107afac2c1b0317586c | |
parent | 2e14744fcd7820033b91c9516e22eb42b02b5290 (diff) | |
download | gcc-47b840eb39c3f0b3ddb01e81a359b9926b13cf44.zip gcc-47b840eb39c3f0b3ddb01e81a359b9926b13cf44.tar.gz gcc-47b840eb39c3f0b3ddb01e81a359b9926b13cf44.tar.bz2 |
Come up with the flag -fipa-stack-alignment.
2018-11-09 Martin Liska <mliska@suse.cz>
* common.opt: Add -fipa-stack-alignment flag.
* doc/invoke.texi: Document it.
* final.c (rest_of_clean_state): Guard stack
shrinking with flag.
2018-11-09 Martin Liska <mliska@suse.cz>
* gcc.target/i386/ipa-stack-alignment.c: New test.
From-SVN: r265970
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/common.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 7 | ||||
-rw-r--r-- | gcc/final.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/ipa-stack-alignment.c | 13 |
6 files changed, 36 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6a30303..107dbcd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2018-11-09 Martin Liska <mliska@suse.cz> + * common.opt: Add -fipa-stack-alignment flag. + * doc/invoke.texi: Document it. + * final.c (rest_of_clean_state): Guard stack + shrinking with flag. + +2018-11-09 Martin Liska <mliska@suse.cz> + * cgraph.h (ipa_discover_readonly_nonaddressable_vars): Rename to ... (ipa_discover_variable_flags): ... this. diff --git a/gcc/common.opt b/gcc/common.opt index cba516e..98e8eb0 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1728,6 +1728,10 @@ fipa-reference-addressable Common Report Var(flag_ipa_reference_addressable) Init(0) Optimization Discover read-only, write-only and non-addressable static variables. +fipa-stack-alignment +Common Report Var(flag_ipa_stack_alignment) Init(1) Optimization +Reduce stack alignment on call sites if possible. + fipa-matrix-reorg Common Ignore Does nothing. Preserved for backward compatibility. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index e510fef..4ea93a7 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -414,7 +414,7 @@ Objective-C and Objective-C++ Dialects}. -finline-small-functions -fipa-cp -fipa-cp-clone @gol -fipa-bit-cp -fipa-vrp @gol -fipa-pta -fipa-profile -fipa-pure-const -fipa-reference -fipa-reference-addressable @gol --fipa-icf -fira-algorithm=@var{algorithm} @gol +-fipa-stack-alignment -fipa-icf -fira-algorithm=@var{algorithm} @gol -fira-region=@var{region} -fira-hoist-pressure @gol -fira-loop-pressure -fno-ira-share-save-slots @gol -fno-ira-share-spill-slots @gol @@ -8917,6 +8917,11 @@ Enabled by default at @option{-O} and higher. Discover read-only, write-only and non-addressable static variables. Enabled by default at @option{-O} and higher. +@item -fipa-stack-alignment +@opindex fipa-stack-alignment +Reduce stack alignment on call sites if possible. +Enabled by default. + @item -fipa-pta @opindex fipa-pta Perform interprocedural pointer analysis and interprocedural modification diff --git a/gcc/final.c b/gcc/final.c index 6e61f1e..0c1ac62 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -4890,7 +4890,8 @@ rest_of_clean_state (void) /* We can reduce stack alignment on call site only when we are sure that the function body just produced will be actually used in the final executable. */ - if (decl_binds_to_current_def_p (current_function_decl)) + if (flag_ipa_stack_alignment + && decl_binds_to_current_def_p (current_function_decl)) { unsigned int pref = crtl->preferred_stack_boundary; if (crtl->stack_alignment_needed > crtl->preferred_stack_boundary) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6dd28ff..0e257c3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2018-11-09 Martin Liska <mliska@suse.cz> + * gcc.target/i386/ipa-stack-alignment.c: New test. + +2018-11-09 Martin Liska <mliska@suse.cz> + * gcc.dg/tree-ssa/writeonly-2.c: New test. 2018-11-09 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/gcc.target/i386/ipa-stack-alignment.c b/gcc/testsuite/gcc.target/i386/ipa-stack-alignment.c new file mode 100644 index 0000000..1176b59 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/ipa-stack-alignment.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-fno-ipa-stack-alignment -O" } */ + +typedef struct { + long a; + long b[]; +} c; + +c *d; +void e() { d->b[0] = 5; } +void f() { e(); } + +/* { dg-final { scan-assembler "sub.*%.sp" } } */ |