aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.vnet.ibm.com>2012-10-02 18:08:02 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2012-10-02 18:08:02 +0000
commit59a2dfe8d754913ff356c83e1c9a7106a69aad11 (patch)
treeb71704cef58ddf578204641fb40e495212684b06
parent6b7fa93a48b768a4b3414012a66d2343a6e6acaa (diff)
downloadgcc-59a2dfe8d754913ff356c83e1c9a7106a69aad11.zip
gcc-59a2dfe8d754913ff356c83e1c9a7106a69aad11.tar.gz
gcc-59a2dfe8d754913ff356c83e1c9a7106a69aad11.tar.bz2
If no -mcpu=<xxx> or implicit cpu via --with-cpu=<xxx> configure option, inhereit all TARGET_DEFAULT bits.
From-SVN: r191993
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c29
2 files changed, 28 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 32dce2d..0a6a139 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index a3f9909..3e3d553 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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;