[PATCH] newlib/libc/stdbit: Fix static assertions for 16-bit int
Jonathan Wakely
jwakely@redhat.com
Mon Apr 20 20:29:20 GMT 2026
On Mon, 20 Apr 2026 at 21:32 +0200, Corinna Vinschen wrote:
>
>[CC Joel Sherrill, please review]
>
>On Apr 20 16:24, Jonathan Wakely wrote:
>> All the USHRT_WIDTH < UINT_WIDTH assertions fail for 16-bit int targets,
>> such as msp430-elf. Remove those static assertions and instead fix the
>> stdc_xxx_us functions to work correctly when USHRT_WIDTH == UINT_WIDTH.
>>
>> Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
>> ---
>>
>> This is untested, except to check that it now compiles on msp430-elf and
>> still compiles on arm-eabi.
>>
>> newlib/libc/stdbit/stdc_bit_ceil.c | 9 +++++----
>> newlib/libc/stdbit/stdc_leading_ones.c | 10 ++++++----
>> newlib/libc/stdbit/stdc_leading_zeros.c | 10 ++++++----
>> newlib/libc/stdbit/stdc_trailing_ones.c | 10 ++++++----
>> newlib/libc/stdbit/stdc_trailing_zeros.c | 11 +++++++----
>> 5 files changed, 30 insertions(+), 20 deletions(-)
>> [...]
>> unsigned int
>> stdc_leading_ones_us(unsigned short x)
>> {
>> +#if USHRT_WIDTH == UINT_WIDTH
>> + /* Avoid triggering undefined behavior if x == 0. */
>> + if (x == ~0U)
>
>~0 is not 0...
I know. I just moved the original comment, but as I said at
https://inbox.sourceware.org/newlib/CAH6eHdRheB4uCJQCvQLQ3rC5xGgLgA+9H_V60meVR3xrMikzxQ@mail.gmail.com/T/#t
it looks like the comments in that file (the one I moved, and the
earlier one on line 13) are both wrong.
More information about the Newlib
mailing list