* 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.
This commit is contained in:
Ulrich Drepper 2005-12-21 19:12:22 +00:00
parent 2fdaad97be
commit 403a632578
7 changed files with 59 additions and 18 deletions

View File

@ -1,3 +1,15 @@
2005-12-21 Ulrich Drepper <drepper@redhat.com>
* 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 <kukuk@suse.de>
* elf/readlib.c: Fix include of readelflib.c.

View File

@ -24,8 +24,8 @@
#include <math_private.h>
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)

View File

@ -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 <geoffk@ozemail.com.au>
@ -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)

View File

@ -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,

View File

@ -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 <geoffk@ozemail.com.au>
@ -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)

View File

@ -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 <geoffk@ozemail.com.au>
@ -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)

View File

@ -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;