libgfortran: Avoid using libquadmath APIs on powerpc64le on glibc 2.32+
On a glibc 2.32+ build, we still use some libquadmath APIs when we shouldn't: readelf -Wr /home/jakub/gcc/obj/powerpc64le-unknown-linux-gnu/libgfortran/.libs/libgfortran.so.5 | grep QUADMATH 00000000002502c8 0000002600000015 R_PPC64_JMP_SLOT 0000000000000000 fmaq@QUADMATH_1.0 + 0 00000000002505f8 0000006700000015 R_PPC64_JMP_SLOT 0000000000000000 tanq@QUADMATH_1.0 + 0 0000000000250930 0000009b00000015 R_PPC64_JMP_SLOT 0000000000000000 fabsq@QUADMATH_1.0 + 0 0000000000250940 0000009d00000015 R_PPC64_JMP_SLOT 0000000000000000 sinq@QUADMATH_1.0 + 0 0000000000250c98 000000cf00000015 R_PPC64_JMP_SLOT 0000000000000000 copysignq@QUADMATH_1.0 + 0 0000000000251038 0000010700000015 R_PPC64_JMP_SLOT 0000000000000000 cosq@QUADMATH_1.0 + 0 0000000000251068 0000010a00000015 R_PPC64_JMP_SLOT 0000000000000000 fmodq@QUADMATH_1.0 + 0 These should use __fmaieee128, __tanieee128 etc. instead. 2022-01-07 Jakub Jelinek <jakub@redhat.com> * libgfortran.h (__copysignieee128, __fmaieee128, __fmodieee128): Declare. * intrinsics/trigd.c (COPYSIGN, FMOD, FABS, FMA, SIN, COS, TAN): If POWER_IEEE128 is defined, define these for kind 17 include. * intrinsics/trigd_lib.inc (COPYSIGN, FMOD, FABS, FMA, SIN, COS, TAN): Don't define if COPYSIGN is already defined.
This commit is contained in:
parent
7d8011fa00
commit
4d0e778fe3
@ -313,6 +313,16 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
#define HAVE_INFINITY_KIND
|
||||
#endif
|
||||
|
||||
#ifdef POWER_IEEE128
|
||||
#define COPYSIGN __copysignieee128
|
||||
#define FMOD __fmodieee128
|
||||
#define FABS __fabsieee128
|
||||
#define FMA __fmaieee128
|
||||
#define SIN __sinieee128
|
||||
#define COS __cosieee128
|
||||
#define TAN __tanieee128
|
||||
#endif
|
||||
|
||||
#include "trigd_lib.inc"
|
||||
|
||||
#undef KIND
|
||||
|
@ -65,6 +65,7 @@ PIO180L -- lower bits of pi/180 for FMA
|
||||
#define CONCAT(x,y) x ## y
|
||||
#define CONCAT_EXPAND(x,y) CONCAT(x,y)
|
||||
|
||||
#ifndef COPYSIGN
|
||||
#define COPYSIGN LITERAL(copysign)
|
||||
#define FMOD LITERAL(fmod)
|
||||
#define FABS LITERAL(fabs)
|
||||
@ -72,6 +73,7 @@ PIO180L -- lower bits of pi/180 for FMA
|
||||
#define SIN LITERAL(sin)
|
||||
#define COS LITERAL(cos)
|
||||
#define TAN LITERAL(tan)
|
||||
#endif
|
||||
|
||||
#ifdef TINY
|
||||
#define TINY_LITERAL LITERAL(TINY)
|
||||
|
@ -1968,6 +1968,8 @@ extern __float128 __atanhieee128 (__float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __atanieee128 (__float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __copysignieee128 (__float128, __float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __coshieee128 (__float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __cosieee128 (__float128)
|
||||
@ -1980,6 +1982,10 @@ extern __float128 __expieee128 (__float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __fabsieee128 (__float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __fmaieee128 (__float128, __float128, __float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __fmodieee128 (__float128, __float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __jnieee128 (int, __float128)
|
||||
__attribute__ ((__nothrow__, __leaf__));
|
||||
extern __float128 __log10ieee128 (__float128)
|
||||
|
Loading…
Reference in New Issue
Block a user