mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-02 22:23:52 +08:00
Get rid of array-bounds warning in __kernel_rem_pio2[f] with gcc 6.1 -O3.
On s390x I get the following werror when build with gcc 6.1 (or current gcc head) and -O3: ../sysdeps/ieee754/dbl-64/k_rem_pio2.c: In function ‘__kernel_rem_pio2’: ../sysdeps/ieee754/dbl-64/k_rem_pio2.c:254:18: error: array subscript is below array bounds [-Werror=array-bounds] for (k = 1; iq[jk - k] == 0; k++) ~~^~~~~~~~ I get the same error with sysdeps/ieee754/flt-32/k_rem_pio2f.c. This patch adds DIAG_* macros around it. ChangeLog: * sysdeps/ieee754/dbl-64/k_rem_pio2.c (__kernel_rem_pio2): Use DIAG_*_NEEDS_COMMENT macro to get rid of array-bounds warning. * sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f): Likewise.
This commit is contained in:
parent
2c820533c6
commit
b65f0b7b2e
@ -1,3 +1,10 @@
|
||||
2016-08-18 Stefan Liebler <stli@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/ieee754/dbl-64/k_rem_pio2.c (__kernel_rem_pio2):
|
||||
Use DIAG_*_NEEDS_COMMENT macro to get rid of array-bounds warning.
|
||||
* sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f):
|
||||
Likewise.
|
||||
|
||||
2016-08-18 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #16907]
|
||||
|
@ -132,6 +132,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2.c,v 1.7 1995/05/10 20:46:25 jtc Exp $
|
||||
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
static const int init_jk[] = {2,3,4,6}; /* initial value for jk */
|
||||
|
||||
@ -251,8 +252,17 @@ recompute:
|
||||
j |= iq[i];
|
||||
if (j == 0) /* need recomputation */
|
||||
{
|
||||
/* On s390x gcc 6.1 -O3 produces the warning "array subscript is below
|
||||
array bounds [-Werror=array-bounds]". Only __ieee754_rem_pio2l
|
||||
calls __kernel_rem_pio2 for normal numbers and |x| > pi/4 in case
|
||||
of ldbl-96 and |x| > 3pi/4 in case of ldbl-128[ibm].
|
||||
Thus x can't be zero and ipio2 is not zero, too. Thus not all iq[]
|
||||
values can't be zero. */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
DIAG_IGNORE_NEEDS_COMMENT (6.1, "-Warray-bounds");
|
||||
for (k = 1; iq[jk - k] == 0; k++)
|
||||
; /* k = no. of terms needed */
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
for (i = jz + 1; i <= jz + k; i++) /* add q[jz+1] to q[jz+k] */
|
||||
{
|
||||
|
@ -19,6 +19,7 @@ static char rcsid[] = "$NetBSD: k_rem_pio2f.c,v 1.4 1995/05/10 20:46:28 jtc Exp
|
||||
|
||||
#include <math.h>
|
||||
#include <math_private.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
/* In the float version, the input parameter x contains 8 bit
|
||||
integers, not 24 bit integers. 113 bit precision is not supported. */
|
||||
@ -122,7 +123,16 @@ recompute:
|
||||
j = 0;
|
||||
for (i=jz-1;i>=jk;i--) j |= iq[i];
|
||||
if(j==0) { /* need recomputation */
|
||||
/* On s390x gcc 6.1 -O3 produces the warning "array subscript is
|
||||
below array bounds [-Werror=array-bounds]". Only
|
||||
__ieee754_rem_pio2f calls __kernel_rem_pio2f for normal
|
||||
numbers and |x| ~> 2^7*(pi/2). Thus x can't be zero and
|
||||
ipio2 is not zero, too. Thus not all iq[] values can't be
|
||||
zero. */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
DIAG_IGNORE_NEEDS_COMMENT (6.1, "-Warray-bounds");
|
||||
for(k=1;iq[jk-k]==0;k++); /* k = no. of terms needed */
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
for(i=jz+1;i<=jz+k;i++) { /* add q[jz+1] to q[jz+k] */
|
||||
f[jx+i] = (float) ipio2[jv+i];
|
||||
|
Loading…
Reference in New Issue
Block a user