* sysdeps/ieee754/dbl-64/halfulp.c: Mark tab54 as static and const.
authorUlrich Drepper <drepper@redhat.com>
Wed, 21 Dec 2005 19:12:22 +0000 (19:12 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 21 Dec 2005 19:12:22 +0000 (19:12 +0000)
* 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.

ChangeLog
sysdeps/i386/fpu/e_expl.c
sysdeps/ieee754/dbl-64/e_exp2.c
sysdeps/ieee754/dbl-64/halfulp.c
sysdeps/ieee754/flt-32/e_exp2f.c
sysdeps/ieee754/flt-32/e_expf.c
sysdeps/ieee754/flt-32/s_expm1f.c

index 5698fe1..ef25558 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
index a090d0d..2240cea 100644 (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)
index 397acd1..b7ed739 100644 (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>
 
 
 #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)
index 9e1111b..478a4ba 100644 (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,
index 752272d..ea55304 100644 (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>
 
 
 #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)
index 62448a9..b3e458c 100644 (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>
 
 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)
index 375e334..7d32dbb 100644 (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;