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