Hi!

PR103624 observes that we get segfaults for the 64-bit darn builtins when 
compiled
on a 32-bit architecture.  The old built-in infrastructure requires 
TARGET_64BIT, and
this was missed in the new support.  Moving these two builtins from the [power9]
stanza to the [power9-64] stanza solves the problem.

Tested the fix on a powerpc-e300c3-linux-gnu cross.  Bootstrapped and tested on
powerpc64le-linux-gnu with no regressions.  Is this okay for trunk?

Thanks!
Bill


2021-12-13  Bill Schmidt  <wschm...@linux.ibm.com>

gcc/
        PR target/103624
        * config/rs6000/rs6000-builtin-new.def (__builtin_darn): Move to
        [power9-64] stanza.
        (__builtin_darn_raw): Likewise.
---
 gcc/config/rs6000/rs6000-builtin-new.def | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/config/rs6000/rs6000-builtin-new.def 
b/gcc/config/rs6000/rs6000-builtin-new.def
index 30556e5c7f2..2becd96a36c 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -2799,15 +2799,9 @@
 
 ; Miscellaneous P9 functions
 [power9]
-  signed long long __builtin_darn ();
-    DARN darn {}
-
   signed int __builtin_darn_32 ();
     DARN_32 darn_32 {}
 
-  signed long long __builtin_darn_raw ();
-    DARN_RAW darn_raw {}
-
   const signed int __builtin_dtstsfi_eq_dd (const int<6>, _Decimal64);
     TSTSFI_EQ_DD dfptstsfi_eq_dd {}
 
@@ -2840,6 +2834,12 @@
   void __builtin_altivec_stxvl (vsc, void *, long);
     STXVL stxvl {}
 
+  signed long long __builtin_darn ();
+    DARN darn {}
+
+  signed long long __builtin_darn_raw ();
+    DARN_RAW darn_raw {}
+
   const signed int __builtin_scalar_byte_in_set (signed int, signed long long);
     CMPEQB cmpeqb {}
 
-- 
2.27.0


Reply via email to