[clang] [Clang] Allow __builtin_fma/fmaf/fmal to be used in a constant expression (PR #158048)

Chaitanya Koparkar via cfe-commits cfe-commits at lists.llvm.org
Sat Sep 13 08:27:14 PDT 2025


ckoparkar wrote:

Some libcxx tests in [constexpr-cxx23-clang.pass.cpp](https://github.com/llvm/llvm-project/blob/main/libcxx/test/libcxx/numerics/c.math/constexpr-cxx23-clang.pass.cpp#L197) are failing:

```
ASSERT_NOT_CONSTEXPR_CXX23(std::fma(1.0f, 1.0f, 1.0f) == 2.0f);
ASSERT_NOT_CONSTEXPR_CXX23(std::fma(1.0, 1.0, 1.0) == 2.0);
ASSERT_NOT_CONSTEXPR_CXX23(std::fma(1.0L, 1.0L, 1.0L) == 2.0L);
ASSERT_NOT_CONSTEXPR_CXX23(std::fmaf(1.0f, 1.0f, 1.0f) == 2.0f);
ASSERT_NOT_CONSTEXPR_CXX23(std::fmal(1.0L, 1.0L, 1.0L) == 2.0L); 
```

I'm not sure how to resolve this: 
1. use the `__has_constexpr_builtin(__builtin_signbit)` to fix the tests only, or
2. add `_LIBCPP_CONSTEXPR_SINCE_CXX23` to the corresponding header file in libcxx and update other things similar to #105946?

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


More information about the cfe-commits mailing list