The build has been failing on powerpc64le-linux-gnu with GCC 10
due to a maybe-uninitialized error:
../sysdeps/ieee754/dbl-64/mpa.c:875:6: error: ‘w.e’ may be used
uninitialized in this function [-Werror=maybe-uninitialized]
875 | EY -= EX;
| ^~
The warning is thrown because when __inv is called by __dvd *y is not
initialized and if t == 0 before calling __dbl_mp, EY will stay
uninitialized, as the function does not touch it in this case.
However, since t will be set to 1/t before calling __dbl_mp, t == 0 will
never happen, so we can instruct the compiler to ignore this case, which
suppresses the warning.
Tested on powerpc64le.
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
z.e = 0;
__mp_dbl (&z, &t, p);
t = 1 / t;
+
+ /* t == 0 will never happen at this point, since 1/t can only be 0 if t is
+ infinity, but before the division t == mantissa of x (exponent is 0). We
+ can instruct the compiler to ignore this case. */
+ if (t == 0)
+ __builtin_unreachable ();
+
__dbl_mp (t, y, p);
EY -= EX;