From: Ulrich Drepper Date: Wed, 21 Dec 2005 19:12:22 +0000 (+0000) Subject: * sysdeps/ieee754/dbl-64/halfulp.c: Mark tab54 as static and const. X-Git-Tag: cvs/fedora-glibc-20051227T1426~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=403a6325787939b65642bb7eb133088a8a23d4a6;p=platform%2Fupstream%2Fglibc.git * sysdeps/ieee754/dbl-64/halfulp.c: Mark tab54 as static and const. * sysdeps/i386/fpu/e_expl.c: Mark c0 and c1 as const. * sysdeps/ieee754/flt-32/s_expm1f.c: Make sure huge and tiny end up in .rodata. * sysdeps/ieee754/flt-32/e_exp2f.c: Make sure TWO127 and TWOM100 end up in .rodata. * sysdeps/ieee754/flt-32/e_expf.c: Likewise. * sysdeps/ieee754/dbl-64/e_exp2.c: Make sure TWO1023 and TWOM1000 end up in .rodata. --- diff --git a/ChangeLog b/ChangeLog index 5698fe1..ef25558 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-12-21 Ulrich Drepper + + * sysdeps/ieee754/dbl-64/halfulp.c: Mark tab54 as static and const. + * sysdeps/i386/fpu/e_expl.c: Mark c0 and c1 as const. + * sysdeps/ieee754/flt-32/s_expm1f.c: Make sure huge and tiny end + up in .rodata. + * sysdeps/ieee754/flt-32/e_exp2f.c: Make sure TWO127 and TWOM100 + end up in .rodata. + * sysdeps/ieee754/flt-32/e_expf.c: Likewise. + * sysdeps/ieee754/dbl-64/e_exp2.c: Make sure TWO1023 and TWOM1000 + end up in .rodata. + 2005-12-21 Thorsten Kukuk * elf/readlib.c: Fix include of readelflib.c. diff --git a/sysdeps/i386/fpu/e_expl.c b/sysdeps/i386/fpu/e_expl.c index a090d0d..2240cea 100644 --- a/sysdeps/i386/fpu/e_expl.c +++ b/sysdeps/i386/fpu/e_expl.c @@ -24,8 +24,8 @@ #include -static long double c0 = 1.44268798828125L; -static long double c1 = 7.05260771340735992468e-6L; +static const long double c0 = 1.44268798828125L; +static const long double c1 = 7.05260771340735992468e-6L; long double __ieee754_expl (long double x) diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c index 397acd1..b7ed739 100644 --- a/sysdeps/ieee754/dbl-64/e_exp2.c +++ b/sysdeps/ieee754/dbl-64/e_exp2.c @@ -1,5 +1,5 @@ /* Double-precision floating point 2^x. - Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2001, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating @@ -37,8 +37,15 @@ #include "t_exp2.h" -static const volatile double TWO1023 = 8.988465674311579539e+307; -static const volatile double TWOM1000 = 9.3326361850321887899e-302; +/* XXX I know the assembler generates a warning about incorrect section + attributes. But without the attribute here the compiler places the + constants in the .data section. Ideally the constant is placed in + .rodata.cst8 so that it can be merged, but gcc sucks, it ICEs when + we try to force this section on it. --drepper */ +static const volatile double TWO1023 __attribute__ ((section (".rodata"))) + = 8.988465674311579539e+307; +static const volatile double TWOM1000 __attribute__ ((section (".rodata"))) + = 9.3326361850321887899e-302; double __ieee754_exp2 (double x) diff --git a/sysdeps/ieee754/dbl-64/halfulp.c b/sysdeps/ieee754/dbl-64/halfulp.c index 9e1111b..478a4ba 100644 --- a/sysdeps/ieee754/dbl-64/halfulp.c +++ b/sysdeps/ieee754/dbl-64/halfulp.c @@ -1,7 +1,7 @@ /* * IBM Accurate Mathematical Library * written by International Business Machines Corp. - * Copyright (C) 2001 Free Software Foundation + * Copyright (C) 2001, 2005 Free Software Foundation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -42,7 +42,7 @@ double __ieee754_sqrt(double x); -int4 tab54[32] = { +static const int4 tab54[32] = { 262143, 11585, 1782, 511, 210, 107, 63, 42, 30, 22, 17, 14, 12, 10, 9, 7, 7, 6, 5, 5, 5, 4, 4, 4, diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c index 752272d..ea55304 100644 --- a/sysdeps/ieee754/flt-32/e_exp2f.c +++ b/sysdeps/ieee754/flt-32/e_exp2f.c @@ -1,5 +1,5 @@ /* Single-precision floating point 2^x. - Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2001, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating @@ -38,8 +38,15 @@ #include "t_exp2f.h" -static const volatile float TWOM100 = 7.88860905e-31; -static const volatile float TWO127 = 1.7014118346e+38; +/* XXX I know the assembler generates a warning about incorrect section + attributes. But without the attribute here the compiler places the + constants in the .data section. Ideally the constant is placed in + .rodata.cst4 so that it can be merged, but gcc sucks, it ICEs when + we try to force this section on it. --drepper */ +static const volatile float TWOM100 __attribute__ ((section (".rodata"))) + = 7.88860905e-31; +static const volatile float TWO127 __attribute__ ((section (".rodata"))) + = 1.7014118346e+38; float __ieee754_exp2f (float x) diff --git a/sysdeps/ieee754/flt-32/e_expf.c b/sysdeps/ieee754/flt-32/e_expf.c index 62448a9..b3e458c 100644 --- a/sysdeps/ieee754/flt-32/e_expf.c +++ b/sysdeps/ieee754/flt-32/e_expf.c @@ -1,5 +1,5 @@ /* Single-precision floating point e^x. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating @@ -60,8 +60,15 @@ extern const float __exp_deltatable[178]; extern const double __exp_atable[355] /* __attribute__((mode(DF))) */; -static const volatile float TWOM100 = 7.88860905e-31; -static const volatile float TWO127 = 1.7014118346e+38; +/* XXX I know the assembler generates a warning about incorrect section + attributes. But without the attribute here the compiler places the + constants in the .data section. Ideally the constant is placed in + .rodata.cst4 so that it can be merged, but gcc sucks, it ICEs when + we try to force this section on it. --drepper */ +static const volatile float TWOM100 __attribute__ ((section (".rodata"))) + = 7.88860905e-31; +static const volatile float TWO127 __attribute__ ((section (".rodata"))) + = 1.7014118346e+38; float __ieee754_expf (float x) diff --git a/sysdeps/ieee754/flt-32/s_expm1f.c b/sysdeps/ieee754/flt-32/s_expm1f.c index 375e334..7d32dbb 100644 --- a/sysdeps/ieee754/flt-32/s_expm1f.c +++ b/sysdeps/ieee754/flt-32/s_expm1f.c @@ -8,7 +8,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -20,7 +20,15 @@ static char rcsid[] = "$NetBSD: s_expm1f.c,v 1.5 1995/05/10 20:47:11 jtc Exp $"; #include "math.h" #include "math_private.h" -static const volatile float huge = 1.0e+30, tiny = 1.0e-30; +/* XXX I know the assembler generates a warning about incorrect section + attributes. But without the attribute here the compiler places the + constants in the .data section. Ideally the constant is placed in + .rodata.cst4 so that it can be merged, but gcc sucks, it ICEs when + we try to force this section on it. --drepper */ +static const volatile float huge __attribute__ ((section (".rodata"))) + = 1.0e+30; +static const volatile float tiny __attribute__ ((section (".rodata"))) + = 1.0e-30; #ifdef __STDC__ static const float @@ -71,7 +79,7 @@ Q5 = -2.0109921195e-07; /* 0xb457edbb */ } /* argument reduction */ - if(hx > 0x3eb17218) { /* if |x| > 0.5 ln2 */ + if(hx > 0x3eb17218) { /* if |x| > 0.5 ln2 */ if(hx < 0x3F851592) { /* and |x| < 1.5 ln2 */ if(xsb==0) {hi = x - ln2_hi; lo = ln2_lo; k = 1;} @@ -85,10 +93,10 @@ Q5 = -2.0109921195e-07; /* 0xb457edbb */ } x = hi - lo; c = (hi-x)-lo; - } + } else if(hx < 0x33000000) { /* when |x|<2**-25, return x */ t = huge+x; /* return x with inexact flags when x!=0 */ - return x - (t-(huge+x)); + return x - (t-(huge+x)); } else k = 0;