diff options
author | Christian Bruel <christian.bruel@st.com> | 2015-05-06 12:54:40 +0200 |
---|---|---|
committer | Christian Bruel <chrbr@gcc.gnu.org> | 2015-05-06 12:54:40 +0200 |
commit | 487edc878fe4c984c2b16fa6dd28e2715977dd24 (patch) | |
tree | aa572836c5f6204f5e5ec2336c9413f64cc5cb04 /gcc | |
parent | 240a94da04372488fb03284d5479687c9f8fbe57 (diff) | |
download | gcc-487edc878fe4c984c2b16fa6dd28e2715977dd24.tar.gz |
re PR target/66015 (align directives not propagated after __attribute__ ((__optimize__ ("O2"))))
2015-05-06 Christian Bruel <christian.bruel@st.com>
PR target/66015
* config/aarch64/aarch64.c (aarch64_override_options): Move align_loops,
align_jumps, align_functions into aarch64_override_options_after_change.
From-SVN: r222847
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 24 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c | 29 |
4 files changed, 52 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f201ab905cb..07ea864db7b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-05-06 Christian Bruel <christian.bruel@st.com> + + PR target/66015 + * config/aarch64/aarch64.c (aarch64_override_options): Move align_loops, + align_jumps, align_functions into aarch64_override_options_after_change. + 2015-05-06 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_supported_load_permutation_p): Use diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 7bc28ae7cf2..7a34e4905f7 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -7053,18 +7053,6 @@ aarch64_override_options (void) #endif } - /* If not opzimizing for size, set the default - alignment to what the target wants */ - if (!optimize_size) - { - if (align_loops <= 0) - align_loops = aarch64_tune_params->loop_align; - if (align_jumps <= 0) - align_jumps = aarch64_tune_params->jump_align; - if (align_functions <= 0) - align_functions = aarch64_tune_params->function_align; - } - if (AARCH64_TUNE_FMA_STEERING) aarch64_register_fma_steering (); @@ -7080,6 +7068,18 @@ aarch64_override_options_after_change (void) flag_omit_leaf_frame_pointer = false; else if (flag_omit_leaf_frame_pointer) flag_omit_frame_pointer = true; + + /* If not optimizing for size, set the default + alignment to what the target wants */ + if (!optimize_size) + { + if (align_loops <= 0) + align_loops = aarch64_tune_params->loop_align; + if (align_jumps <= 0) + align_jumps = aarch64_tune_params->jump_align; + if (align_functions <= 0) + align_functions = aarch64_tune_params->function_align; + } } static struct machine_function * diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c42a9d4a862..2bea3f8c368 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-05-06 Christian Bruel <christian.bruel@st.com> + + PR target/66015 + * gcc.target/aarch64/iinline-attr-1.c: New test. + 2015-05-06 Richard Biener <rguenther@suse.de> * gcc.dg/vect/bb-slp-34.c: New testcase. diff --git a/gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c b/gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c new file mode 100644 index 00000000000..4b390cae0ef --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c @@ -0,0 +1,29 @@ +/* Verify that alignment flags are set when attribute __optimize is used. */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +extern void non_existent(int); + +__attribute__ ((__optimize__ ("O2"))) +static void hooray () +{ + non_existent (1); +} + +__attribute__ ((__optimize__ ("O2"))) +static void hiphip (void (*f)()) +{ + non_existent (2); + f (); +} + +__attribute__ ((__optimize__ ("O2"))) +int test (void) +{ + hiphip (hooray); + return 0; +} + +/* { dg-final { scan-assembler "p2align" } } */ + + |