[PATCH] ldbl-96: Set -1 to "int sign_exponent:16"

Sam James sam@gentoo.org
Tue Dec 17 15:09:12 GMT 2024


"H.J. Lu" <hjl.tools@gmail.com> writes:

> ieee_long_double_shape_type has
>
> typedef union
> {
>   long double value;
>   struct
>   {
>     ...
>     int sign_exponent:16;
>     ...
>   } parts;
> } ieee_long_double_shape_type;
>
> Clang issues an error:
>
> ../sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c:49:2: error: implicit truncation from 'int' to bit-field changes value from 65535 to -1 [-Werror,-Wbitfield-constant-conversion]
>    49 |         SET_LDOUBLE_WORDS (ldnx, 0xffff,
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    50 |                            tests[i] >> 32, tests[i] & 0xffffffffULL);
>       |
>
> Use -1, instead of 0xffff, to silence Clang.
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>

OK

> ---
>  sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
> index 5d64da8a91..aa88ba6369 100644
> --- a/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
> +++ b/sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c
> @@ -46,9 +46,9 @@ do_test (void)
>  	SET_LDOUBLE_WORDS (ldy, 0x7fff,
>  			   (tests[i] >> 32) | 0x80000000,
>  			   tests[i] & 0xffffffffULL);
> -	SET_LDOUBLE_WORDS (ldnx, 0xffff,
> +	SET_LDOUBLE_WORDS (ldnx, -1,
>  			   tests[i] >> 32, tests[i] & 0xffffffffULL);
> -	SET_LDOUBLE_WORDS (ldny, 0xffff,
> +	SET_LDOUBLE_WORDS (ldny, -1,
>  			   (tests[i] >> 32) | 0x80000000,
>  			   tests[i] & 0xffffffffULL);
>  	bool to1 = totalorderl (&ldx, &ldy);


More information about the Libc-alpha mailing list