rs6000.c (rs6000_override_options): Don't override -msoft-float by -mcpu.
authorAlan Modra <amodra@bigpond.net.au>
Mon, 8 Mar 2004 04:18:39 +0000 (04:18 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Mon, 8 Mar 2004 04:18:39 +0000 (14:48 +1030)
* config/rs6000/rs6000.c (rs6000_override_options): Don't override
-msoft-float by -mcpu.  Consolidate similar code for MASK_MULTIPLE
and MASK_STRING.

From-SVN: r79094

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index e41b0c982358dde11c3d8cef63a307eea9e6cdca..5fc25cf6f8d9c39d81a0a8601c11a6ee61bf27f1 100644 (file)
@@ -1,3 +1,9 @@
+2004-03-08  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/rs6000.c (rs6000_override_options): Don't override
+       -msoft-float by -mcpu.  Consolidate similar code for MASK_MULTIPLE
+       and MASK_STRING.
+
 2004-03-07  Aldy Hernandez  <aldyh@redhat.com>
  
         * config/rs6000/rs6000.md (ashrdi3): Do not call ashrdi3_no_power
index 569ad7d0251f12a2342bfe2e03b139c69e7c1fdd..f6dbf966aa83ac87b04b5380cb5bcf346d32a0cd 100644 (file)
@@ -715,11 +715,6 @@ rs6000_override_options (const char *default_cpu)
 
   const size_t ptt_size = ARRAY_SIZE (processor_target_table);
 
-  /* Save current -mmultiple/-mno-multiple status.  */
-  int multiple = TARGET_MULTIPLE;
-  /* Save current -mstring/-mno-string status.  */
-  int string = TARGET_STRING;
-
   /* Some OSs don't support saving the high part of 64-bit registers on
      context switch.  Other OSs don't support saving Altivec registers.
      On those OSs, we don't touch the MASK_POWERPC64 or MASK_ALTIVEC
@@ -742,6 +737,10 @@ rs6000_override_options (const char *default_cpu)
     set_masks &= ~MASK_ALTIVEC;
 #endif
 
+  /* Don't override these by the processor default if given explicitly.  */
+  set_masks &= ~(target_flags_explicit
+                & (MASK_MULTIPLE | MASK_STRING | MASK_SOFT_FLOAT));
+
   /* Identify the processor type.  */
   rs6000_select[0].string = default_cpu;
   rs6000_cpu = TARGET_POWERPC64 ? PROCESSOR_DEFAULT64 : PROCESSOR_DEFAULT;
@@ -777,17 +776,7 @@ rs6000_override_options (const char *default_cpu)
   /* If we are optimizing big endian systems for space, use the load/store
      multiple and string instructions.  */
   if (BYTES_BIG_ENDIAN && optimize_size)
-    target_flags |= MASK_MULTIPLE | MASK_STRING;
-
-  /* If -mmultiple or -mno-multiple was explicitly used, don't
-     override with the processor default */
-  if ((target_flags_explicit & MASK_MULTIPLE) != 0)
-    target_flags = (target_flags & ~MASK_MULTIPLE) | multiple;
-
-  /* If -mstring or -mno-string was explicitly used, don't override
-     with the processor default.  */
-  if ((target_flags_explicit & MASK_STRING) != 0)
-    target_flags = (target_flags & ~MASK_STRING) | string;
+    target_flags |= ~target_flags_explicit & (MASK_MULTIPLE | MASK_STRING);
 
   /* Don't allow -mmultiple or -mstring on little endian systems
      unless the cpu is a 750, because the hardware doesn't support the