]> sourceware.org Git - glibc.git/commitdiff
Fix ldbl-128 / ldbl-128ibm erfcl for -Wuninitialized
authorJoseph Myers <joseph@codesourcery.com>
Fri, 22 May 2015 17:48:45 +0000 (17:48 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 22 May 2015 17:48:45 +0000 (17:48 +0000)
The ldbl-128 and ldbl-128ibm implementations of erfcl produce
uninitialized variable warnings with -Wuninitialized because of switch
statements where in fact one of the cases will always be executed, but
the compiler does not see that these cases cover all possibilities
(and because the reasoning that it does involves inequalities on the
representation of a floating point value leading to a set of possible
values for 8.0 times that value, converted to int, it's highly
nontrivial for the compiler to see that).  This patch fixes those
warnings by converting the last case in those switch statements to a
"default" case.

Tested for powerpc and mips64.

* sysdeps/ieee754/ldbl-128/s_erfl.c (__erfcl): Make case 9 in
switch statement into default case.
* sysdeps/ieee754/ldbl-128ibm/s_erfl.c (__erfcl): Likewise.

ChangeLog
sysdeps/ieee754/ldbl-128/s_erfl.c
sysdeps/ieee754/ldbl-128ibm/s_erfl.c

index 21c4fa68e00060d862f93bc406d8f9afe75e3445..5b31961d176c7d5a3e366fc6af7594b733d33973 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2015-05-22  Joseph Myers  <joseph@codesourcery.com>
 
+       * sysdeps/ieee754/ldbl-128/s_erfl.c (__erfcl): Make case 9 in
+       switch statement into default case.
+       * sysdeps/ieee754/ldbl-128ibm/s_erfl.c (__erfcl): Likewise.
+
        * sysdeps/ieee754/ldbl-128/e_asinl.c (__ieee754_asinl): Don't use
        a conditional in forcing "inexact".
        * sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl):
index 9bfc9c580b3fbee547c4287a7136b3c5b92c680d..fa4609f136cd3305efe399df639f43f7e0c01de1 100644 (file)
@@ -874,7 +874,7 @@ __erfcl (long double x)
          y = C19b + z * neval (z, RNr19, NRNr19) / deval (z, RDr19, NRDr19);
          y += C19a;
          break;
-       case 9:
+       default: /* i == 9.  */
          z = x - 1.125L;
          y = C20b + z * neval (z, RNr20, NRNr20) / deval (z, RDr20, NRDr20);
          y += C20a;
index f55e8b7879d0439e61348a11a6965294a8b496b0..f6fcf48cfaf9c98b85c968835d24c2e583990198 100644 (file)
@@ -894,7 +894,7 @@ __erfcl (long double x)
          y = C19b + z * neval (z, RNr19, NRNr19) / deval (z, RDr19, NRDr19);
          y += C19a;
          break;
-       case 9:
+       default: /* i == 9.  */
          z = x - 1.125L;
          y = C20b + z * neval (z, RNr20, NRNr20) / deval (z, RDr20, NRDr20);
          y += C20a;
This page took 0.114973 seconds and 5 git commands to generate.