[RFC PATCH, i386]: Remove special PIC related __cpuid definitions from config/i386/cpuid.h

Uros Bizjak ubizjak@gmail.com
Thu Oct 16 11:03:00 GMT 2014


On Thu, Oct 16, 2014 at 11:36 AM, Jakub Jelinek <jakub@redhat.com> wrote:

>> >> Now that %ebx is also allocatable in PIC modes, we can cleanup
>> >> config/i386/cpuid considerably. I propose to remove all PIC related
>> >> specializations of __cpuid and __cpuid_count and protect the
>> >> compilation with "#if __GNUC__ >= 5".
>> >>
>> >> The only drawback would be that non-bootstrapped build with gcc < 5.0
>> >> will ignore -march=native, but I think this should be acceptable.
>> >
>> > I'm worried about that.
>> > Can't you instead keep the current cpuid.h stuff as is, just add
>> > && __GNUC__ < 5
>> > to that, so it treats GCC 5+ PIC as if __PIC__ wasn't defined?
>> >
>> > Or, at least use cpuid.h even for older GCC if __PIC__ is not defined
>> > (or __x86_64__ is defined and not medium/large PIC model)?
>>
>> Do we really care that much about non-bootstrapped build? I don't see
>
> At least on Linux, driver-i386.c should not be built with PIC normally,
> so at least changing
> #if __GNUC__ >= 5
> to
> #if defined(__GNUC__) && (__GNUC__ >= 5 || !defined(__PIC__))
> would limit the -march=native change for non-bootstrapped compilers to
> Darwin only (or what other targets use PIC by default?).

Yes, this would work for me - the goal is to keep only one "universal"
__cpuid (and __cpuid_count) define, and the above condition fits this
goal.

Uros.



More information about the Gcc-patches mailing list