From 5ce8f125063cfd8660710a80243cb705e66f0626 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 29 Oct 2015 22:29:21 +0000 Subject: Make drem an alias of remainder (bug 16171). The libm drem functions just call the corresponding __remainder functions. This patch removes the unnecessary wrappers by making them into weak aliases at the ELF level. Tested for x86_64, x86, mips64 and powerpc. [BZ #16171] * math/w_remainder.c (drem): Define as weak alias of __remainder. [NO_LONG_DOUBLE] (dreml): Define as weak alias of __remainder. * math/w_remainderf.c (dremf): Define as weak alias of __remainderf. * math/w_remainderl.c (dreml): Define as weak alias of __remainderl. * sysdeps/ia64/fpu/e_remainder.S (drem): Define as weak alias of __remainder. * sysdeps/ia64/fpu/e_remainderf.S (dremf): Define as weak alias of __remainderf. * sysdeps/ia64/fpu/e_remainderl.S (dreml): Define as weak alias of __remainderl. * sysdeps/ieee754/ldbl-opt/nldbl-remainder.c (dreml): Define as weak alias of remainderl. * sysdeps/ieee754/ldbl-opt/w_remainder.c [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__drem): Define as strong alias of __remainder. [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (dreml): Use compat_symbol. * sysdeps/ieee754/ldbl-opt/w_remainderl.c (__dreml): Define as strong alias of __remainderl. (dreml): Use long_double_symbol. * math/Makefile (libm-calls): Remove w_drem. * sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove drem. (CFLAGS-nldbl-drem.c): Remove variable. (CFLAGS-nldbl-remainder.c): Add -fno-builtin-dreml. * math/w_drem.c: Remove file. * math/w_dremf.c: Likewise. * math/w_dreml.c: Likewise. * sysdeps/ieee754/ldbl-opt/nldbl-drem.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_drem.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_dreml.c: Likewise. --- sysdeps/ieee754/ldbl-opt/Makefile | 5 ++--- sysdeps/ieee754/ldbl-opt/nldbl-drem.c | 8 -------- sysdeps/ieee754/ldbl-opt/nldbl-remainder.c | 2 ++ sysdeps/ieee754/ldbl-opt/w_drem.c | 5 ----- sysdeps/ieee754/ldbl-opt/w_dreml.c | 5 ----- sysdeps/ieee754/ldbl-opt/w_remainder.c | 2 ++ sysdeps/ieee754/ldbl-opt/w_remainderl.c | 2 ++ 7 files changed, 8 insertions(+), 21 deletions(-) delete mode 100644 sysdeps/ieee754/ldbl-opt/nldbl-drem.c delete mode 100644 sysdeps/ieee754/ldbl-opt/w_drem.c delete mode 100644 sysdeps/ieee754/ldbl-opt/w_dreml.c (limited to 'sysdeps/ieee754') diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile index 222122d..53091e4 100644 --- a/sysdeps/ieee754/ldbl-opt/Makefile +++ b/sysdeps/ieee754/ldbl-opt/Makefile @@ -31,7 +31,7 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \ tanh acosh asinh atanh exp log log10 exp10 pow10 expm1 \ log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \ lgamma tgamma gamma rint nearbyint round trunc \ - copysign fdim fmax fmin nextafter pow hypot fmod drem \ + copysign fdim fmax fmin nextafter pow hypot fmod \ remainder ldexp scalbn frexp modf scalbln fma nan sincos \ jn yn ilogb remquo lrint lround llrint llround nexttowardf \ nexttoward conj cacos cacosh casin catan catanh ccos ccosh \ @@ -81,7 +81,6 @@ CFLAGS-nldbl-csinh.c = -fno-builtin-csinhl CFLAGS-nldbl-csqrt.c = -fno-builtin-csqrtl CFLAGS-nldbl-ctan.c = -fno-builtin-ctanl CFLAGS-nldbl-ctanh.c = -fno-builtin-ctanhl -CFLAGS-nldbl-drem.c = -fno-builtin-dreml CFLAGS-nldbl-erf.c = -fno-builtin-erfl CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl CFLAGS-nldbl-exp.c = -fno-builtin-expl @@ -125,7 +124,7 @@ CFLAGS-nldbl-nexttoward.c = -fno-builtin-nexttoward -fno-builtin-nexttowardl CFLAGS-nldbl-nexttowardf.c = -fno-builtin-nexttowardf CFLAGS-nldbl-pow.c = -fno-builtin-powl CFLAGS-nldbl-pow10.c = -fno-builtin-pow10l -CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl +CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml CFLAGS-nldbl-remquo.c = -fno-builtin-remquol CFLAGS-nldbl-rint.c = -fno-builtin-rintl CFLAGS-nldbl-round.c = -fno-builtin-roundl diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-drem.c b/sysdeps/ieee754/ldbl-opt/nldbl-drem.c deleted file mode 100644 index 1e08ce1..0000000 --- a/sysdeps/ieee754/ldbl-opt/nldbl-drem.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "nldbl-compat.h" - -double -attribute_hidden -dreml (double x, double y) -{ - return drem (x, y); -} diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c b/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c index a8d5baf..581dc78 100644 --- a/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c +++ b/sysdeps/ieee754/ldbl-opt/nldbl-remainder.c @@ -6,3 +6,5 @@ remainderl (double x, double y) { return remainder (x, y); } +extern __typeof (remainderl) dreml attribute_hidden; +weak_alias (remainderl, dreml) diff --git a/sysdeps/ieee754/ldbl-opt/w_drem.c b/sysdeps/ieee754/ldbl-opt/w_drem.c deleted file mode 100644 index 788a5d2..0000000 --- a/sysdeps/ieee754/ldbl-opt/w_drem.c +++ /dev/null @@ -1,5 +0,0 @@ -#include -#include -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __drem, dreml, GLIBC_2_0); -#endif diff --git a/sysdeps/ieee754/ldbl-opt/w_dreml.c b/sysdeps/ieee754/ldbl-opt/w_dreml.c deleted file mode 100644 index d14d7e2..0000000 --- a/sysdeps/ieee754/ldbl-opt/w_dreml.c +++ /dev/null @@ -1,5 +0,0 @@ -#include -#undef weak_alias -#define weak_alias(n,a) -#include -long_double_symbol (libm, __dreml, dreml); diff --git a/sysdeps/ieee754/ldbl-opt/w_remainder.c b/sysdeps/ieee754/ldbl-opt/w_remainder.c index 94d9893..dfa7b7f 100644 --- a/sysdeps/ieee754/ldbl-opt/w_remainder.c +++ b/sysdeps/ieee754/ldbl-opt/w_remainder.c @@ -2,4 +2,6 @@ #include #if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) compat_symbol (libm, __remainder, remainderl, GLIBC_2_0); +strong_alias (__remainder, __drem) +compat_symbol (libm, __drem, dreml, GLIBC_2_0); #endif diff --git a/sysdeps/ieee754/ldbl-opt/w_remainderl.c b/sysdeps/ieee754/ldbl-opt/w_remainderl.c index e450a25..7a344b7 100644 --- a/sysdeps/ieee754/ldbl-opt/w_remainderl.c +++ b/sysdeps/ieee754/ldbl-opt/w_remainderl.c @@ -3,3 +3,5 @@ #define weak_alias(n,a) #include long_double_symbol (libm, __remainderl, remainderl); +strong_alias (__remainderl, __dreml) +long_double_symbol (libm, __dreml, dreml); -- cgit v1.1