sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 14 Jun 2017 11:22:19 +0000 (11:22 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 14 Jun 2017 11:22:19 +0000 (11:22 +0000)
* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
(MASK_FEATURES): New macro.
* config/sparc/sparc.c (sparc_option_override): Remove the special
handling of -mfpu and generalize it to all MASK_FEATURES switches.

From-SVN: r249189

gcc/ChangeLog
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/overflow-4.c

index c6e657259ec609740373aa778519668a9cfb68b0..11e3533d4f9b9470a0d9bcf426a9e1cb491be6ca 100644 (file)
@@ -1,3 +1,10 @@
+2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
+       (MASK_FEATURES): New macro.
+       * config/sparc/sparc.c (sparc_option_override): Remove the special
+       handling of -mfpu and generalize it to all MASK_FEATURES switches.
+
 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
 
        * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
index 95a64a41f987ee60b27d0ef9662aca853dc8cade..790a0367b67be2ce04467f86c2e6b317da276124 100644 (file)
@@ -1341,7 +1341,6 @@ sparc_option_override (void)
   };
   const struct cpu_table *cpu;
   unsigned int i;
-  int fpu;
 
   if (sparc_debug_string != NULL)
     {
@@ -1433,8 +1432,6 @@ sparc_option_override (void)
         call_used_regs [i] = 1;
       }
 
-  fpu = target_flags & MASK_FPU; /* save current -mfpu status */
-
   /* Set the default CPU.  */
   if (!global_options_set.x_sparc_cpu_and_features)
     {
@@ -1473,22 +1470,18 @@ sparc_option_override (void)
 #ifndef HAVE_AS_LEON
                   & ~(MASK_LEON | MASK_LEON3)
 #endif
+                  & ~(target_flags_explicit & MASK_FEATURES)
                   );
 
-  /* If -mfpu or -mno-fpu was explicitly used, don't override with
-     the processor default.  */
-  if (target_flags_explicit & MASK_FPU)
-    target_flags = (target_flags & ~MASK_FPU) | fpu;
-
-  /* -mvis2 implies -mvis */
+  /* -mvis2 implies -mvis.  */
   if (TARGET_VIS2)
     target_flags |= MASK_VIS;
 
-  /* -mvis3 implies -mvis2 and -mvis */
+  /* -mvis3 implies -mvis2 and -mvis */
   if (TARGET_VIS3)
     target_flags |= MASK_VIS2 | MASK_VIS;
 
-  /* -mvis4 implies -mvis3, -mvis2 and -mvis */
+  /* -mvis4 implies -mvis3, -mvis2 and -mvis */
   if (TARGET_VIS4)
     target_flags |= MASK_VIS3 | MASK_VIS2 | MASK_VIS;
 
@@ -1499,15 +1492,14 @@ sparc_option_override (void)
                      | MASK_FMAF);
 
   /* -mvis assumes UltraSPARC+, so we are sure v9 instructions
-     are available.
-     -m64 also implies v9.  */
+     are available; -m64 also implies v9.  */
   if (TARGET_VIS || TARGET_ARCH64)
     {
       target_flags |= MASK_V9;
       target_flags &= ~(MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE);
     }
 
-  /* -mvis also implies -mv8plus on 32-bit */
+  /* -mvis also implies -mv8plus on 32-bit */
   if (TARGET_VIS && ! TARGET_ARCH64)
     target_flags |= MASK_V8PLUS;
 
index 686a3d521939752a77efc7052e59fceb816fc3c3..581774e586b7e475d345a801ce791d2863c3e611 100644 (file)
@@ -423,10 +423,15 @@ extern enum cmodel sparc_cmodel;
 #define WCHAR_TYPE_SIZE 16
 \f
 /* Mask of all CPU selection flags.  */
-#define MASK_ISA                                       \
-  (MASK_SPARCLITE + MASK_SPARCLET                      \
+#define MASK_ISA                                               \
+  (MASK_SPARCLITE + MASK_SPARCLET + MASK_LEON + MASK_LEON3     \
    + MASK_V8 + MASK_V9 + MASK_DEPRECATED_V8_INSNS)
 
+/* Mask of all CPU feature flags.  */
+#define MASK_FEATURES                                          \
+  (MASK_FPU + MASK_HARD_QUAD + MASK_VIS + MASK_VIS2 + MASK_VIS3        \
+   + MASK_VIS4 + MASK_CBCOND + MASK_FMAF + MASK_POPC + MASK_SUBXC)
 /* TARGET_HARD_MUL: Use 32-bit hardware multiply instructions but not %y.  */
 #define TARGET_HARD_MUL                                \
   (TARGET_SPARCLITE || TARGET_SPARCLET         \
index a41cecf173d705aeb3cf76631d14dd010b696e01..d6fdd845dd2d500e30239c0c7936190e00f17e89 100644 (file)
@@ -1,3 +1,7 @@
+2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.target/sparc/overflow-4.c: Add -mno-vis3.
+
 2017-06-14  Andrew Pinski  <apinski@cavium.com>
            Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
 
index 31b326486ee9108a9b5aa4cc0bdae3c3915f15e0..868edea2b9e80437d1f523847ec0d38ce0e3b2bc 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O" } */
+/* { dg-options "-O -mno-vis3" } */
 /* { dg-require-effective-target lp64 } */
 
 #include <stdbool.h>