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