<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/120427>120427</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc] gcc build errors about conversion from 'int' to 'short unsigned int'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jackhong12
      </td>
    </tr>
</table>

<pre>
    I built libc with g++ 13.3.0 and got the following errors.

```
[112/742] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinf16.dir/sinf16.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinf16.dir/sinf16.cpp.o
/usr/bin/c++ -DLIBC_NAMESPACE=__llvm_libc_20_0_0_git -I/home/jack/open-source/llvm-project/build_gcc/projects/libc/src/math/generic -I/home/jack/open-source/llvm-project/libc/src/math/generic -I/home/jack/open-source/llvm-project/libc -isy
stem /home/jack/open-source/llvm-project/build_gcc/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno
-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-overrid
e -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17 -mavx2 -mfma -msse4.2 -D__LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC -DLIBC_QSORT_IMPL=LIBC_QSO
RT_QUICK_SORT -DLIBC_ADD_NULL_CHECKS -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-p
ointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -fext-numeric-literals -Wno-pedantic -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -DLIBC_COPT_PUBLIC_PACKAGING -MD -MT projects/libc/src/math/generic/CMakeFiles/libc
.src.math.generic.sinf16.dir/sinf16.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinf16.dir/sinf16.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinf16.dir/sinf16.cpp.o -c /home/jac
k/open-source/llvm-project/libc/src/math/generic/sinf16.cpp
In file included from /home/jack/open-source/llvm-project/libc/src/math/generic/sinf16.cpp:16:
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h: In instantiation of ‘constexpr __llvm_libc_20_0_0_git::cpp::optional<T> __llvm_libc_20_0_0_git::fputil::ExceptValues<T, N>::lookup_odd(StorageType, bool) c
onst [with T = _Float16; long unsigned int N = 4; StorageType = short unsigned int]’:
/home/jack/open-source/llvm-project/libc/src/math/generic/sinf16.cpp:58:41:   required from here
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h:84:20: error: conversion from ‘int’ to ‘__llvm_libc_20_0_0_git::fputil::ExceptValues<_Float16, 4>::StorageType’ {aka ‘short unsigned int’} may change value
[-Werror=conversion]
   84 |           out_bits += sign ? values[i].rnd_downward_offset
      |           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   85 |                            : values[i].rnd_upward_offset;
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h:88:20: error: conversion from ‘int’ to ‘__llvm_libc_20_0_0_git::fputil::ExceptValues<_Float16, 4>::StorageType’ {aka ‘short unsigned int’} may change value
[-Werror=conversion]
   88 |           out_bits += sign ? values[i].rnd_upward_offset
      |           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   89 |                            : values[i].rnd_downward_offset;
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
[124/742] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.tanpif16.dir/tanpif16.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.tanpif16.dir/tanpif16.cpp.o
/usr/bin/c++ -DLIBC_NAMESPACE=__llvm_libc_20_0_0_git -I/home/jack/open-source/llvm-project/build_gcc/projects/libc/src/math/generic -I/home/jack/open-source/llvm-project/libc/src/math/generic -I/home/jack/open-source/llvm-project/libc -isystem /home/jack/open-source/llvm-project/build_gcc/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17 -mavx2 -mfma -msse4.2 -D__LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC -DLIBC_QSORT_IMPL=LIBC_QSORT_QUICK_SORT -DLIBC_ADD_NULL_CHECKS -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -fext-numeric-literals -Wno-pedantic -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -DLIBC_COPT_PUBLIC_PACKAGING -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.tanpif16.dir/tanpif16.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.tanpif16.dir/tanpif16.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.tanpif16.dir/tanpif16.cpp.o -c /home/jack/open-source/llvm-project/libc/src/math/generic/tanpif16.cpp
In file included from /home/jack/open-source/llvm-project/libc/src/math/generic/tanpif16.cpp:16:
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h: In instantiation of ‘constexpr __llvm_libc_20_0_0_git::cpp::optional<T> __llvm_libc_20_0_0_git::fputil::ExceptValues<T, N>::lookup_odd(StorageType, bool) const [with T = _Float16; long unsigned int N = 21; StorageType = short unsigned int]’:
/home/jack/open-source/llvm-project/libc/src/math/generic/tanpif16.cpp:52:45:   required from here
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h:84:20: error: conversion from ‘int’ to ‘__llvm_libc_20_0_0_git::fputil::ExceptValues<_Float16, 21>::StorageType’ {aka ‘short unsigned int’} may change value [-Werror=conversion]
   84 |           out_bits += sign ? values[i].rnd_downward_offset
      |           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   85 |                            : values[i].rnd_upward_offset;
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/open-source/llvm-project/libc/src/__support/FPUtil/except_value_utils.h:88:20: error: conversion from ‘int’ to ‘__llvm_libc_20_0_0_git::fputil::ExceptValues<_Float16, 21>::StorageType’ {aka ‘short unsigned int’} may change value [-Werror=conversion]
   88 |           out_bits += sign ? values[i].rnd_upward_offset
      |           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   89 |                            : values[i].rnd_downward_offset;
      |                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWktT4zjX_jXKRqWUI8edsMjCiZP-Ug00A-Fjdi5ZPnY0LUseSQ4wi_ntb8l2CJeevtAM9b4FJpXgI-lcdJ4jyU-ZWStKBTBD0RxFyYA1bqvN7A_Gv2y1Kkd0kOn8drbGWSOkw1JkHF8Lt8UlonNE53gUDsNhgJnKcakddlvAhZZSXwtVYjBGGztEQew_H4L-E8Qomo9GFNHVZExRlOB5I2TuRyx-_x3r7A_gDtdG-1-L6MqbRXRljf-umNsiuipBgRFesDhhX2AlJOy7Dq3hQ99t2HcaWqGK0YdhLoxX093wuh5qFMSreH28TFAYv5pFRFeN9fJMKERXvJ9Kkhyv54v0ND5ZXpzFiyUKkzSVclel3kRKg9T_lcJhskZ0tdUVILryqUJ0pWtQxOrGcC_0o0gfjrfjpzctuff9x4L8aRMvrQsTYW9REFsHFX7JaIXisskBk-JsvcCkUJpYqJhyghOhHJhaW-GEVpgUO2FFJqRwt0QoKRRYshV5DgqTqxbbKExy5oA4UUGnS4oC_B3JLWByxaT0fW-cYZhcKU0a1VjISc0Mq8CBweTq2ggHxDojVGkxueLMOvJnw2Q7AgUxqYS1QpWkECBzIpRwgknxFxiLSQ1563ynXmpVtl-YXImqloILRwompdsa3ZTbrlfFbjMgjTpoyrsGpZVqZGeYcMmsJRVUjHOwthMayBvlLZJK76CT1WCtqMRf3sWDVGm44VA74m5rL8pBggNvguyEcQ2TJHfaT4BtyhKsI3oHxogcBXGvguuqAuV6p4WVwPwqQYTKQTnWZemKO5bfhWSbutbG-YCKXLBSaesEt4Rr6W0VRaO4H0cstL_W92OO3bv_HGKSnCbL-eVHTKzLUZj0JTqaYFKx3Q3FpCoqhkllLYyHFJMkTdvivbxYpvPL9fFmfZouluvjdHX8-fN5er4-3aSb88vTxb7Kf7v4fL5J1ydnxyi8k6AgPt-kv12uF59S377vHCdJenp5fJwu_m-5-HSBSVGLHm_tuixUd9NNeB-VRwO7ITvgThvCtdqBsYe2Rl0LlRPHMgm9iNlbxbdGK93Yr7Ub5wQmhTNiJ5gkrHGa7JhpAYnCpGbOgeld0ZUHngc5qXVbV5hUe7kEVuwbURDv2x9VS1thPr93rndA8DsWuS8s4MYR1VR-sSFSODBM2j0076rjH8rhcfW11v2SIHoktBlYfD7bpGeX8-P1Ij2LF5_ij-vTj5icJJicbH5h40BB_BN7ByYnq9fZpYY5Jvp1TGHCHy7wKIh_Zbt5oB4F8VrhQkjA_cKf48Lon91SfthcGI8-oDDuNvnnGkjTfhVDdLU6u3RCIrrqajvdMdlA2jgh7XDrDy1rhYWyzqO8WxB1gdGSommAjqZcK-vgpjb46ycJ72oYd46jMNbt4sEkChcbFC6_OaiovRPd_8vWt__3rtl2LF3gUxQuu1ap9ZemTnWeIzq9cNqwEja3NfhemdYS0SPsk-59xSiat-fLDUZhgtOV1Mz5KZ3jdldrVHtezbFQDp-2fca-8Z7aVmi32rgHvVGU7Kfl6Jcz9G0IRFMUxuORzw7GBv5shNnDbgsGXg8c0zEKYxp4R_rjSozvLZxdIeyx4udoP0HY6UPDM1Fwlzu68DnqwXA__3fW0GTOvrCDxa9k7y51kwRX7BbzLVMl4Dbi7oHicCQ7hOiTHvgsTMcYTRb4cOnGpZlwFvud3QNGlAqjcNVptCiaCxQlQ6PyNNfX6pqZPNVFYcF1CjF-pPDv_YWi5d8_dPWeRY8UPbl81p561dT3fQrn_-DWk-t7Lr0WNKfv0OwBMH0-NB-C4GWA2Xt19DxYPi6WFwJm6xbno1o21hv2J8VrZlR7aMtAqBI7A8yf-5nteYeeZ6Dj1-MZHFO1OBxz7m7_Xa7he1bf-YYf5BvePNnwxpiGN0ozvDmO4Q0TDD-5W7w4w_BNay_PMnwnOP6iz_33tb8K0fDA4DvV8Eyq4Zk8Ax39NxANjyAQURTG4-idarh7nvNp-hcf6PA70_DONPyPIvOdaPg-Lp9LNOxfbhjkszA_Co_YAGajSTiOwoAe0cF29gEo5wEbTyDKP3A6zccZzSAYHfGMRhnjAzGjAR2P6Gg6CqPpiA5pMD7iUzqBaRiFBVA0DqBiQg49EofalANhbQOzEQ3GdDKQLANp2xc5KO2qhaIoGZhZW0lZU1o0DqSwzh40OOFk-_JHOyBKcMl5-65H3seGWaYb97Rg6MTjkU7aIqGTr2CVTgaNkbOtc7WfSURXfiMTbttkQ66rvsKfFnoblD_h9XHtZvQ_AQAA___gkm95">