From: Eric Botcazou Date: Sat, 20 Nov 2010 22:01:48 +0000 (+0000) Subject: re PR target/31100 (ASM_OUTPUT_ALIGN_WITH_NOP wrong with GNU as) X-Git-Tag: releases/gcc-4.6.0~2441 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=233db724fac81bccf711c461f74adf9eaaa95a9c;p=thirdparty%2Fgcc.git re PR target/31100 (ASM_OUTPUT_ALIGN_WITH_NOP wrong with GNU as) 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3fd3ae1c2a78..6e122603a5d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-11-20 Eric Botcazou + + 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 * cgraph.c (ld_plugin_symbol_resolution_names): New. diff --git a/gcc/config/sparc/sol2-gas.h b/gcc/config/sparc/sol2-gas.h index d61a9fe09cdf..4bc2cb470aeb 100644 --- a/gcc/config/sparc/sol2-gas.h +++ b/gcc/config/sparc/sol2-gas.h @@ -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 . */ +/* 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 diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h index 26c9ac7d396a..11286626ecc7 100644 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -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 diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h index e064899900c1..ccf5f7343961 100644 --- a/gcc/config/sparc/sparc.h +++ b/gcc/config/sparc/sparc.h @@ -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)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fb02c954029e..1d6a14ad0177 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2010-11-20 Eric Botcazou + + * gcc.target/sparc/sparc-align-1.c: New test. + 2010-11-20 Nathan Froyd 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 index 000000000000..14c915e1e124 --- /dev/null +++ b/gcc/testsuite/gcc.target/sparc/sparc-align-1.c @@ -0,0 +1,31 @@ +/* PR target/31100 */ +/* Reported by Erwin Unruh */ + +/* { 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; +}