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

Reply via email to