diff mbox series

[committed] libquadmath: Fix up libquadmath/math/sqrtq.c compilation in some powerpc* configurations [PR116007]

Message ID Zq56rrGRBSB9/l6g@tucnak
State New
Headers show
Series [committed] libquadmath: Fix up libquadmath/math/sqrtq.c compilation in some powerpc* configurations [PR116007] | expand

Commit Message

Jakub Jelinek Aug. 3, 2024, 6:45 p.m. UTC
Hi!

My PR114623 change started using soft-fp.h and quad.h for the sqrtq implementation.
Unfortunately, that seems to fail building in some powerpc* configurations, where
TFmode isn't available.
quad.h has:
 #ifndef TFtype
 typedef float TFtype __attribute__ ((mode (TF)));
 #endif
and uses TFtype.  quad.h has:
 /* Define the complex type corresponding to __float128
    ("_Complex __float128" is not allowed) */
 #if (!defined(_ARCH_PPC)) || defined(__LONG_DOUBLE_IEEE128__)
 typedef _Complex float __attribute__((mode(TC))) __complex128;
 #else
 typedef _Complex float __attribute__((mode(KC))) __complex128;
 #endif
with the conditional and KCmode use added during porting of libquadmath
to powerpc*, so I've just defined TFtype for powerpc when __LONG_DOUBLE_IEEE128__
isn't defined; I could define it to float __attribute__ ((mode (KF))) but it
seemed easier to just define it to __float128 which should do the same thing.

Bootstrapped/regtested on powerpc64{,le}-linux, committed to trunk, queued
for 14.3 backport.

2024-08-03  Jakub Jelinek  <jakub@redhat.com>

	PR target/116007
	* math/sqrtq.c (TFtype): For PowerPC without __LONG_DOUBLE_IEEE128__
	define to __float128 before including soft-fp.h and quad.h.


	Jakub
diff mbox series

Patch

--- libquadmath/math/sqrtq.c.jj	2024-04-09 08:16:54.128737859 +0200
+++ libquadmath/math/sqrtq.c	2024-08-02 23:28:00.862495012 +0200
@@ -9,6 +9,9 @@ 
     && defined(FE_TOWARDZERO) \
     && defined(FE_INEXACT)
 #define USE_SOFT_FP 1
+#if defined(_ARCH_PPC) && !defined(__LONG_DOUBLE_IEEE128__)
+#define TFtype __float128
+#endif
 #include "../../libgcc/soft-fp/soft-fp.h"
 #include "../../libgcc/soft-fp/quad.h"
 #endif