diff mbox

, Update cpu-builtin-1.c test on PowerPC

Message ID 20170718202446.GA25162@ibm-tiger.the-meissners.org
State New
Headers show

Commit Message

Michael Meissner July 18, 2017, 8:24 p.m. UTC
This patch modifies the change I made on July 12th.  It modifies the test for
the __builtin_cpu_is and __builtin_cpu_supports built-in functions to use an
#ifdef instead of target-requires for doing the tests.  One motavation is to
make the back port to GCC 6/7 easier, as I won't have to back port the change
to add the target option ppc_cpu_supports_hw.

I've checked the trunk with compilers built with a new GLIBC and without, and
it passes both compilers.  I also checked the back port to GCC 6/7 and both
work fine as well.

Can I check this patch into the trunk and backports to GCC 6 and 7?

2017-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/81193
	* gcc.target/powerpc/cpu-builtin-1.c: Change test to use #ifdef
	__BUILTIN_CPU_SUPPORTS to see if the GLIBC is new enough that
	__builtin_cpu_is and __builtin_cpu_supports are supported.

Comments

Segher Boessenkool July 19, 2017, 5:33 p.m. UTC | #1
On Tue, Jul 18, 2017 at 04:24:47PM -0400, Michael Meissner wrote:
> This patch modifies the change I made on July 12th.  It modifies the test for
> the __builtin_cpu_is and __builtin_cpu_supports built-in functions to use an
> #ifdef instead of target-requires for doing the tests.  One motavation is to
> make the back port to GCC 6/7 easier, as I won't have to back port the change
> to add the target option ppc_cpu_supports_hw.
> 
> I've checked the trunk with compilers built with a new GLIBC and without, and
> it passes both compilers.  I also checked the back port to GCC 6/7 and both
> work fine as well.
> 
> Can I check this patch into the trunk and backports to GCC 6 and 7?

You will only do this for the tests of __builtin_cpu_* itself?  Okay
(for all branches) in that case.


Segher


> 2017-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
> 
> 	PR target/81193
> 	* gcc.target/powerpc/cpu-builtin-1.c: Change test to use #ifdef
> 	__BUILTIN_CPU_SUPPORTS to see if the GLIBC is new enough that
> 	__builtin_cpu_is and __builtin_cpu_supports are supported.
Michael Meissner July 19, 2017, 7:24 p.m. UTC | #2
On Wed, Jul 19, 2017 at 12:33:03PM -0500, Segher Boessenkool wrote:
> On Tue, Jul 18, 2017 at 04:24:47PM -0400, Michael Meissner wrote:
> > This patch modifies the change I made on July 12th.  It modifies the test for
> > the __builtin_cpu_is and __builtin_cpu_supports built-in functions to use an
> > #ifdef instead of target-requires for doing the tests.  One motavation is to
> > make the back port to GCC 6/7 easier, as I won't have to back port the change
> > to add the target option ppc_cpu_supports_hw.
> > 
> > I've checked the trunk with compilers built with a new GLIBC and without, and
> > it passes both compilers.  I also checked the back port to GCC 6/7 and both
> > work fine as well.
> > 
> > Can I check this patch into the trunk and backports to GCC 6 and 7?
> 
> You will only do this for the tests of __builtin_cpu_* itself?  Okay
> (for all branches) in that case.

Yes, I'm only changing the one test that is in the GCC 7/6 branches.  The other
tests that use the __builtin_cpu_supports built-in (the bmi* tests) will
continue to use the target supports method.
diff mbox

Patch

Index: gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c
===================================================================
--- gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c	(revision 250316)
+++ gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c	(working copy)
@@ -1,10 +1,14 @@ 
 /* { dg-do compile { target { powerpc*-*-* } } } */
 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
-/* { dg-require-effective-target ppc_cpu_supports_hw } */
 
 void
 use_cpu_is_builtins (unsigned int *p)
 {
+  /* If GCC was configured to use an old GLIBC (before 2.23), the
+     __builtin_cpu_is and __builtin_cpu_supports built-in functions return 0,
+     and the compiler issues a warning that you need a newer glibc to use them.
+     Use #ifdef to avoid the warning.  */
+#ifdef __BUILTIN_CPU_SUPPORTS__
   p[0] = __builtin_cpu_is ("power9");
   p[1] = __builtin_cpu_is ("power8");
   p[2] = __builtin_cpu_is ("power7");
@@ -20,11 +24,15 @@  use_cpu_is_builtins (unsigned int *p)
   p[12] = __builtin_cpu_is ("ppc440");
   p[13] = __builtin_cpu_is ("ppc405");
   p[14] = __builtin_cpu_is ("ppc-cell-be");
+#else
+  p[0] = 0;
+#endif
 }
 
 void
 use_cpu_supports_builtins (unsigned int *p)
 {
+#ifdef __BUILTIN_CPU_SUPPORTS__
   p[0] = __builtin_cpu_supports ("4xxmac");
   p[1] = __builtin_cpu_supports ("altivec");
   p[2] = __builtin_cpu_supports ("arch_2_05");
@@ -63,4 +71,7 @@  use_cpu_supports_builtins (unsigned int
   p[35] = __builtin_cpu_supports ("ucache");
   p[36] = __builtin_cpu_supports ("vcrypto");
   p[37] = __builtin_cpu_supports ("vsx");
+#else
+  p[0] = 0;
+#endif
 }