[libc] [llvm] [libc][math] Refactor exp implementation to header-only in src/__support/math folder. (PR #148091)
LLVM Continuous Integration via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 14 09:22:50 PDT 2025
llvm-ci wrote:
LLVM Buildbot has detected a new failure on builder `libc-arm32-qemu-debian-dbg` running on `libc-arm32-qemu-debian` while building `libc,utils` at step 4 "annotate".
Full details are available at: https://lab.llvm.org/buildbot/#/builders/215/builds/1048
<details>
<summary>Here is the relevant piece of the build log for the reference</summary>
```
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
-- Build files have been written to: /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/build
@@@BUILD_STEP build libc@@@
Running: ninja libc
[1/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.common_constants.dir/common_constants.cpp.o
[2/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.log2f.dir/log2f.cpp.o
[3/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.logf.dir/logf.cpp.o
[4/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10f.dir/exp10f.cpp.o
[5/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2f.dir/exp2f.cpp.o
[6/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.log1pf.dir/log1pf.cpp.o
[7/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.o
FAILED: libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.o
/usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_21_0_0_git -D_DEBUG -I/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc -isystem /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/build/libc/include -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g --target=arm-linux-gnueabihf -DLIBC_QSORT_IMPL=LIBC_QSORT_QUICK_SORT -DLIBC_ADD_NULL_CHECKS -DLIBC_ERRNO_MODE=LIBC_ERRNO_MODE_DEFAULT -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 -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wdeprecated -Wno-c99-extensions -Wno-gnu-imaginary-constant -Wno-pedantic -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -DLIBC_COPT_PUBLIC_PACKAGING -std=gnu++17 -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.o -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.o.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/math/generic/exp.cpp
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/math/generic/exp.cpp:10:
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:70:25: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
static constexpr double poly_approx_d(double dx) {
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:74:15: note: non-constexpr function 'multiply_add<double>' cannot be used in a constant expression
double c0 = fputil::multiply_add(dx, 0.5, 1.0);
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/FPUtil/multiply_add.h:27:1: note: declared here
multiply_add(const T &x, const T &y, const T &z) {
^
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/math/generic/exp.cpp:10:
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:130:27: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
static constexpr Float128 exp_f128(double x, double kd, int idx1, int idx2) {
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:133:15: note: non-constexpr function 'multiply_add<double>' cannot be used in a constant expression
double t1 = fputil::multiply_add(kd, MLOG_2_EXP2_M12_HI, x); // exact
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/FPUtil/multiply_add.h:27:1: note: declared here
multiply_add(const T &x, const T &y, const T &z) {
^
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/math/generic/exp.cpp:10:
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:163:31: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
static constexpr DoubleDouble exp_double_double(double x, double kd,
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/math/exp.h:167:15: note: non-constexpr function 'multiply_add<double>' cannot be used in a constant expression
double t1 = fputil::multiply_add(kd, MLOG_2_EXP2_M12_HI, x); // exact
^
/home/llvm-libc-buildbot/buildbot-worker/libc-arm32-qemu-debian/libc-arm32-qemu-debian-dbg/llvm-project/libc/src/__support/FPUtil/multiply_add.h:27:1: note: declared here
multiply_add(const T &x, const T &y, const T &z) {
^
3 errors generated.
[8/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.powf.dir/powf.cpp.o
[9/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.log10f.dir/log10f.cpp.o
[10/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expm1f.dir/expm1f.cpp.o
[11/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.pow.dir/pow.cpp.o
[12/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.explogxf.dir/explogxf.cpp.o
[13/26] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10.dir/exp10.cpp.o
```
</details>
https://github.com/llvm/llvm-project/pull/148091
More information about the llvm-commits
mailing list