From: Eric Botcazou Date: Thu, 7 Jul 2011 20:43:43 +0000 (+0000) Subject: re PR target/49660 (64-bit gcc doesn't enable -mv8plus with -m32 on Solaris/SPARC) X-Git-Tag: releases/gcc-4.5.4~551 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=427c2230c00b4bc8b9f26ae229d2aee6fe822529;p=thirdparty%2Fgcc.git re PR target/49660 (64-bit gcc doesn't enable -mv8plus with -m32 on Solaris/SPARC) PR target/49660 * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add MASK_V8PLUS, remove commented out flag and reorder. Backport from mainline 2011-06-28 Rainer Orth * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove. (TARGET_64BIT_DEFAULT): Define. * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front of tm_file. * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define. From-SVN: r176010 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 48b42087e223..85e33be553ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2011-07-07 Eric Botcazou + + PR target/49660 + * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add + MASK_V8PLUS, remove commented out flag and reorder. + + Backport from mainline + 2011-06-28 Rainer Orth + + * config/sparc/sol2-64.h (TARGET_DEFAULT): Remove. + (TARGET_64BIT_DEFAULT): Define. + * config.gcc (sparc*-*-solaris2*): Move sparc/sol2-64.h to front + of tm_file. + * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Define. + 2011-07-04 Richard Guenther Backport from mainline diff --git a/gcc/config.gcc b/gcc/config.gcc index 0ff189c33908..372d8befc8d2 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -2422,7 +2422,7 @@ sparc*-*-solaris2*) tm_file="${tm_file} sparc/sol2.h" case ${target} in sparc64-*-* | sparcv9-*-*) - tm_file="${tm_file} sparc/sol2-64.h" + tm_file="sparc/sol2-64.h ${tm_file}" ;; *) test x$with_cpu != x || with_cpu=v9 diff --git a/gcc/config/sparc/sol2-64.h b/gcc/config/sparc/sol2-64.h index cf0bbff1ec6b..41e228114a65 100644 --- a/gcc/config/sparc/sol2-64.h +++ b/gcc/config/sparc/sol2-64.h @@ -1,7 +1,7 @@ /* Definitions of target machine for GCC, for bi-arch SPARC running Solaris 2, defaulting to 64-bit code generation. - Copyright (C) 1999, 2010 Free Software Foundation, Inc. + Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -19,7 +19,4 @@ You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see . */ -#undef TARGET_DEFAULT -#define TARGET_DEFAULT \ - (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \ - MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) +#define TARGET_64BIT_DEFAULT 1 diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h index 4523f8c3ed6e..220f576eb210 100644 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -153,11 +153,18 @@ along with GCC; see the file COPYING3. If not see #undef SUN_INTEGER_MULTIPLY_64 #define SUN_INTEGER_MULTIPLY_64 1 -/* Solaris allows 64 bit out and global registers in 32 bit mode. - sparc_override_options will disable V8+ if not generating V9 code. */ +/* Solaris allows 64-bit out and global registers to be used in 32-bit mode. + sparc_override_options will disable V8+ if either not generating V9 code + or generating 64-bit code. */ #undef TARGET_DEFAULT -#define TARGET_DEFAULT (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU \ - + MASK_LONG_DOUBLE_128) +#ifdef TARGET_64BIT_DEFAULT +#define TARGET_DEFAULT \ + (MASK_V9 + MASK_64BIT + MASK_PTR64 + MASK_STACK_BIAS + \ + MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) +#else +#define TARGET_DEFAULT \ + (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) +#endif /* Solaris-specific #pragmas are implemented on top of attributes. Hook in the bits from config/sol2.c. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ffe02596b6c4..4fdd94056b99 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-07-07 Rainer Orth + + * gcc.target/sparc/cas64.c: New test. + 2011-07-05 Rainer Orth * ada/acats/run_acats (which): Extract last field from type -p, diff --git a/gcc/testsuite/gcc.target/sparc/cas64.c b/gcc/testsuite/gcc.target/sparc/cas64.c new file mode 100644 index 000000000000..ed27cd7cc621 --- /dev/null +++ b/gcc/testsuite/gcc.target/sparc/cas64.c @@ -0,0 +1,15 @@ +/* PR target/49660 */ + +/* { dg-do compile { target sparc*-*-solaris2.* } } */ + +#include + +extern int64_t *val, old, new; + +int +cas64 (void) +{ + return __sync_bool_compare_and_swap (val, old, new); +} + +/* { dg-final { scan-assembler-not "compare_and_swap_8" } } */