If no -mcpu=<xxx> or implicit cpu via --with-cpu=<xxx> configure option, inhereit...
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Tue, 2 Oct 2012 18:08:02 +0000 (18:08 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Tue, 2 Oct 2012 18:08:02 +0000 (18:08 +0000)
From-SVN: r191993

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

index 32dce2df16c3bcb560ad0e4a4d950609cde1c609..0a6a13953fb9aed5ff7b41439638c3e1e0afc4f7 100644 (file)
@@ -1,3 +1,10 @@
+2012-10-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       * config/rs6000/rs6000.c (rs6000_option_override_internal): If
+       -mcpu=<xxx> is not specified and the compiler is not configured
+       using --with-cpu=<xxx>, use the bits from the TARGET_DEFAULT to
+       set the initial options.
+
 2012-10-02  Sharad Singhai  <singhai@google.com>
 
        PR testsuite/54772
index a3f99092900e8e483a44c1545c305f7319aec111..3e3d55324e9abe4540d2c9bb029889fc1ab217cd 100644 (file)
@@ -2446,21 +2446,34 @@ rs6000_option_override_internal (bool global_init_p)
       rs6000_cpu_index = cpu_index = main_target_opt->x_rs6000_cpu_index;
       have_cpu = true;
     }
+  else if (implicit_cpu)
+    {
+      rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (implicit_cpu);
+      have_cpu = true;
+    }
   else
     {
-      const char *default_cpu =
-        (implicit_cpu ? implicit_cpu
-         : (TARGET_POWERPC64 ? "powerpc64" : "powerpc"));
-
+      const char *default_cpu = (TARGET_POWERPC64 ? "powerpc64" : "powerpc");
       rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (default_cpu);
-      have_cpu = implicit_cpu != 0;
+      have_cpu = false;
     }
 
   gcc_assert (cpu_index >= 0);
 
-  target_flags &= ~set_masks;
-  target_flags |= (processor_target_table[cpu_index].target_enable
-                  & set_masks);
+  /* If we have a cpu, either through an explicit -mcpu=<xxx> or if the
+     compiler was configured with --with-cpu=<xxx>, replace all of the ISA bits
+     with those from the cpu, except for options that were explicitly set.  If
+     we don't have a cpu, do not override the target bits set in
+     TARGET_DEFAULT.  */
+  if (have_cpu)
+    {
+      target_flags &= ~set_masks;
+      target_flags |= (processor_target_table[cpu_index].target_enable
+                      & set_masks);
+    }
+  else
+    target_flags |= (processor_target_table[cpu_index].target_enable
+                    & ~target_flags_explicit);
 
   if (rs6000_tune_index >= 0)
     tune_index = rs6000_tune_index;