]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/31100 (ASM_OUTPUT_ALIGN_WITH_NOP wrong with GNU as)
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 20 Nov 2010 22:01:48 +0000 (22:01 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Sat, 20 Nov 2010 22:01:48 +0000 (22:01 +0000)
PR target/31100
* config/sparc/sparc.h (ASM_OUTPUT_ALIGN_WITH_NOP): Move to...
* config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): ...here.
* config/sparc/sol2-gas.h (ASM_OUTPUT_ALIGN_WITH_NOP): Undefine.

From-SVN: r166986

gcc/ChangeLog
gcc/config/sparc/sol2-gas.h
gcc/config/sparc/sol2.h
gcc/config/sparc/sparc.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/sparc-align-1.c [new file with mode: 0644]

index 3fd3ae1c2a7840d551184e583b8306d7fa70f9fa..6e122603a5d4990f04065651dec53764bd528a2a 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/31100
+       * config/sparc/sparc.h (ASM_OUTPUT_ALIGN_WITH_NOP): Move to...
+       * config/sparc/sol2.h (ASM_OUTPUT_ALIGN_WITH_NOP): ...here.
+       * config/sparc/sol2-gas.h (ASM_OUTPUT_ALIGN_WITH_NOP): Undefine.
+
 2010-11-20  Jan Hubicka  <jh@suse.cz>
 
        * cgraph.c (ld_plugin_symbol_resolution_names): New.
index d61a9fe09cdfa0f9b4c1adb80d62ccdc690f5c30..4bc2cb470aeb2b53e907f9b24d0feb1f131b9d9d 100644 (file)
@@ -23,6 +23,9 @@ a copy of the GCC Runtime Library Exception along with this program;
 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
+/* Undefine this as the filler pattern doesn't work with GNU as.  */
+#undef ASM_OUTPUT_ALIGN_WITH_NOP
+
 /* Undefine this so that BNSYM/ENSYM pairs are emitted by STABS+.  */
 #undef NO_DBX_BNSYM_ENSYM
 
index 26c9ac7d396ae39bed220177a6f41692f07b19be..11286626ecc7589468beb462927239905b61d12d 100644 (file)
@@ -177,6 +177,13 @@ along with GCC; see the file COPYING3.  If not see
     }                                                          \
   while (0)
 
+/* This is how to output an assembler line that says to advance
+   the location counter to a multiple of 2**LOG bytes using the
+   NOP instruction as padding.  */
+#define ASM_OUTPUT_ALIGN_WITH_NOP(FILE,LOG)   \
+  if ((LOG) != 0)                             \
+    fprintf (FILE, "\t.align %d,0x1000000\n", (1<<(LOG)))
+
 /* Use Solaris ELF section syntax.  */
 #undef TARGET_ASM_NAMED_SECTION
 #define TARGET_ASM_NAMED_SECTION sparc_solaris_elf_asm_named_section
index e064899900c1e64846773a096ecf01f57cb45034..ccf5f73439612a7dcef4d14fa1b5c5555f03d90c 100644 (file)
@@ -2013,13 +2013,6 @@ do {                                                                     \
   if ((LOG) != 0)                      \
     fprintf (FILE, "\t.align %d\n", (1<<(LOG)))
 
-/* This is how to output an assembler line that says to advance
-   the location counter to a multiple of 2**LOG bytes using the
-   "nop" instruction as padding.  */
-#define ASM_OUTPUT_ALIGN_WITH_NOP(FILE,LOG)   \
-  if ((LOG) != 0)                             \
-    fprintf (FILE, "\t.align %d,0x1000000\n", (1<<(LOG)))
-
 #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
   fprintf (FILE, "\t.skip "HOST_WIDE_INT_PRINT_UNSIGNED"\n", (SIZE))
 
index fb02c954029ed0763dc512483274dd691b95b472..1d6a14ad0177451f6449ad31ab8b93514ac564e2 100644 (file)
@@ -1,3 +1,7 @@
+2010-11-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.target/sparc/sparc-align-1.c: New test.
+
 2010-11-20  Nathan Froyd  <froydnj@codesourcery.com>
 
        PR c++/16189
diff --git a/gcc/testsuite/gcc.target/sparc/sparc-align-1.c b/gcc/testsuite/gcc.target/sparc/sparc-align-1.c
new file mode 100644 (file)
index 0000000..14c915e
--- /dev/null
@@ -0,0 +1,31 @@
+/* PR target/31100 */
+/* Reported by Erwin Unruh <Erwin.Unruh@fujitsu-siemens.com> */
+
+/* { dg-do run } */
+/* { dg-options "-falign-labels=16" } */
+
+extern void abort(void);
+
+int f(int i)
+{
+  int res;
+
+  switch (i)
+    {
+    case 5:
+      res = i - i;
+      break;
+    default:
+      res = i * 2;
+      break;
+    }
+
+  return res;
+}
+
+int main(void)
+{
+  if (f(2) != 4)
+    abort ();
+  return 0;
+}