re PR target/49660 (64-bit gcc doesn't enable -mv8plus with -m32 on Solaris/SPARC)
authorEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 7 Jul 2011 20:36:59 +0000 (20:36 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 7 Jul 2011 20:36:59 +0000 (20:36 +0000)
PR target/49660
* config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add
MASK_V8PLUS, remove commented out flag and reorder.

From-SVN: r176008

gcc/ChangeLog
gcc/config/sparc/sol2.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/cas64.c [new file with mode: 0644]

index a93f5a1a0e607b263fa57f8c03a7cbe75a70f168..57140ae7f2d1bd6726d5c10ade15c032757dea2f 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR target/49660
+       * config/sparc/sol2.h [TARGET_64BIT_DEFAULT] (TARGET_DEFAULT): Add
+       MASK_V8PLUS, remove commented out flag and reorder.
+
 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/49644
index 6661c21945c4c37fd4a48c88099a245d80280502..12fef68eaa92e1d8a43a1ec8f1218283e6ef2cbc 100644 (file)
@@ -20,16 +20,17 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+/* 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
 #ifdef TARGET_64BIT_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)
+  (MASK_V9 + MASK_64BIT + MASK_PTR64 + MASK_STACK_BIAS + \
+   MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
 #else
-/* Solaris allows 64 bit out and global registers in 32 bit mode.
-   sparc_override_options will disable V8+ if not generating V9 code.  */
-#define TARGET_DEFAULT (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU \
-                       + MASK_LONG_DOUBLE_128)
+#define TARGET_DEFAULT \
+  (MASK_V8PLUS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
 #endif
 
 /* The default code model used to be CM_MEDANY on Solaris
index 3aa5f91273c75792bd3ce1a6f191dc1a7eed81bf..63dda0097c30d01e1ab2a277324f94b2dbc56604 100644 (file)
@@ -1,3 +1,7 @@
+2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * gcc.target/sparc/cas64.c: New test.
+
 2011-07-07  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/49644
diff --git a/gcc/testsuite/gcc.target/sparc/cas64.c b/gcc/testsuite/gcc.target/sparc/cas64.c
new file mode 100644 (file)
index 0000000..ed27cd7
--- /dev/null
@@ -0,0 +1,15 @@
+/* PR target/49660 */
+
+/* { dg-do compile { target sparc*-*-solaris2.* } } */
+
+#include <stdint.h>
+
+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" } } */