On Thu, Oct 16, 2014 at 11:36 AM, Jakub Jelinek <ja...@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.