diff mbox

[i386,libgcc] : Remove obsolete workaround for PR 44174

Message ID CAFULd4aExKnWNES2ys4A4OS_C36kXRsyBRtYaMa28Y6fqvstBQ@mail.gmail.com
State New
Headers show

Commit Message

Uros Bizjak Sept. 28, 2016, 6:27 p.m. UTC
Hello!

Attached patch removes obsolete register allocator workaround from
gcc-4.6 era. The problem was  fixed in gcc-4.7+.

2015-09-28  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/cpuinfo.c (__get_cpuid_output): Remove.
    (__cpu_indicator_init): Call __get_cpuid, not __get_cpuid_output.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline SVN.

Uros.
diff mbox

Patch

Index: config/i386/cpuinfo.c
===================================================================
--- config/i386/cpuinfo.c	(revision 240579)
+++ config/i386/cpuinfo.c	(working copy)
@@ -381,20 +381,6 @@  get_available_features (unsigned int ecx, unsigned
   __cpu_model.__cpu_features[0] = features;
 }
 
-/* A noinline function calling __get_cpuid. Having many calls to
-   cpuid in one function in 32-bit mode causes GCC to complain:
-   "can't find a register in class CLOBBERED_REGS".  This is
-   related to PR rtl-optimization 44174. */
-
-static int __attribute__ ((noinline))
-__get_cpuid_output (unsigned int __level,
-		    unsigned int *__eax, unsigned int *__ebx,
-		    unsigned int *__ecx, unsigned int *__edx)
-{
-  return __get_cpuid (__level, __eax, __ebx, __ecx, __edx);
-}
-
-
 /* A constructor function that is sets __cpu_model and __cpu_features with
    the right values.  This needs to run only once.  This constructor is
    given the highest priority and it should run before constructors without
@@ -406,7 +392,7 @@  __cpu_indicator_init (void)
 {
   unsigned int eax, ebx, ecx, edx;
 
-  int max_level = 5;
+  int max_level;
   unsigned int vendor;
   unsigned int model, family, brand_id;
   unsigned int extended_model, extended_family;
@@ -416,7 +402,7 @@  __cpu_indicator_init (void)
     return 0;
 
   /* Assume cpuid insn present. Run in level 0 to get vendor id. */
-  if (!__get_cpuid_output (0, &eax, &ebx, &ecx, &edx))
+  if (!__get_cpuid (0, &eax, &ebx, &ecx, &edx))
     {
       __cpu_model.__cpu_vendor = VENDOR_OTHER;
       return -1;
@@ -431,7 +417,7 @@  __cpu_indicator_init (void)
       return -1;
     }
 
-  if (!__get_cpuid_output (1, &eax, &ebx, &ecx, &edx))
+  if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
     {
       __cpu_model.__cpu_vendor = VENDOR_OTHER;
       return -1;