On 02/20/2018 05:19 PM, Richard Sandiford wrote: > Jakub Jelinek <ja...@redhat.com> writes: >> On Tue, Feb 20, 2018 at 03:58:07PM +0000, Richard Sandiford wrote: >>> Martin Liška <mli...@suse.cz> writes: >>>> Hi. >>>> >>>> Following patch adds "native" as a possible option for -march value on >>>> i386 target. I have similar patches for other targets. Would it be >>>> possible to install the patch in current stage? >>> >>> [...] >>> >>>> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c >>>> index d54e7301e84..361d4df2663 100644 >>>> --- a/gcc/config/i386/i386.c >>>> +++ b/gcc/config/i386/i386.c >>>> @@ -4193,6 +4193,9 @@ ix86_option_override_internal (bool main_args_p, >>>> || ((processor_alias_table[i].flags & PTA_64BIT) != 0))) >>>> candidates.safe_push (processor_alias_table[i].name); >>>> >>>> + /* Add also "native" as possible value. */ >>>> + candidates.safe_push ("native"); >>>> + >>>> char *s; >>>> const char *hint >>>> = candidates_list_and_hint (opts->x_ix86_arch_string, s, candidates); >>> >>> We should probably only do this if the driver supports -march=native. >>> I think for x86 that means HAVE_LOCAL_CPU_DETECT. >> >> Isn't the option available always? It just doesn't do anything if >> /* If we are compiling with GCC where %EBX register is fixed, then the >> driver will just ignore -march and -mtune "native" target and will leave >> to the newly built compiler to generate code for its default target. */ > > It's only available for x86 hosts: > > /* -march=native handling only makes sense with compiler running on > an x86 or x86_64 chip. If changing this condition, also change > the condition in driver-i386.c. */ > #if defined(__i386__) || defined(__x86_64__) > /* In driver-i386.c. */ > extern const char *host_detect_local_cpu (int argc, const char **argv); > #define EXTRA_SPEC_FUNCTIONS \ > { "local_cpu_detect", host_detect_local_cpu }, > #define HAVE_LOCAL_CPU_DETECT > #endif > > Non-native hosts are obviously a niche case for x86, but it still > seems better to be consistent. > > Richard >
So would it enough to wrap 'candidates.safe_push ("native");' by #ifdef HAVE_LOCAL_CPU_DETECT ? Thanks, Martin