[PATCH 3/4] In _IEEE_LIBM mode, use weak symbols instead of wrapper funcs

[email protected]
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
From: Keith Packard <[email protected]>

When the math library is compiled to just use bare IEEE_LIBM mode, many
public functions are just wrappers around the __ieee754 version.
Eliminate the extra function by creating a weak alias symbol for the
public name directly from the ieee754 name.

Signed-off-by: Keith Packard <[email protected]>
---
 newlib/libm/math/e_acos.c       |  5 +++++
 newlib/libm/math/e_acosh.c      |  5 +++++
 newlib/libm/math/e_asin.c       |  5 +++++
 newlib/libm/math/e_atan2.c      |  5 +++++
 newlib/libm/math/e_atanh.c      |  5 +++++
 newlib/libm/math/e_cosh.c       |  5 +++++
 newlib/libm/math/e_exp.c        |  5 +++++
 newlib/libm/math/e_fmod.c       |  5 +++++
 newlib/libm/math/e_hypot.c      |  5 +++++
 newlib/libm/math/e_j0.c         | 10 ++++++++++
 newlib/libm/math/e_j1.c         | 10 ++++++++++
 newlib/libm/math/e_jn.c         | 10 ++++++++++
 newlib/libm/math/e_log.c        |  5 +++++
 newlib/libm/math/e_log10.c      |  5 +++++
 newlib/libm/math/e_pow.c        |  5 +++++
 newlib/libm/math/e_rem_pio2.c   |  5 +++++
 newlib/libm/math/e_remainder.c  |  5 +++++
 newlib/libm/math/e_scalb.c      | 10 ++++++++++
 newlib/libm/math/e_sinh.c       |  5 +++++
 newlib/libm/math/e_sqrt.c       |  5 +++++
 newlib/libm/math/ef_acos.c      |  5 +++++
 newlib/libm/math/ef_acosh.c     |  5 +++++
 newlib/libm/math/ef_asin.c      |  5 +++++
 newlib/libm/math/ef_atan2.c     |  5 +++++
 newlib/libm/math/ef_atanh.c     |  5 +++++
 newlib/libm/math/ef_cosh.c      |  5 +++++
 newlib/libm/math/ef_exp.c       |  5 +++++
 newlib/libm/math/ef_fmod.c      |  5 +++++
 newlib/libm/math/ef_hypot.c     |  5 +++++
 newlib/libm/math/ef_j0.c        | 10 ++++++++++
 newlib/libm/math/ef_j1.c        | 10 ++++++++++
 newlib/libm/math/ef_jn.c        | 10 ++++++++++
 newlib/libm/math/ef_log.c       |  5 +++++
 newlib/libm/math/ef_log10.c     |  5 +++++
 newlib/libm/math/ef_pow.c       |  5 +++++
 newlib/libm/math/ef_rem_pio2.c  |  5 +++++
 newlib/libm/math/ef_remainder.c |  5 +++++
 newlib/libm/math/ef_scalb.c     | 10 ++++++++++
 newlib/libm/math/ef_sinh.c      |  5 +++++
 newlib/libm/math/ef_sqrt.c      |  5 +++++
 newlib/libm/math/er_gamma.c     |  5 +++++
 newlib/libm/math/er_lgamma.c    |  5 +++++
 newlib/libm/math/erf_gamma.c    |  5 +++++
 newlib/libm/math/erf_lgamma.c   |  5 +++++
 newlib/libm/math/w_acos.c       |  6 ++----
 newlib/libm/math/w_acosh.c      |  7 +++----
 newlib/libm/math/w_asin.c       |  6 ++----
 newlib/libm/math/w_atanh.c      | 10 ++--------
 newlib/libm/math/w_cosh.c       |  8 +++-----
 newlib/libm/math/w_exp.c        |  6 ++----
 newlib/libm/math/w_fmod.c       |  6 ++----
 newlib/libm/math/w_hypot.c      |  6 ++----
 newlib/libm/math/w_j0.c         | 12 ++++--------
 newlib/libm/math/w_j1.c         | 12 ++++--------
 newlib/libm/math/w_jn.c         | 12 ++++--------
 newlib/libm/math/w_log.c        |  6 ++----
 newlib/libm/math/w_log10.c      |  6 ++----
 newlib/libm/math/w_pow.c        |  6 ++----
 newlib/libm/math/w_remainder.c  |  6 ++----
 newlib/libm/math/w_scalb.c      |  7 +++----
 newlib/libm/math/w_sinh.c       |  6 ++----
 newlib/libm/math/w_sqrt.c       |  6 ++----
 newlib/libm/math/wf_acos.c      |  6 ++----
 newlib/libm/math/wf_acosh.c     |  6 ++----
 newlib/libm/math/wf_asin.c      |  6 ++----
 newlib/libm/math/wf_atanh.c     |  6 ++----
 newlib/libm/math/wf_cosh.c      |  6 ++----
 newlib/libm/math/wf_exp.c       |  6 ++----
 newlib/libm/math/wf_fmod.c      |  6 ++----
 newlib/libm/math/wf_gamma.c     |  6 ++----
 newlib/libm/math/wf_hypot.c     |  6 ++----
 newlib/libm/math/wf_j0.c        | 12 ++++--------
 newlib/libm/math/wf_j1.c        | 12 ++++--------
 newlib/libm/math/wf_jn.c        | 12 ++++--------
 newlib/libm/math/wf_lgamma.c    |  6 ++----
 newlib/libm/math/wf_log.c       |  6 ++----
 newlib/libm/math/wf_log10.c     |  7 +++----
 newlib/libm/math/wf_pow.c       |  6 ++----
 newlib/libm/math/wf_remainder.c |  6 ++----
 newlib/libm/math/wf_scalb.c     |  6 ++----
 newlib/libm/math/wf_sinh.c      |  6 ++----
 newlib/libm/math/wf_sqrt.c      |  6 ++----
 newlib/libm/math/wr_gamma.c     |  6 ++----
 newlib/libm/math/wr_lgamma.c    |  6 ++----
 newlib/libm/math/wrf_gamma.c    |  6 ++----
 newlib/libm/math/wrf_lgamma.c   |  6 ++----
 86 files changed, 360 insertions(+), 197 deletions(-)

diff --git a/newlib/libm/math/e_acos.c b/newlib/libm/math/e_acos.c
index 319b1d56f..25509c0f0 100644
--- a/newlib/libm/math/e_acos.c
+++ b/newlib/libm/math/e_acos.c
@@ -59,6 +59,11 @@ qS2 =  2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
 qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
 qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
 
