[libc-commits] [libc] [libc][math][c23] Fix setpayloadsig smoke test on RV32 (PR #102538)

Mikhail R. Gadelha via libc-commits libc-commits at lists.llvm.org
Thu Aug 8 16:57:34 PDT 2024


mikhailramalho wrote:

The following is still crashing:
```
/home/mgadelha/tools/llvm-project/libc/test/src/math/smoke/SetPayloadSigTest.h:71:48: error: no viable conversion from 'long double' to 'StorageType' (aka 'BigInt<128U, false, unsigned long long>')
   71 |     EXPECT_EQ(FPBits::signaling_nan(Sign::POS, nan_payload).uintval(),
      |                                                ^~~~~~~~~~~
/home/mgadelha/tools/llvm-project/libc/test/UnitTest/LibcTest.h:420:50: note: expanded from macro 'EXPECT_EQ'
  420 | #define EXPECT_EQ(LHS, RHS) LIBC_TEST_BINOP_(EQ, LHS, RHS, )
      |                                                  ^~~
/home/mgadelha/tools/llvm-project/libc/test/UnitTest/LibcTest.h:413:72: note: expanded from macro 'LIBC_TEST_BINOP_'
  413 |   LIBC_TEST_SCAFFOLDING_(test(LIBC_NAMESPACE::testing::TestCond::COND, LHS,    \
      |                                                                        ^~~
/home/mgadelha/tools/llvm-project/libc/test/UnitTest/LibcTest.h:406:7: note: expanded from macro 'LIBC_TEST_SCAFFOLDING_'
  406 |   if (TEST)                                                                    \
      |       ^~~~
/home/mgadelha/tools/llvm-project/libc/test/src/math/smoke/setpayloadsigf128_test.cpp:13:1: note: in instantiation of member function 'SetPayloadSigTestTemplate<long double>::testValidPayloads' requested here
   13 | LIST_SETPAYLOADSIG_TESTS(float128, LIBC_NAMESPACE::setpayloadsigf128)
      | ^
/home/mgadelha/tools/llvm-project/libc/test/src/math/smoke/SetPayloadSigTest.h:81:54: note: expanded from macro 'LIST_SETPAYLOADSIG_TESTS'
   81 |   TEST_F(LlvmLibcSetPayloadSigTest, ValidPayloads) { testValidPayloads(&func); }
      |                                                      ^
/home/mgadelha/tools/llvm-project/libc/src/__support/big_int.h:362:25: note: candidate constructor not viable: no known conversion from 'long double' to 'const BigInt<128, false> &' for 1st argument
  362 |   LIBC_INLINE constexpr BigInt(const BigInt &other) = default;
      |                         ^      ~~~~~~~~~~~~~~~~~~~
/home/mgadelha/tools/llvm-project/libc/src/__support/big_int.h:365:25: note: candidate template ignored: could not match 'BigInt<OtherBits, OtherSigned, unsigned long long>' against 'long double'
  365 |   LIBC_INLINE constexpr BigInt(
      |                         ^
/home/mgadelha/tools/llvm-project/libc/src/__support/big_int.h:379:45: note: candidate template ignored: could not match 'unsigned long long[N]' against 'long double'
  379 |   template <size_t N> LIBC_INLINE constexpr BigInt(const WordType (&nums)[N]) {
      |                                             ^
/home/mgadelha/tools/llvm-project/libc/src/__support/big_int.h:393:25: note: candidate template ignored: substitution failure [with T = long double]: implicit instantiation of undefined template '__llvm_libc_20_0_0_git::cpp::enable_if<false>'
  393 |   LIBC_INLINE constexpr BigInt(T v) {
      |                         ^
/home/mgadelha/tools/llvm-project/libc/src/__support/big_int.h:385:34: note: explicit constructor is not a candidate
  385 |   LIBC_INLINE constexpr explicit BigInt(
      |                                  ^
/home/mgadelha/tools/llvm-project/libc/src/__support/FPUtil/FPBits.h:394:63: note: passing argument to parameter 'v' here
  394 |                                                   StorageType v = 0) {
      |                                                               ^
1 error generated.


https://github.com/llvm/llvm-project/pull/102538


More information about the libc-commits mailing list