Browse Source

Avoid maybe-uninitialized warning in __kernel_rem_pio2

With GCC 14 on 32-bit x86 the compiler emits a maybe-uninitialized
warning:

../sysdeps/ieee754/dbl-64/k_rem_pio2.c: In function '__kernel_rem_pio2':
../sysdeps/ieee754/dbl-64/k_rem_pio2.c:364:20: error: 'fq' may be used uninitialized [-Werror=maybe-uninitialized]
  364 |           y[0] = fq[0]; y[1] = fq[1]; y[2] = fw;
      |                  ~~^~~

This is similar to the warning that is suppressed in the other branch of
the switch.  Help the compiler knowing that the variable is always
initialized, which also makes the suppression obsolete.
azanella/bz30944-memcpy-zen
Andreas Schwab 3 years ago
parent
commit
5aa1ddfcb3
  1. 14
      sysdeps/ieee754/dbl-64/k_rem_pio2.c

14
sysdeps/ieee754/dbl-64/k_rem_pio2.c

@ -300,6 +300,11 @@ recompute:
iq[jz] = (int32_t) z;
}
/* jz is always nonnegative here, because the result is never zero to
full precision (this function is not called for zero arguments).
Help the compiler to know it. */
if (jz < 0) __builtin_unreachable ();
/* convert integer "bit" chunk to floating-point value */
fw = __scalbn (one, q0);
for (i = jz; i >= 0; i--)
@ -330,16 +335,7 @@ recompute:
for (i = jz; i >= 0; i--)
fv = math_narrow_eval (fv + fq[i]);
y[0] = (ih == 0) ? fv : -fv;
/* GCC mainline (to be GCC 9), as of 2018-05-22 on i686, warns
that fq[0] may be used uninitialized. This is not possible
because jz is always nonnegative when the above loop
initializing fq is executed, because the result is never zero
to full precision (this function is not called for zero
arguments). */
DIAG_PUSH_NEEDS_COMMENT;
DIAG_IGNORE_NEEDS_COMMENT (9, "-Wmaybe-uninitialized");
fv = math_narrow_eval (fq[0] - fv);
DIAG_POP_NEEDS_COMMENT;
for (i = 1; i <= jz; i++)
fv = math_narrow_eval (fv + fq[i]);
y[1] = (ih == 0) ? fv : -fv;

Loading…
Cancel
Save