From: Michael Meissner Date: Fri, 9 Mar 2012 16:56:25 +0000 (+0000) Subject: linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not redefine to be NULL if the current... X-Git-Tag: misc/gccgo-go1_1_2~4097 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45cfa18d29bc5a59845d7254eec5458c8272530f;p=thirdparty%2Fgcc.git linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not redefine to be NULL if the current bit-size is different from the... 2012-03-08 Michael Meissner * config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not redefine to be NULL if the current bit-size is different from the configured bit-size. * config/rs6000/rs6000.c (rs6000_option_override_internal): If the cpu is defaulted, use PROCESSOR_DEFAULT and PROCESSOR_DEFAULT64 to set the default tuning. Add asserts to make sure the cpu and tune indexes are defined. Fix tests for cpu/tune index to use >= 0 to test whether the index is set, instead of > 0. (rs6000_file_start): Do not reset the default cpu if the current bit-size is different from the configured bit-size. From-SVN: r185146 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95ce3ebc1a1e..cc4df12000e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2012-03-09 Michael Meissner + + * config/rs6000/linux64.h (OPTION_TARGET_CPU_DEFAULT): Do not + redefine to be NULL if the current bit-size is different from the + configured bit-size. + + * config/rs6000/rs6000.c (rs6000_option_override_internal): If the + cpu is defaulted, use PROCESSOR_DEFAULT and PROCESSOR_DEFAULT64 to + set the default tuning. Add asserts to make sure the cpu and tune + indexes are defined. Fix tests for cpu/tune index to use >= 0 to + test whether the index is set, instead of > 0. + (rs6000_file_start): Do not reset the default cpu if the current + bit-size is different from the configured bit-size. + 2012-03-09 Tristan Gingold * config/vms/vms-crtlmap.map: Add comments. diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 972f353061a5..7c516eb56a8f 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -159,15 +159,6 @@ extern int dot_symbols; } \ while (0) -#ifdef RS6000_BI_ARCH - -#undef OPTION_TARGET_CPU_DEFAULT -#define OPTION_TARGET_CPU_DEFAULT \ - (((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) \ - ? (char *) 0 : TARGET_CPU_DEFAULT) - -#endif - #undef ASM_DEFAULT_SPEC #undef ASM_SPEC #undef LINK_OS_LINUX_SPEC diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 5558f7769f57..bdd11cc01c62 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2596,6 +2596,7 @@ static bool rs6000_option_override_internal (bool global_init_p) { bool ret = true; + bool have_cpu = false; const char *default_cpu = OPTION_TARGET_CPU_DEFAULT; int set_masks; int cpu_index; @@ -2652,43 +2653,55 @@ rs6000_option_override_internal (bool global_init_p) /* Don't override by the processor default if given explicitly. */ set_masks &= ~target_flags_explicit; - /* Identify the processor type. */ - if (!default_cpu) - { - if (TARGET_POWERPC64) - default_cpu = "powerpc64"; - else if (TARGET_POWERPC) - default_cpu = "powerpc"; - } - /* Process the -mcpu= and -mtune= argument. If the user changed the cpu in a target attribute or pragma, but did not specify a tuning option, use the cpu for the tuning option rather than the option specified with -mtune on the command line. */ - if (rs6000_cpu_index > 0) - cpu_index = rs6000_cpu_index; - else if (main_target_opt != NULL && main_target_opt->x_rs6000_cpu_index > 0) - rs6000_cpu_index = cpu_index = main_target_opt->x_rs6000_cpu_index; + if (rs6000_cpu_index >= 0) + { + cpu_index = rs6000_cpu_index; + have_cpu = true; + } + else if (main_target_opt != NULL && main_target_opt->x_rs6000_cpu_index >= 0) + { + rs6000_cpu_index = cpu_index = main_target_opt->x_rs6000_cpu_index; + have_cpu = true; + } else - rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (default_cpu); + { + if (!default_cpu) + default_cpu = (TARGET_POWERPC64 ? "powerpc64" : "powerpc"); + + rs6000_cpu_index = cpu_index = rs6000_cpu_name_lookup (default_cpu); + } + + gcc_assert (cpu_index >= 0); - if (rs6000_tune_index > 0) + target_flags &= ~set_masks; + target_flags |= (processor_target_table[cpu_index].target_enable + & set_masks); + + if (rs6000_tune_index >= 0) tune_index = rs6000_tune_index; - else + else if (have_cpu) rs6000_tune_index = tune_index = cpu_index; - - if (cpu_index >= 0) + else { - target_flags &= ~set_masks; - target_flags |= (processor_target_table[cpu_index].target_enable - & set_masks); + size_t i; + enum processor_type tune_proc + = (TARGET_POWERPC64 ? PROCESSOR_DEFAULT64 : PROCESSOR_DEFAULT); + + tune_index = -1; + for (i = 0; i < ARRAY_SIZE (processor_target_table); i++) + if (processor_target_table[i].processor == tune_proc) + { + rs6000_tune_index = tune_index = i; + break; + } } - rs6000_cpu = ((tune_index >= 0) - ? processor_target_table[tune_index].processor - : (TARGET_POWERPC64 - ? PROCESSOR_DEFAULT64 - : PROCESSOR_DEFAULT)); + gcc_assert (tune_index >= 0); + rs6000_cpu = processor_target_table[tune_index].processor; if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu == PROCESSOR_PPCE300C3 || rs6000_cpu == PROCESSOR_PPCE500MC || rs6000_cpu == PROCESSOR_PPCE500MC64) @@ -4023,11 +4036,6 @@ rs6000_file_start (void) default_file_start (); -#ifdef TARGET_BI_ARCH - if ((TARGET_DEFAULT ^ target_flags) & MASK_64BIT) - rs6000_default_cpu = 0; -#endif - if (flag_verbose_asm) { sprintf (buffer, "\n%s rs6000/powerpc options:", ASM_COMMENT_START);