mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
Fix ldbl-128 / ldbl-128ibm tanl for -Wuninitialized.
The ldbl-128 and ldbl-128ibm implementations of tanl produce uninitialized variable warnings with -Wuninitialized because of a variable that is initialized only conditionally, then used under the same conditions under which it is set. This patch uses DIAG_* macros to suppress those warnings. Tested for powerpc and mips64. * sysdeps/ieee754/ldbl-128/k_tanl.c: Include <libc-internal.h>. (__kernel_tanl): Ignore uninitialized warnings around use of SIGN. * sysdeps/ieee754/ldbl-128ibm/k_tanl.c: Include <libc-internal.h>. (__kernel_tanl): Ignore uninitialized warnings around use of SIGN.
This commit is contained in:
parent
31a8780d0b
commit
0c3717e782
@ -1,5 +1,10 @@
|
||||
2015-05-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/ieee754/ldbl-128/k_tanl.c: Include <libc-internal.h>.
|
||||
(__kernel_tanl): Ignore uninitialized warnings around use of SIGN.
|
||||
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c: Include <libc-internal.h>.
|
||||
(__kernel_tanl): Ignore uninitialized warnings around use of SIGN.
|
||||
|
||||
* 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.
|
||||
|
@ -56,6 +56,7 @@
|
||||
* = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
|
||||
*/
|
||||
|
||||
#include <libc-internal.h>
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
static const long double
|
||||
@ -129,8 +130,19 @@ __kernel_tanl (long double x, long double y, int iy)
|
||||
{
|
||||
v = (long double) iy;
|
||||
w = (v - 2.0 * (x - (w * w / (w + v) - r)));
|
||||
/* SIGN is set for arguments that reach this code, but not
|
||||
otherwise, resulting in warnings that it may be used
|
||||
uninitialized although in the cases where it is used it has
|
||||
always been set. */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (4, 7)
|
||||
DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
|
||||
#else
|
||||
DIAG_IGNORE_NEEDS_COMMENT (5, "-Wuninitialized");
|
||||
#endif
|
||||
if (sign < 0)
|
||||
w = -w;
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
return w;
|
||||
}
|
||||
if (iy == 1)
|
||||
|
@ -56,6 +56,7 @@
|
||||
* = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
|
||||
*/
|
||||
|
||||
#include <libc-internal.h>
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
static const long double
|
||||
@ -129,8 +130,19 @@ __kernel_tanl (long double x, long double y, int iy)
|
||||
{
|
||||
v = (long double) iy;
|
||||
w = (v - 2.0 * (x - (w * w / (w + v) - r)));
|
||||
/* SIGN is set for arguments that reach this code, but not
|
||||
otherwise, resulting in warnings that it may be used
|
||||
uninitialized although in the cases where it is used it has
|
||||
always been set. */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (4, 7)
|
||||
DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
|
||||
#else
|
||||
DIAG_IGNORE_NEEDS_COMMENT (5, "-Wuninitialized");
|
||||
#endif
|
||||
if (sign < 0)
|
||||
w = -w;
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
return w;
|
||||
}
|
||||
if (iy == 1)
|
||||
|
Loading…
Reference in New Issue
Block a user