This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add "native" as a valid option value for -march= on i386 (PR driver/83193).


Jakub Jelinek <jakub@redhat.com> writes:
> On Tue, Feb 20, 2018 at 03:58:07PM +0000, Richard Sandiford wrote:
>> Martin Liška <mliska@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]