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:
Joseph Myers 2015-05-22 20:13:44 +00:00
parent 31a8780d0b
commit 0c3717e782
3 changed files with 29 additions and 0 deletions

View File

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

View File

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

View File

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