+#ifdef _IEEE_LIBM
+double acos(double x)
+	__attribute__((weak, alias("__ieee754_acos")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_acos(double x)
 #else
diff --git a/newlib/libm/math/e_acosh.c b/newlib/libm/math/e_acosh.c
index 27984eb23..79b1412da 100644
--- a/newlib/libm/math/e_acosh.c
+++ b/newlib/libm/math/e_acosh.c
@@ -38,6 +38,11 @@ static double
 one	= 1.0,
 ln2	= 6.93147180559945286227e-01;  /* 0x3FE62E42, 0xFEFA39EF */
 
+#ifdef _IEEE_LIBM
+double acosh(double x)
+	__attribute__((weak, alias("__ieee754_acosh")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_acosh(double x)
 #else
diff --git a/newlib/libm/math/e_asin.c b/newlib/libm/math/e_asin.c
index 4b6f45e15..2ae0dd442 100644
--- a/newlib/libm/math/e_asin.c
+++ b/newlib/libm/math/e_asin.c
@@ -68,6 +68,11 @@ qS2 =  2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
 qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
 qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
 
+#ifdef _IEEE_LIBM
+double asin(double x)
+	__attribute__((weak, alias("__ieee754_asin")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_asin(double x)
 #else
diff --git a/newlib/libm/math/e_atan2.c b/newlib/libm/math/e_atan2.c
index 8e9650f29..f3a7c8757 100644
--- a/newlib/libm/math/e_atan2.c
+++ b/newlib/libm/math/e_atan2.c
@@ -55,6 +55,11 @@ pi_o_2  = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */
 pi      = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
 pi_lo   = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
 
+#ifdef _IEEE_LIBM
+double atan2(double x, double y)
+	__attribute__((weak, alias("__ieee754_atan2")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_atan2(double y, double x)
 #else
diff --git a/newlib/libm/math/e_atanh.c b/newlib/libm/math/e_atanh.c
index 58ad325f9..e2c539466 100644
--- a/newlib/libm/math/e_atanh.c
+++ b/newlib/libm/math/e_atanh.c
@@ -46,6 +46,11 @@ static const double zero = 0.0;
 static double zero = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+double atanh(double x)
+	__attribute__((weak, alias("__ieee754_atanh")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_atanh(double x)
 #else
diff --git a/newlib/libm/math/e_cosh.c b/newlib/libm/math/e_cosh.c
index a6310bd07..91eec65cf 100644
--- a/newlib/libm/math/e_cosh.c
+++ b/newlib/libm/math/e_cosh.c
@@ -42,6 +42,11 @@ static const double one = 1.0, half=0.5, huge = 1.0e300;
 static double one = 1.0, half=0.5, huge = 1.0e300;
 #endif
 
+#ifdef _IEEE_LIBM
+double cosh(double x)
+	__attribute__((weak, alias("__ieee754_cosh")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_cosh(double x)
 #else
diff --git a/newlib/libm/math/e_exp.c b/newlib/libm/math/e_exp.c
index 81ea64dfb..1c6a88525 100644
--- a/newlib/libm/math/e_exp.c
+++ b/newlib/libm/math/e_exp.c
@@ -102,6 +102,11 @@ P4   = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
 P5   =  4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
 
 
+#ifdef _IEEE_LIBM
+double exp(double x)
+	__attribute__((weak, alias("__ieee754_exp")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_exp(double x)	/* default IEEE double exp */
 #else
diff --git a/newlib/libm/math/e_fmod.c b/newlib/libm/math/e_fmod.c
index f9739eec2..d0b607a92 100644
--- a/newlib/libm/math/e_fmod.c
+++ b/newlib/libm/math/e_fmod.c
@@ -27,6 +27,11 @@ static const double one = 1.0, Zero[] = {0.0, -0.0,};
 static double one = 1.0, Zero[] = {0.0, -0.0,};
 #endif
 
+#ifdef _IEEE_LIBM
+double fmod(double x, double y)
+	__attribute__((weak, alias("__ieee754_fmod")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_fmod(double x, double y)
 #else
diff --git a/newlib/libm/math/e_hypot.c b/newlib/libm/math/e_hypot.c
index 03f7f51e5..44c267d16 100644
--- a/newlib/libm/math/e_hypot.c
+++ b/newlib/libm/math/e_hypot.c
@@ -47,6 +47,11 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifdef _IEEE_LIBM
+double hypot(double x, double y)
+	__attribute__((weak, alias("__ieee754_hypot")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_hypot(double x, double y)
 #else
diff --git a/newlib/libm/math/e_j0.c b/newlib/libm/math/e_j0.c
index 13773cbf9..e98521520 100644
--- a/newlib/libm/math/e_j0.c
+++ b/newlib/libm/math/e_j0.c
@@ -91,6 +91,11 @@ static const double zero = 0.0;
 static double zero = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+double j0(double x)
+	__attribute__((weak, alias("__ieee754_j0")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_j0(double x) 
 #else
@@ -160,6 +165,11 @@ v02  =  7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */
 v03  =  2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
 v04  =  4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */
 
+#ifdef _IEEE_LIBM
+double y0(double x)
+	__attribute__((weak, alias("__ieee754_y0")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_y0(double x) 
 #else
diff --git a/newlib/libm/math/e_j1.c b/newlib/libm/math/e_j1.c
index 098eb569e..895e8a511 100644
--- a/newlib/libm/math/e_j1.c
+++ b/newlib/libm/math/e_j1.c
@@ -92,6 +92,11 @@ static const double zero    = 0.0;
 static double zero    = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+double j1(double x)
+	__attribute__((weak, alias("__ieee754_j1")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_j1(double x) 
 #else
@@ -161,6 +166,11 @@ static double V0[5] = {
   1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
 };
 
+#ifdef _IEEE_LIBM
+double y1(double x)
+	__attribute__((weak, alias("__ieee754_y1")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_y1(double x) 
 #else
diff --git a/newlib/libm/math/e_jn.c b/newlib/libm/math/e_jn.c
index 1eea27be0..b11348f16 100644
--- a/newlib/libm/math/e_jn.c
+++ b/newlib/libm/math/e_jn.c
@@ -56,6 +56,11 @@ static const double zero  =  0.00000000000000000000e+00;
 static double zero  =  0.00000000000000000000e+00;
 #endif
 
+#ifdef _IEEE_LIBM
+double jn(int n, double x)
+	__attribute__((weak, alias("__ieee754_jn")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_jn(int n, double x)
 #else
@@ -216,6 +221,11 @@ static double zero  =  0.00000000000000000000e+00;
 	if(sgn==1) return -b; else return b;
 }
 
+#ifdef _IEEE_LIBM
+double yn(int n, double x)
+	__attribute__((weak, alias("__ieee754_yn")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_yn(int n, double x) 
 #else
diff --git a/newlib/libm/math/e_log.c b/newlib/libm/math/e_log.c
index ac4a95068..a4af67bef 100644
--- a/newlib/libm/math/e_log.c
+++ b/newlib/libm/math/e_log.c
@@ -89,6 +89,11 @@ static const double zero   =  0.0;
 static double zero   =  0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+double log(double x)
+	__attribute__((weak, alias("__ieee754_log")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_log(double x)
 #else
diff --git a/newlib/libm/math/e_log10.c b/newlib/libm/math/e_log10.c
index f7daaa1b2..60128d218 100644
--- a/newlib/libm/math/e_log10.c
+++ b/newlib/libm/math/e_log10.c
@@ -64,6 +64,11 @@ static const double zero   =  0.0;
 static double zero   =  0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+double log10(double x)
+	__attribute__((weak, alias("__ieee754_log10")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_log10(double x)
 #else
diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c
index 6d2a501a1..d1ac5b2d2 100644
--- a/newlib/libm/math/e_pow.c
+++ b/newlib/libm/math/e_pow.c
@@ -99,6 +99,11 @@ ivln2    =  1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */
 ivln2_h  =  1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
 ivln2_l  =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 
+#ifdef _IEEE_LIBM
+double pow(double x, double y)
+	__attribute__((weak, alias("__ieee754_pow")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_pow(double x, double y)
 #else
diff --git a/newlib/libm/math/e_rem_pio2.c b/newlib/libm/math/e_rem_pio2.c
index ddfecba2d..f9fa45309 100644
--- a/newlib/libm/math/e_rem_pio2.c
+++ b/newlib/libm/math/e_rem_pio2.c
@@ -82,6 +82,11 @@ pio2_2t =  2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */
 pio2_3  =  2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
 pio2_3t =  8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
 
+#ifdef _IEEE_LIBM
+__int32_t rem_pio2(double x, double *y)
+	__attribute__((weak, alias("__ieee754_rem_pio2")));
+#endif
+
 #ifdef __STDC__
 	__int32_t __ieee754_rem_pio2(double x, double *y)
 #else
diff --git a/newlib/libm/math/e_remainder.c b/newlib/libm/math/e_remainder.c
index ae7ce649a..fdbc8aff9 100644
--- a/newlib/libm/math/e_remainder.c
+++ b/newlib/libm/math/e_remainder.c
@@ -31,6 +31,11 @@ static double zero = 0.0;
 #endif
 
 
+#ifdef _IEEE_LIBM
+double remainder(double x, double p)
+	__attribute__((weak, alias("__ieee754_remainder")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_remainder(double x, double p)
 #else
diff --git a/newlib/libm/math/e_scalb.c b/newlib/libm/math/e_scalb.c
index 0bb924b43..a5bd9a863 100644
--- a/newlib/libm/math/e_scalb.c
+++ b/newlib/libm/math/e_scalb.c
@@ -21,6 +21,16 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifdef _IEEE_LIBM
+#ifdef _SCALB_INT
+double scalb(double x, int fn)
+	__attribute__((weak, alias("__ieee754_scalb")));
+#else
+double scalb(double x, double fn)
+	__attribute__((weak, alias("__ieee754_scalb")));
+#endif
+#endif
+
 #ifdef _SCALB_INT
 #ifdef __STDC__
 	double __ieee754_scalb(double x, int fn)
diff --git a/newlib/libm/math/e_sinh.c b/newlib/libm/math/e_sinh.c
index cf7ebfb88..e57034262 100644
--- a/newlib/libm/math/e_sinh.c
+++ b/newlib/libm/math/e_sinh.c
@@ -39,6 +39,11 @@ static const double one = 1.0, shuge = 1.0e307;
 static double one = 1.0, shuge = 1.0e307;
 #endif
 
+#ifdef _IEEE_LIBM
+double sinh(double x)
+	__attribute__((weak, alias("__ieee754_sinh")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_sinh(double x)
 #else
diff --git a/newlib/libm/math/e_sqrt.c b/newlib/libm/math/e_sqrt.c
index 78fc52417..3a9ec699a 100644
--- a/newlib/libm/math/e_sqrt.c
+++ b/newlib/libm/math/e_sqrt.c
@@ -91,6 +91,11 @@ static	const double	one	= 1.0, tiny=1.0e-300;
 static	double	one	= 1.0, tiny=1.0e-300;
 #endif
 
+#ifdef _IEEE_LIBM
+double sqrt(double x)
+	__attribute__((weak, alias("__ieee754_sqrt")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_sqrt(double x)
 #else
diff --git a/newlib/libm/math/ef_acos.c b/newlib/libm/math/ef_acos.c
index f73f97de7..655bbf677 100644
--- a/newlib/libm/math/ef_acos.c
+++ b/newlib/libm/math/ef_acos.c
@@ -35,6 +35,11 @@ qS2 =  2.0209457874e+00, /* 0x4001572d */
 qS3 = -6.8828397989e-01, /* 0xbf303361 */
 qS4 =  7.7038154006e-02; /* 0x3d9dc62e */
 
+#ifdef _IEEE_LIBM
+float acosf(float x)
+	__attribute__((weak, alias("__ieee754_acosf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_acosf(float x)
 #else
diff --git a/newlib/libm/math/ef_acosh.c b/newlib/libm/math/ef_acosh.c
index 1119c2c86..66b46f596 100644
--- a/newlib/libm/math/ef_acosh.c
+++ b/newlib/libm/math/ef_acosh.c
@@ -24,6 +24,11 @@ static float
 one	= 1.0,
 ln2	= 6.9314718246e-01;  /* 0x3f317218 */
 
+#ifdef _IEEE_LIBM
+float acoshf(float x)
+	__attribute__((weak, alias("__ieee754_acoshf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_acoshf(float x)
 #else
diff --git a/newlib/libm/math/ef_asin.c b/newlib/libm/math/ef_asin.c
index c49dcbbca..2346bc6bd 100644
--- a/newlib/libm/math/ef_asin.c
+++ b/newlib/libm/math/ef_asin.c
@@ -37,6 +37,11 @@ qS2 =  2.0209457874e+00, /* 0x4001572d */
 qS3 = -6.8828397989e-01, /* 0xbf303361 */
 qS4 =  7.7038154006e-02; /* 0x3d9dc62e */
 
+#ifdef _IEEE_LIBM
+float asinf(float x)
+	__attribute__((weak, alias("__ieee754_asinf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_asinf(float x)
 #else
diff --git a/newlib/libm/math/ef_atan2.c b/newlib/libm/math/ef_atan2.c
index d57480b03..1d8ca633a 100644
--- a/newlib/libm/math/ef_atan2.c
+++ b/newlib/libm/math/ef_atan2.c
@@ -28,6 +28,11 @@ pi_o_2  = 1.5707963705e+00, /* 0x3fc90fdb */
 pi      = 3.1415927410e+00,  /* 0x40490fdb */
 pi_lo   = -8.7422776573e-08; /* 0xb3bbbd2e */
 
+#ifdef _IEEE_LIBM
+float atan2f(float y, float x)
+	__attribute__((weak, alias("__ieee754_atan2f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_atan2f(float y, float x)
 #else
diff --git a/newlib/libm/math/ef_atanh.c b/newlib/libm/math/ef_atanh.c
index 74b3d3d6a..fb0dbd214 100644
--- a/newlib/libm/math/ef_atanh.c
+++ b/newlib/libm/math/ef_atanh.c
@@ -28,6 +28,11 @@ static const float zero = 0.0;
 static float zero = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+float atanhf(float x)
+	__attribute__((weak, alias("__ieee754_atanhf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_atanhf(float x)
 #else
diff --git a/newlib/libm/math/ef_cosh.c b/newlib/libm/math/ef_cosh.c
index bdce61a00..3c3872588 100644
--- a/newlib/libm/math/ef_cosh.c
+++ b/newlib/libm/math/ef_cosh.c
@@ -25,6 +25,11 @@ static const float one = 1.0, half=0.5, huge = 1.0e30;
 static float one = 1.0, half=0.5, huge = 1.0e30;
 #endif
 
+#ifdef _IEEE_LIBM
+float coshf(float x)
+	__attribute__((weak, alias("__ieee754_coshf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_coshf(float x)
 #else
diff --git a/newlib/libm/math/ef_exp.c b/newlib/libm/math/ef_exp.c
index e817370ac..1f20d5ffb 100644
--- a/newlib/libm/math/ef_exp.c
+++ b/newlib/libm/math/ef_exp.c
@@ -40,6 +40,11 @@ P3   =  6.6137559770e-05, /* 0x388ab355 */
 P4   = -1.6533901999e-06, /* 0xb5ddea0e */
 P5   =  4.1381369442e-08; /* 0x3331bb4c */
 
+#ifdef _IEEE_LIBM
+float expf(float x)
+	__attribute__((weak, alias("__ieee754_expf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_expf(float x)	/* default IEEE double exp */
 #else
diff --git a/newlib/libm/math/ef_fmod.c b/newlib/libm/math/ef_fmod.c
index 53c1ba280..9a27c5dfe 100644
--- a/newlib/libm/math/ef_fmod.c
+++ b/newlib/libm/math/ef_fmod.c
@@ -27,6 +27,11 @@ static const float one = 1.0, Zero[] = {0.0, -0.0,};
 static float one = 1.0, Zero[] = {0.0, -0.0,};
 #endif
 
+#ifdef _IEEE_LIBM
+float fmodf(float x, float y)
+	__attribute__((weak, alias("__ieee754_fmodf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_fmodf(float x, float y)
 #else
diff --git a/newlib/libm/math/ef_hypot.c b/newlib/libm/math/ef_hypot.c
index 9368eb41c..9ad0e71fa 100644
--- a/newlib/libm/math/ef_hypot.c
+++ b/newlib/libm/math/ef_hypot.c
@@ -15,6 +15,11 @@
 
 #include "fdlibm.h"
 
+#ifdef _IEEE_LIBM
+float hypotf(float x, float y)
+	__attribute__((weak, alias("__ieee754_hypotf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_hypotf(float x, float y)
 #else
diff --git a/newlib/libm/math/ef_j0.c b/newlib/libm/math/ef_j0.c
index 866cfcf96..201b27830 100644
--- a/newlib/libm/math/ef_j0.c
+++ b/newlib/libm/math/ef_j0.c
@@ -46,6 +46,11 @@ static const float zero = 0.0;
 static float zero = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+float j0f(float x)
+	__attribute__((weak, alias("__ieee754_j0f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_j0f(float x) 
 #else
@@ -115,6 +120,11 @@ v02  =  7.6006865129e-05, /* 0x389f65e0 */
 v03  =  2.5915085189e-07, /* 0x348b216c */
 v04  =  4.4111031494e-10; /* 0x2ff280c2 */
 
+#ifdef _IEEE_LIBM
+float y0f(float x)
+	__attribute__((weak, alias("__ieee754_y0f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_y0f(float x) 
 #else
diff --git a/newlib/libm/math/ef_j1.c b/newlib/libm/math/ef_j1.c
index 01bd24cf1..4d57ff40a 100644
--- a/newlib/libm/math/ef_j1.c
+++ b/newlib/libm/math/ef_j1.c
@@ -47,6 +47,11 @@ static const float zero    = 0.0;
 static float zero    = 0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+float j1f(float x)
+	__attribute__((weak, alias("__ieee754_j1f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_j1f(float x) 
 #else
@@ -116,6 +121,11 @@ static float V0[5] = {
   1.6655924903e-11, /* 0x2d9281cf */
 };
 
+#ifdef _IEEE_LIBM
+float y1f(float x)
+	__attribute__((weak, alias("__ieee754_y1f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_y1f(float x) 
 #else
diff --git a/newlib/libm/math/ef_jn.c b/newlib/libm/math/ef_jn.c
index e872c09c7..4481a49a7 100644
--- a/newlib/libm/math/ef_jn.c
+++ b/newlib/libm/math/ef_jn.c
@@ -29,6 +29,11 @@ static const float zero  =  0.0000000000e+00;
 static float zero  =  0.0000000000e+00;
 #endif
 
+#ifdef _IEEE_LIBM
+float jnf(int n, float x)
+	__attribute__((weak, alias("__ieee754_jnf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_jnf(int n, float x)
 #else
@@ -166,6 +171,11 @@ static float zero  =  0.0000000000e+00;
 	if(sgn==1) return -b; else return b;
 }
 
+#ifdef _IEEE_LIBM
+float ynf(int n, float x)
+	__attribute__((weak, alias("__ieee754_ynf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_ynf(int n, float x) 
 #else
diff --git a/newlib/libm/math/ef_log.c b/newlib/libm/math/ef_log.c
index 8dc902478..160ee7057 100644
--- a/newlib/libm/math/ef_log.c
+++ b/newlib/libm/math/ef_log.c
@@ -38,6 +38,11 @@ static const float zero   =  0.0;
 static float zero   =  0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+float logf(float x)
+	__attribute__((weak, alias("__ieee754_logf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_logf(float x)
 #else
diff --git a/newlib/libm/math/ef_log10.c b/newlib/libm/math/ef_log10.c
index 5ab23c43f..51c57a15a 100644
--- a/newlib/libm/math/ef_log10.c
+++ b/newlib/libm/math/ef_log10.c
@@ -31,6 +31,11 @@ static const float zero   =  0.0;
 static float zero   =  0.0;
 #endif
 
+#ifdef _IEEE_LIBM
+float log10f(float x)
+	__attribute__((weak, alias("__ieee754_log10f")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_log10f(float x)
 #else
diff --git a/newlib/libm/math/ef_pow.c b/newlib/libm/math/ef_pow.c
index 524e3f9b0..8953dc44d 100644
--- a/newlib/libm/math/ef_pow.c
+++ b/newlib/libm/math/ef_pow.c
@@ -57,6 +57,11 @@ ivln2    =  1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */
 ivln2_h  =  1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
 ivln2_l  =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 
+#ifdef _IEEE_LIBM
+float powf(float x, float y)
+	__attribute__((weak, alias("__ieee754_powf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_powf(float x, float y)
 #else
diff --git a/newlib/libm/math/ef_rem_pio2.c b/newlib/libm/math/ef_rem_pio2.c
index f1191d09f..73d0e3248 100644
--- a/newlib/libm/math/ef_rem_pio2.c
+++ b/newlib/libm/math/ef_rem_pio2.c
@@ -95,6 +95,11 @@ pio2_2t =  6.0770999344e-11, /* 0x2e85a308 */
 pio2_3  =  6.0770943833e-11, /* 0x2e85a300 */
 pio2_3t =  6.1232342629e-17; /* 0x248d3132 */
 
+#ifdef _IEEE_LIBM
+__int32_t rem_pio2f(float x, float *y)
+	__attribute__((weak, alias("__ieee754_rem_pio2f")));
+#endif
+
 #ifdef __STDC__
 	__int32_t __ieee754_rem_pio2f(float x, float *y)
 #else
diff --git a/newlib/libm/math/ef_remainder.c b/newlib/libm/math/ef_remainder.c
index 23d29d05a..7fccd95eb 100644
--- a/newlib/libm/math/ef_remainder.c
+++ b/newlib/libm/math/ef_remainder.c
@@ -22,6 +22,11 @@ static float zero = 0.0;
 #endif
 
 
+#ifdef _IEEE_LIBM
+float remainderf(float x, float p)
+	__attribute__((weak, alias("__ieee754_remainderf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_remainderf(float x, float p)
 #else
diff --git a/newlib/libm/math/ef_scalb.c b/newlib/libm/math/ef_scalb.c
index 8d973b1e7..c8cca24f7 100644
--- a/newlib/libm/math/ef_scalb.c
+++ b/newlib/libm/math/ef_scalb.c
@@ -16,6 +16,16 @@
 #include "fdlibm.h"
 #include <limits.h>
 
+#ifdef _IEEE_LIBM
+#ifdef _SCALB_INT
+float scalbf(float x, int fn)
+	__attribute__((weak, alias("__ieee754_scalbf")));
+#else
+float scalbf(float x, float fn)
+	__attribute__((weak, alias("__ieee754_scalbf")));
+#endif
+#endif
+
 #ifdef _SCALB_INT
 #ifdef __STDC__
 	float __ieee754_scalbf(float x, int fn)
diff --git a/newlib/libm/math/ef_sinh.c b/newlib/libm/math/ef_sinh.c
index a61b17294..db4c20485 100644
--- a/newlib/libm/math/ef_sinh.c
+++ b/newlib/libm/math/ef_sinh.c
@@ -21,6 +21,11 @@ static const float one = 1.0, shuge = 1.0e37;
 static float one = 1.0, shuge = 1.0e37;
 #endif
 
+#ifdef _IEEE_LIBM
+float sinhf(float x)
+	__attribute__((weak, alias("__ieee754_sinhf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_sinhf(float x)
 #else
diff --git a/newlib/libm/math/ef_sqrt.c b/newlib/libm/math/ef_sqrt.c
index 80e7f360e..5be7ab4d0 100644
--- a/newlib/libm/math/ef_sqrt.c
+++ b/newlib/libm/math/ef_sqrt.c
@@ -21,6 +21,11 @@ static	const float	one	= 1.0, tiny=1.0e-30;
 static	float	one	= 1.0, tiny=1.0e-30;
 #endif
 
+#ifdef _IEEE_LIBM
+float sqrtf(float x)
+	__attribute__((weak, alias("__ieee754_sqrtf")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_sqrtf(float x)
 #else
diff --git a/newlib/libm/math/er_gamma.c b/newlib/libm/math/er_gamma.c
index 3c0e241e5..245ab822c 100644
--- a/newlib/libm/math/er_gamma.c
+++ b/newlib/libm/math/er_gamma.c
@@ -21,6 +21,11 @@
 
 #include "fdlibm.h"
 
+#ifdef _IEEE_LIBM
+double gamma_r(double x, int *signgamp)
+	__attribute__((weak, alias("__ieee754_gamma_r")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_gamma_r(double x, int *signgamp)
 #else
diff --git a/newlib/libm/math/er_lgamma.c b/newlib/libm/math/er_lgamma.c
index 386a8a73b..df4f5552d 100644
--- a/newlib/libm/math/er_lgamma.c
+++ b/newlib/libm/math/er_lgamma.c
@@ -209,6 +209,11 @@ static double zero=  0.00000000000000000000e+00;
 }
 
 
+#ifdef _IEEE_LIBM
+double lgamma_r(double x, int *signgamp)
+	__attribute__((weak, alias("__ieee754_lgamma_r")));
+#endif
+
 #ifdef __STDC__
 	double __ieee754_lgamma_r(double x, int *signgamp)
 #else
diff --git a/newlib/libm/math/erf_gamma.c b/newlib/libm/math/erf_gamma.c
index 9e529dce0..e7b87efe4 100644
--- a/newlib/libm/math/erf_gamma.c
+++ b/newlib/libm/math/erf_gamma.c
@@ -23,6 +23,11 @@
 
 #include "fdlibm.h"
 
+#ifdef _IEEE_LIBM
+float gammaf_r(float x, int *signgamp)
+	__attribute__((weak, alias("__ieee754_gammaf_r")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_gammaf_r(float x, int *signgamp)
 #else
diff --git a/newlib/libm/math/erf_lgamma.c b/newlib/libm/math/erf_lgamma.c
index 3c6ba02af..4df4418c4 100644
--- a/newlib/libm/math/erf_lgamma.c
+++ b/newlib/libm/math/erf_lgamma.c
@@ -144,6 +144,11 @@ static float zero=  0.0000000000e+00;
 }
 
 
+#ifdef _IEEE_LIBM
+float lgammaf_r(float x, int *signgamp)
+	__attribute__((weak, alias("__ieee754_lgammaf_r")));
+#endif
+
 #ifdef __STDC__
 	float __ieee754_lgammaf_r(float x, int *signgamp)
 #else
diff --git a/newlib/libm/math/w_acos.c b/newlib/libm/math/w_acos.c
index eb3e20111..2cd5247e2 100644
--- a/newlib/libm/math/w_acos.c
+++ b/newlib/libm/math/w_acos.c
@@ -70,6 +70,7 @@ MATHREF
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifndef _DOUBLE_IS_32BITS
 
 #ifdef __STDC__
@@ -79,9 +80,6 @@ MATHREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_acos(x);
-#else
 	double z;
        	struct exception exc;
        	z = __ieee754_acos(x);
@@ -103,7 +101,7 @@ MATHREF
 	    return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/w_acosh.c b/newlib/libm/math/w_acosh.c
index ac15bb1bd..5979526ab 100644
--- a/newlib/libm/math/w_acosh.c
+++ b/newlib/libm/math/w_acosh.c
@@ -76,6 +76,8 @@ MATHREF
 #include "fdlibm.h"
 #include <errno.h>
 
+
+#ifndef _IEEE_LIBM
 #ifndef _DOUBLE_IS_32BITS
 
 #ifdef __STDC__
@@ -85,9 +87,6 @@ MATHREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_acosh(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_acosh(x);
@@ -109,7 +108,7 @@ MATHREF
 	    return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/w_asin.c b/newlib/libm/math/w_asin.c
index 9964d75b0..a39ca9425 100644
--- a/newlib/libm/math/w_asin.c
+++ b/newlib/libm/math/w_asin.c
@@ -76,6 +76,7 @@ MATHREF
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double asin(double x)		/* wrapper asin */
 #else
@@ -83,9 +84,6 @@ MATHREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_asin(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_asin(x);
@@ -107,7 +105,7 @@ MATHREF
 	    return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
diff --git a/newlib/libm/math/w_atanh.c b/newlib/libm/math/w_atanh.c
index a87e23cc4..1be3f5da2 100644
--- a/newlib/libm/math/w_atanh.c
+++ b/newlib/libm/math/w_atanh.c
@@ -74,6 +74,7 @@ QUICKREF
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifndef _DOUBLE_IS_32BITS
 
 #ifdef __STDC__
@@ -83,9 +84,6 @@ QUICKREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_atanh(x);
-#else
 	double z,y;
 	struct exception exc;
 	z = __ieee754_atanh(x);
@@ -122,11 +120,7 @@ QUICKREF
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
-
-
-
-
+#endif
diff --git a/newlib/libm/math/w_cosh.c b/newlib/libm/math/w_cosh.c
index e5b08df00..9cfa0111f 100644
--- a/newlib/libm/math/w_cosh.c
+++ b/newlib/libm/math/w_cosh.c
@@ -60,8 +60,9 @@ QUICKREF
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifndef _DOUBLE_IS_32BITS
- 
+
 #ifdef __STDC__
 	double cosh(double x)		/* wrapper cosh */
 #else
@@ -69,9 +70,6 @@ QUICKREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_cosh(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_cosh(x);
@@ -102,7 +100,7 @@ QUICKREF
 	    return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
diff --git a/newlib/libm/math/w_exp.c b/newlib/libm/math/w_exp.c
index 0c4467712..1b6e9ece8 100644
--- a/newlib/libm/math/w_exp.c
+++ b/newlib/libm/math/w_exp.c
@@ -58,6 +58,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 static const double
 #else
@@ -73,9 +74,6 @@ u_threshold= -7.45133219101941108420e+02;  /* 0xc0874910, 0xD52D3051 */
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_exp(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_exp(x);
@@ -123,8 +121,8 @@ u_threshold= -7.45133219101941108420e+02;  /* 0xc0874910, 0xD52D3051 */
 	    } 
 	} 
 	return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif
 #endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_fmod.c b/newlib/libm/math/w_fmod.c
index df11dc34c..db8a52dfc 100644
--- a/newlib/libm/math/w_fmod.c
+++ b/newlib/libm/math/w_fmod.c
@@ -58,6 +58,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double fmod(double x, double y)	/* wrapper fmod */
 #else
@@ -65,9 +66,6 @@ PORTABILITY
 	double x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_fmod(x,y);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_fmod(x,y);
@@ -93,7 +91,7 @@ PORTABILITY
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_hypot.c b/newlib/libm/math/w_hypot.c
index 533702277..bb4dca845 100644
--- a/newlib/libm/math/w_hypot.c
+++ b/newlib/libm/math/w_hypot.c
@@ -55,6 +55,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double hypot(double x, double y)/* wrapper hypot */
 #else
@@ -62,9 +63,6 @@ PORTABILITY
 	double x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_hypot(x,y);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_hypot(x,y);
@@ -96,7 +94,7 @@ PORTABILITY
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_j0.c b/newlib/libm/math/w_j0.c
index ab05dbdeb..d706a7714 100644
--- a/newlib/libm/math/w_j0.c
+++ b/newlib/libm/math/w_j0.c
@@ -94,6 +94,7 @@ None of the Bessel functions are in ANSI C.
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double j0(double x)		/* wrapper j0 */
 #else
@@ -101,9 +102,6 @@ None of the Bessel functions are in ANSI C.
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_j0(x);
-#else
 	struct exception exc;
 	double z = __ieee754_j0(x);
 	if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
@@ -124,9 +122,10 @@ None of the Bessel functions are in ANSI C.
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double y0(double x)		/* wrapper y0 */
 #else
@@ -134,9 +133,6 @@ None of the Bessel functions are in ANSI C.
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_y0(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_y0(x);
@@ -183,8 +179,8 @@ None of the Bessel functions are in ANSI C.
 	    return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
 
diff --git a/newlib/libm/math/w_j1.c b/newlib/libm/math/w_j1.c
index ba7df1566..902369ed6 100644
--- a/newlib/libm/math/w_j1.c
+++ b/newlib/libm/math/w_j1.c
@@ -20,6 +20,7 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double j1(double x)		/* wrapper j1 */
 #else
@@ -27,9 +28,6 @@
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_j1(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_j1(x);
@@ -51,9 +49,10 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double y1(double x)		/* wrapper y1 */
 #else
@@ -61,9 +60,6 @@
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_y1(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_y1(x);
@@ -110,8 +106,8 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
 
diff --git a/newlib/libm/math/w_jn.c b/newlib/libm/math/w_jn.c
index 6cadc9a01..e4cb4d157 100644
--- a/newlib/libm/math/w_jn.c
+++ b/newlib/libm/math/w_jn.c
@@ -42,6 +42,7 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double jn(int n, double x)	/* wrapper jn */
 #else
@@ -49,9 +50,6 @@
 	double x; int n;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_jn(n,x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_jn(n,x);
@@ -74,9 +72,10 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double yn(int n, double x)	/* wrapper yn */
 #else
@@ -84,9 +83,6 @@
 	double x; int n;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_yn(n,x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_yn(n,x);
@@ -135,7 +131,7 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_log.c b/newlib/libm/math/w_log.c
index 5f66d26ad..9c1e9ba2d 100644
--- a/newlib/libm/math/w_log.c
+++ b/newlib/libm/math/w_log.c
@@ -54,6 +54,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double log(double x)		/* wrapper log */
 #else
@@ -61,9 +62,6 @@ PORTABILITY
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_log(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_log(x);
@@ -103,8 +101,8 @@ PORTABILITY
 	if (exc.err != 0)
            errno = exc.err;
         return exc.retval; 
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
 #endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_log10.c b/newlib/libm/math/w_log10.c
index 3b436d539..3c4ce18aa 100644
--- a/newlib/libm/math/w_log10.c
+++ b/newlib/libm/math/w_log10.c
@@ -50,6 +50,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double log10(double x)		/* wrapper log10 */
 #else
@@ -57,9 +58,6 @@ PORTABILITY
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_log10(x);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_log10(x);
@@ -102,7 +100,7 @@ PORTABILITY
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_pow.c b/newlib/libm/math/w_pow.c
index 9d1e396a5..46bb70f07 100644
--- a/newlib/libm/math/w_pow.c
+++ b/newlib/libm/math/w_pow.c
@@ -57,6 +57,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double pow(double x, double y)	/* wrapper pow */
 #else
@@ -64,9 +65,6 @@ PORTABILITY
 	double x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return  __ieee754_pow(x,y);
-#else
 	double z;
 #ifndef HUGE_VAL 
 #define HUGE_VAL inf
@@ -204,8 +202,8 @@ PORTABILITY
             return exc.retval; 
         } 
 	return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
 #endif /* __OBSOLETE_MATH */
diff --git a/newlib/libm/math/w_remainder.c b/newlib/libm/math/w_remainder.c
index 5b13390f9..325a1f3a9 100644
--- a/newlib/libm/math/w_remainder.c
+++ b/newlib/libm/math/w_remainder.c
@@ -46,6 +46,7 @@ PORTABILITY
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double remainder(double x, double y)	/* wrapper remainder */
 #else
@@ -53,9 +54,6 @@ PORTABILITY
 	double x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_remainder(x,y);
-#else
 	double z;
 	struct exception exc;
 	z = __ieee754_remainder(x,y);
@@ -78,8 +76,8 @@ PORTABILITY
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
 
diff --git a/newlib/libm/math/w_scalb.c b/newlib/libm/math/w_scalb.c
index c32496892..b1aa1c9b0 100644
--- a/newlib/libm/math/w_scalb.c
+++ b/newlib/libm/math/w_scalb.c
@@ -22,6 +22,8 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
+
 #ifdef __STDC__
 #ifdef _SCALB_INT
 	double scalb(double x, int fn)		/* wrapper scalb */
@@ -37,9 +39,6 @@
 #endif
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_scalb(x,fn);
-#else
 	double z;
 #ifndef HUGE_VAL 
 #define HUGE_VAL inf
@@ -88,7 +87,7 @@
 	if(!finite(fn)) errno = ERANGE;
 #endif
 	return z;
-#endif 
 }
+#endif 
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_sinh.c b/newlib/libm/math/w_sinh.c
index 340a7112d..77136c83d 100644
--- a/newlib/libm/math/w_sinh.c
+++ b/newlib/libm/math/w_sinh.c
@@ -66,6 +66,7 @@ QUICKREF
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double sinh(double x)		/* wrapper sinh */
 #else
@@ -73,9 +74,6 @@ QUICKREF
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_sinh(x);
-#else
 	double z; 
 	struct exception exc;
 	z = __ieee754_sinh(x);
@@ -106,7 +104,7 @@ QUICKREF
             return exc.retval;
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/w_sqrt.c b/newlib/libm/math/w_sqrt.c
index 61d42fcec..793426294 100644
--- a/newlib/libm/math/w_sqrt.c
+++ b/newlib/libm/math/w_sqrt.c
@@ -47,6 +47,7 @@ PORTABILITY
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifndef _DOUBLE_IS_32BITS
 
 #ifdef __STDC__
@@ -56,9 +57,6 @@ PORTABILITY
 	double x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_sqrt(x);
-#else
 	struct exception exc;
 	double z;
 	z = __ieee754_sqrt(x);
@@ -82,7 +80,7 @@ PORTABILITY
 	  return exc.retval; 
 	} else
 	    return z;
-#endif
 }
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
+#endif /* defined(_IEEE_LIBM) */
diff --git a/newlib/libm/math/wf_acos.c b/newlib/libm/math/wf_acos.c
index 8154c795e..c945600a9 100644
--- a/newlib/libm/math/wf_acos.c
+++ b/newlib/libm/math/wf_acos.c
@@ -20,11 +20,9 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 	float acosf(float x)		/* wrapper acosf */
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_acosf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_acosf(x);
@@ -46,8 +44,8 @@
 	    return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_acosh.c b/newlib/libm/math/wf_acosh.c
index fc8ec3a0a..9d0165e66 100644
--- a/newlib/libm/math/wf_acosh.c
+++ b/newlib/libm/math/wf_acosh.c
@@ -21,6 +21,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float acoshf(float x)		/* wrapper acoshf */
 #else
@@ -28,9 +29,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_acoshf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_acoshf(x);
@@ -52,8 +50,8 @@
 	    return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_asin.c b/newlib/libm/math/wf_asin.c
index 385de5499..ff5815211 100644
--- a/newlib/libm/math/wf_asin.c
+++ b/newlib/libm/math/wf_asin.c
@@ -22,6 +22,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float asinf(float x)		/* wrapper asinf */
 #else
@@ -29,9 +30,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_asinf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_asinf(x);
@@ -53,8 +51,8 @@
 	    return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_atanh.c b/newlib/libm/math/wf_atanh.c
index 565630411..d69c344ab 100644
--- a/newlib/libm/math/wf_atanh.c
+++ b/newlib/libm/math/wf_atanh.c
@@ -19,6 +19,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float atanhf(float x)		/* wrapper atanhf */
 #else
@@ -26,9 +27,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_atanhf(x);
-#else
 	float z,y;
 	struct exception exc;
 	z = __ieee754_atanhf(x);
@@ -65,8 +63,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_cosh.c b/newlib/libm/math/wf_cosh.c
index 02eb12472..68cbc0754 100644
--- a/newlib/libm/math/wf_cosh.c
+++ b/newlib/libm/math/wf_cosh.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float coshf(float x)		/* wrapper coshf */
 #else
@@ -27,9 +28,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_coshf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_coshf(x);
@@ -60,8 +58,8 @@
 	    return (float)exc.retval;
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_exp.c b/newlib/libm/math/wf_exp.c
index f16af1d1b..277cd025b 100644
--- a/newlib/libm/math/wf_exp.c
+++ b/newlib/libm/math/wf_exp.c
@@ -21,6 +21,7 @@
 #if __OBSOLETE_MATH
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 static const float
 #else
@@ -36,9 +37,6 @@ u_threshold= -1.0397208405e+02;  /* 0xc2cff1b5 */
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_expf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_expf(x);
@@ -86,8 +84,8 @@ u_threshold= -1.0397208405e+02;  /* 0xc2cff1b5 */
 	    } 
 	} 
 	return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_fmod.c b/newlib/libm/math/wf_fmod.c
index 030ca3e7a..af6683baf 100644
--- a/newlib/libm/math/wf_fmod.c
+++ b/newlib/libm/math/wf_fmod.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float fmodf(float x, float y)	/* wrapper fmodf */
 #else
@@ -27,9 +28,6 @@
 	float x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_fmodf(x,y);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_fmodf(x,y);
@@ -55,8 +53,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_gamma.c b/newlib/libm/math/wf_gamma.c
index 1204f3999..a1b5d171f 100644
--- a/newlib/libm/math/wf_gamma.c
+++ b/newlib/libm/math/wf_gamma.c
@@ -18,6 +18,7 @@
 #include <reent.h>
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float gammaf(float x)
 #else
@@ -25,9 +26,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_gammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
-#else
         float y;
 	struct exception exc;
         y = __ieee754_gammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
@@ -75,8 +73,8 @@
 	    return (float)exc.retval; 
         } else
             return y;
+}
 #endif
-}             
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_hypot.c b/newlib/libm/math/wf_hypot.c
index c04ace110..15310a678 100644
--- a/newlib/libm/math/wf_hypot.c
+++ b/newlib/libm/math/wf_hypot.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float hypotf(float x, float y)	/* wrapper hypotf */
 #else
@@ -27,9 +28,6 @@
 	float x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_hypotf(x,y);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_hypotf(x,y);
@@ -61,8 +59,8 @@
             return (float)exc.retval;
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_j0.c b/newlib/libm/math/wf_j0.c
index 1f7f5ede5..8ed93d926 100644
--- a/newlib/libm/math/wf_j0.c
+++ b/newlib/libm/math/wf_j0.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float j0f(float x)		/* wrapper j0f */
 #else
@@ -27,9 +28,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_j0f(x);
-#else
 	struct exception exc;
 	float z = __ieee754_j0f(x);
 	if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
@@ -50,9 +48,10 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float y0f(float x)		/* wrapper y0f */
 #else
@@ -60,9 +59,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_y0f(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_y0f(x);
@@ -109,8 +105,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_j1.c b/newlib/libm/math/wf_j1.c
index b91962881..86aadf0e5 100644
--- a/newlib/libm/math/wf_j1.c
+++ b/newlib/libm/math/wf_j1.c
@@ -21,6 +21,7 @@
 #include <errno.h>
 
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float j1f(float x)		/* wrapper j1f */
 #else
@@ -28,9 +29,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_j1f(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_j1f(x);
@@ -52,9 +50,10 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float y1f(float x)		/* wrapper y1f */
 #else
@@ -62,9 +61,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_y1f(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_y1f(x);
@@ -111,8 +107,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_jn.c b/newlib/libm/math/wf_jn.c
index 837b6b703..0bd49a79b 100644
--- a/newlib/libm/math/wf_jn.c
+++ b/newlib/libm/math/wf_jn.c
@@ -17,6 +17,7 @@
 #include <errno.h>
 
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float jnf(int n, float x)	/* wrapper jnf */
 #else
@@ -24,9 +25,6 @@
 	float x; int n;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_jnf(n,x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_jnf(n,x);
@@ -49,9 +47,10 @@
             return exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float ynf(int n, float x)	/* wrapper ynf */
 #else
@@ -59,9 +58,6 @@
 	float x; int n;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_ynf(n,x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_ynf(n,x);
@@ -110,8 +106,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_lgamma.c b/newlib/libm/math/wf_lgamma.c
index f1bf0c019..01aaacad9 100644
--- a/newlib/libm/math/wf_lgamma.c
+++ b/newlib/libm/math/wf_lgamma.c
@@ -18,6 +18,7 @@
 #include <reent.h>
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float lgammaf(float x)
 #else
@@ -25,9 +26,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_lgammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
-#else
         float y;
 	struct exception exc;
         y = __ieee754_lgammaf_r(x,&(_REENT_SIGNGAM(_REENT)));
@@ -69,8 +67,8 @@
             return (float)exc.retval; 
         } else
             return y;
-#endif
 }             
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_log.c b/newlib/libm/math/wf_log.c
index 07be8d63c..3ed01653a 100644
--- a/newlib/libm/math/wf_log.c
+++ b/newlib/libm/math/wf_log.c
@@ -21,6 +21,7 @@
 #if __OBSOLETE_MATH
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float logf(float x)		/* wrapper logf */
 #else
@@ -28,9 +29,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_logf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_logf(x);
@@ -69,8 +67,8 @@
 	if (exc.err != 0)
            errno = exc.err;
         return (float)exc.retval; 
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_log10.c b/newlib/libm/math/wf_log10.c
index 11c595637..a201c7336 100644
--- a/newlib/libm/math/wf_log10.c
+++ b/newlib/libm/math/wf_log10.c
@@ -20,6 +20,8 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
+	return __ieee754_log10f(x);
 #ifdef __STDC__
 	float log10f(float x)		/* wrapper log10f */
 #else
@@ -27,9 +29,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_log10f(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_log10f(x);
@@ -71,8 +70,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_pow.c b/newlib/libm/math/wf_pow.c
index f753b5226..7ab2b7cca 100644
--- a/newlib/libm/math/wf_pow.c
+++ b/newlib/libm/math/wf_pow.c
@@ -21,6 +21,7 @@
 #if __OBSOLETE_MATH
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float powf(float x, float y)	/* wrapper powf */
 #else
@@ -28,9 +29,6 @@
 	float x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return  __ieee754_powf(x,y);
-#else
 	float z;
 	struct exception exc;
 	z=__ieee754_powf(x,y);
@@ -164,8 +162,8 @@
             return (float)exc.retval; 
         }
 	return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_remainder.c b/newlib/libm/math/wf_remainder.c
index f38c23785..b976e3616 100644
--- a/newlib/libm/math/wf_remainder.c
+++ b/newlib/libm/math/wf_remainder.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float remainderf(float x, float y)	/* wrapper remainder */
 #else
@@ -27,9 +28,6 @@
 	float x,y;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_remainderf(x,y);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_remainderf(x,y);
@@ -52,8 +50,8 @@
             return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_scalb.c b/newlib/libm/math/wf_scalb.c
index d2c3cd2aa..58df3dfc6 100644
--- a/newlib/libm/math/wf_scalb.c
+++ b/newlib/libm/math/wf_scalb.c
@@ -22,6 +22,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 #ifdef _SCALB_INT
 	float scalbf(float x, int fn)		/* wrapper scalbf */
@@ -37,9 +38,6 @@
 #endif
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_scalbf(x,fn);
-#else
 	float z;
 #ifndef HUGE_VAL 
 #define HUGE_VAL inf
@@ -88,8 +86,8 @@
 	if(!finitef(fn)) errno = ERANGE;
 #endif
 	return z;
-#endif 
 }
+#endif 
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_sinh.c b/newlib/libm/math/wf_sinh.c
index 80c7a8e6e..9657ad8fc 100644
--- a/newlib/libm/math/wf_sinh.c
+++ b/newlib/libm/math/wf_sinh.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float sinhf(float x)		/* wrapper sinhf */
 #else
@@ -27,9 +28,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_sinhf(x);
-#else
 	float z; 
 	struct exception exc;
 	z = __ieee754_sinhf(x);
@@ -60,8 +58,8 @@
             return (float)exc.retval;
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wf_sqrt.c b/newlib/libm/math/wf_sqrt.c
index 4536ba0ac..784fa0df7 100644
--- a/newlib/libm/math/wf_sqrt.c
+++ b/newlib/libm/math/wf_sqrt.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float sqrtf(float x)		/* wrapper sqrtf */
 #else
@@ -27,9 +28,6 @@
 	float x;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_sqrtf(x);
-#else
 	float z;
 	struct exception exc;
 	z = __ieee754_sqrtf(x);
@@ -54,8 +52,8 @@
 	    return (float)exc.retval; 
 	} else
 	    return z;
-#endif
 }
+#endif
 
 #ifdef _DOUBLE_IS_32BITS
 
diff --git a/newlib/libm/math/wr_gamma.c b/newlib/libm/math/wr_gamma.c
index 0092ed02c..17f02be82 100644
--- a/newlib/libm/math/wr_gamma.c
+++ b/newlib/libm/math/wr_gamma.c
@@ -20,6 +20,7 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double gamma_r(double x, int *signgamp) /* wrapper lgamma_r */
 #else
@@ -27,9 +28,6 @@
 	double x; int *signgamp;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_gamma_r(x,signgamp);
-#else
         double y;
 	struct exception exc;
         y = __ieee754_gamma_r(x,signgamp);
@@ -70,7 +68,7 @@
 	    return exc.retval; 
         } else
             return y;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/wr_lgamma.c b/newlib/libm/math/wr_lgamma.c
index c59c1cce9..ef38d9525 100644
--- a/newlib/libm/math/wr_lgamma.c
+++ b/newlib/libm/math/wr_lgamma.c
@@ -20,6 +20,7 @@
 
 #ifndef _DOUBLE_IS_32BITS
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	double lgamma_r(double x, int *signgamp) /* wrapper lgamma_r */
 #else
@@ -27,9 +28,6 @@
 	double x; int *signgamp;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_lgamma_r(x,signgamp);
-#else
         double y;
 	struct exception exc;
         y = __ieee754_lgamma_r(x,signgamp);
@@ -71,7 +69,7 @@
             return exc.retval; 
         } else
             return y;
-#endif
 }
+#endif
 
 #endif /* defined(_DOUBLE_IS_32BITS) */
diff --git a/newlib/libm/math/wrf_gamma.c b/newlib/libm/math/wrf_gamma.c
index ae285f564..4cb3cc1a1 100644
--- a/newlib/libm/math/wrf_gamma.c
+++ b/newlib/libm/math/wrf_gamma.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float gammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */
 #else
@@ -27,9 +28,6 @@
 	float x; int *signgamp;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_gammaf_r(x,signgamp);
-#else
         float y;
 	struct exception exc;
         y = __ieee754_gammaf_r(x,signgamp);
@@ -70,5 +68,5 @@
 	    return (float)exc.retval; 
         } else
             return y;
-#endif
 }             
+#endif
diff --git a/newlib/libm/math/wrf_lgamma.c b/newlib/libm/math/wrf_lgamma.c
index 73985e271..60e4b9952 100644
--- a/newlib/libm/math/wrf_lgamma.c
+++ b/newlib/libm/math/wrf_lgamma.c
@@ -20,6 +20,7 @@
 #include "fdlibm.h"
 #include <errno.h>
 
+#ifndef _IEEE_LIBM
 #ifdef __STDC__
 	float lgammaf_r(float x, int *signgamp) /* wrapper lgammaf_r */
 #else
@@ -27,9 +28,6 @@
 	float x; int *signgamp;
 #endif
 {
-#ifdef _IEEE_LIBM
-	return __ieee754_lgammaf_r(x,signgamp);
-#else
         float y;
 	struct exception exc;
         y = __ieee754_lgammaf_r(x,signgamp);
@@ -71,5 +69,5 @@
             return (float)exc.retval; 
         } else
             return y;
-#endif
 }             
+#endif
-- 
2.18.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.