2015-05-06 Christian Bruel <christian.bruel@st.com>
authorchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 May 2015 10:54:40 +0000 (10:54 +0000)
committerchrbr <chrbr@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 May 2015 10:54:40 +0000 (10:54 +0000)
PR target/66015
* config/aarch64/aarch64.c (aarch64_override_options): Move align_loops,
align_jumps, align_functions into aarch64_override_options_after_change.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222847 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c [new file with mode: 0644]

index f201ab9..07ea864 100644 (file)
@@ -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
index 7bc28ae..7a34e49 100644 (file)
@@ -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 *
index c42a9d4..2bea3f8 100644 (file)
@@ -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 (file)
index 0000000..4b390ca
--- /dev/null
@@ -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" } } */
+
+