mirror of
https://github.com/richfelker/musl-cross-make.git
synced 2025-08-15 04:43:24 +02:00

this is the upstream patch for fixing gcc bug 116007. gcc 13 does not seem to have the bug, and it should already be fixed in gcc 15 when we add it.
55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
From 3fe5720430a9ba61ed7562aac4d758cc77d49a28 Mon Sep 17 00:00:00 2001
|
|
From: Jakub Jelinek <jakub@redhat.com>
|
|
Date: Sat, 3 Aug 2024 20:37:54 +0200
|
|
Subject: libquadmath: Fix up libquadmath/math/sqrtq.c compilation in some
|
|
powerpc* configurations [PR116007]
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
(cherry picked from commit 3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b)
|
|
---
|
|
libquadmath/math/sqrtq.c | 3 +++
|
|
1 file changed, 3 insertions(+)
|
|
|
|
diff --git a/libquadmath/math/sqrtq.c b/libquadmath/math/sqrtq.c
|
|
index 8ca2828d42ce..a58998a06670 100644
|
|
--- a/libquadmath/math/sqrtq.c
|
|
+++ b/libquadmath/math/sqrtq.c
|
|
@@ -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
|
|
--
|
|
cgit
|
|
|