]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
ldbl-96: Set -1 to "int sign_exponent:16"
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 16 Dec 2024 21:50:47 +0000 (05:50 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 17 Dec 2024 17:54:26 +0000 (01:54 +0800)
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>
Reviewed-by: Sam James <sam@gentoo.org>
sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c

index 5d64da8a91065297864edde557a0dbe01b5eb289..aa88ba6369720a2509b23addeb05c591d114ac67 100644 (file)
@@ -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);