aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-05-21 23:05:45 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-05-21 23:05:45 +0000
commit89f3b6e18c6e7833438789746fcfc2e7189f7cac (patch)
tree285370ecb7b84c7ad70b289779c1dd141e549a8d /sysdeps/ieee754
parent9d12d7652b830635528639ece2206ecf5bb9ffbf (diff)
downloadglibc-89f3b6e18c6e7833438789746fcfc2e7189f7cac.zip
glibc-89f3b6e18c6e7833438789746fcfc2e7189f7cac.tar.gz
glibc-89f3b6e18c6e7833438789746fcfc2e7189f7cac.tar.bz2
Fix sysdeps/ieee754/dbl-64/mpa.c for -Wuninitialized.
If you remove the "override CFLAGS += -Wno-uninitialized" in math/Makefile, one of the errors you get is: ../sysdeps/ieee754/dbl-64/mpa.c: In function '__mp_dbl.part.0': ../sysdeps/ieee754/dbl-64/mpa.c:183:5: error: 'c' may be used uninitialized in this function [-Werror=maybe-uninitialized] c *= X[0]; The problem is that the p < 5 case initializes c if p is 1, 2, 3 or 4 but not otherwise, and in fact p is positive for all calls to this function so the uninitialized case can't actually occur. This patch replaces the "if (p == 4)" last case with a comment so the compiler can see that all paths do initialize c. Tested for x86_64. * sysdeps/ieee754/dbl-64/mpa.c (norm): Remove if condition on (p == 4) case.
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/dbl-64/mpa.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sysdeps/ieee754/dbl-64/mpa.c b/sysdeps/ieee754/dbl-64/mpa.c
index 7d6b0c5..7b52da9 100644
--- a/sysdeps/ieee754/dbl-64/mpa.c
+++ b/sysdeps/ieee754/dbl-64/mpa.c
@@ -119,7 +119,8 @@ __cpy (const mp_no *x, mp_no *y, int p)
#ifndef NO___MP_DBL
/* Convert a multiple precision number *X into a double precision
- number *Y, normalized case (|x| >= 2**(-1022))). */
+ number *Y, normalized case (|x| >= 2**(-1022))). X has precision
+ P, which is positive. */
static void
norm (const mp_no *x, double *y, int p)
{
@@ -135,7 +136,7 @@ norm (const mp_no *x, double *y, int p)
c = X[1] + R * X[2];
else if (p == 3)
c = X[1] + R * (X[2] + R * X[3]);
- else if (p == 4)
+ else /* p == 4. */
c = (X[1] + R * X[2]) + R * R * (X[3] + R * X[4]);
}
else