[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:35:45 PDT 2025
llvm-ci wrote:
LLVM Buildbot has detected a new failure on builder `fuchsia-x86_64-linux` running on `fuchsia-debian-64-us-central1-a-1` while building `libc,utils` at step 4 "annotate".
Full details are available at: https://lab.llvm.org/buildbot/#/builders/11/builds/19485
<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/fuchsia-linux.py ...' (failure)
...
[604/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.lrintl.dir/lrintl.cpp.obj
[605/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintf.dir/nearbyintf.cpp.obj
[606/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.erff.dir/erff.cpp.obj
[607/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintl.dir/llrintl.cpp.obj
[608/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintl.dir/nearbyintl.cpp.obj
[609/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysign.dir/copysign.cpp.obj
[610/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysignf.dir/copysignf.cpp.obj
[611/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.atof.dir/atof.cpp.obj
[612/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expf.dir/expf.cpp.obj
[613/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj
FAILED: libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj
/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/./bin/clang++ --target=armv6m-none-eabi -DLIBC_NAMESPACE=__llvm_libc_21_0_0_git -I/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc -isystem /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/include/armv6m-unknown-none-eabi --target=armv6m-none-eabi -Wno-atomic-alignment "-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)" "-Dfprintf(stream, format, ...)=printf(format)" -D_LIBCPP_PRINT=1 -mthumb -fPIC -fno-semantic-interposition -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 -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -ffunction-sections -fdata-sections -ffile-prefix-map=/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/runtimes/runtimes-armv6m-none-eabi-bins=../../../../llvm-project -ffile-prefix-map=/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/= -no-canonical-prefixes -Os -DNDEBUG --target=armv6m-none-eabi -DLIBC_QSORT_IMPL=LIBC_QSORT_HEAP_SORT -DLIBC_TYPES_TIME_T_IS_32_BIT -DLIBC_ADD_NULL_CHECKS "-DLIBC_MATH=(LIBC_MATH_SKIP_ACCURATE_PASS | LIBC_MATH_SMALL_TABLES)" -DLIBC_ERRNO_MODE=LIBC_ERRNO_MODE_EXTERNAL -fpie -ffreestanding -DLIBC_FULL_BUILD -nostdlibinc -ffixed-point -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 -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj -c /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/math/generic/exp.cpp
In file included from /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/math/generic/exp.cpp:10:
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/math/exp.h:70:25: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
70 | static constexpr double poly_approx_d(double dx) {
| ^~~~~~~~~~~~~
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/math/exp.h:74:15: note: non-constexpr function 'multiply_add<double>' cannot be used in a constant expression
74 | double c0 = fputil::multiply_add(dx, 0.5, 1.0);
| ^
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/FPUtil/multiply_add.h:27:1: note: declared here
27 | multiply_add(const T &x, const T &y, const T &z) {
| ^
1 error generated.
[614/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2f.dir/exp2f.cpp.obj
[615/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expm1f.dir/expm1f.cpp.obj
[616/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysignl.dir/copysignl.cpp.obj
[617/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtof.dir/strtof.cpp.obj
[618/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtod.dir/strtod.cpp.obj
[619/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtof_l.dir/strtof_l.cpp.obj
[620/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2m1f.dir/exp2m1f.cpp.obj
[621/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10m1f.dir/exp10m1f.cpp.obj
[622/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtold.dir/strtold.cpp.obj
[623/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtod_l.dir/strtod_l.cpp.obj
[624/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexp.dir/frexp.cpp.obj
[625/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10f.dir/exp10f.cpp.obj
[626/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexpf.dir/frexpf.cpp.obj
[627/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtold_l.dir/strtold_l.cpp.obj
[628/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llogb.dir/llogb.cpp.obj
[629/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogb.dir/ilogb.cpp.obj
[630/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2.dir/exp2.cpp.obj
[631/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexpl.dir/frexpl.cpp.obj
[632/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogbf.dir/ilogbf.cpp.obj
[633/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogbl.dir/ilogbl.cpp.obj
[634/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10.dir/exp10.cpp.obj
[635/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expm1.dir/expm1.cpp.obj
[636/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.modff.dir/modff.cpp.obj
[637/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.log2f.dir/log2f.cpp.obj
[638/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.fminl.dir/fminl.cpp.obj
[639/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llogbl.dir/llogbl.cpp.obj
Step 6 (build) failure: build (failure)
...
[604/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.lrintl.dir/lrintl.cpp.obj
[605/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintf.dir/nearbyintf.cpp.obj
[606/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.erff.dir/erff.cpp.obj
[607/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintl.dir/llrintl.cpp.obj
[608/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintl.dir/nearbyintl.cpp.obj
[609/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysign.dir/copysign.cpp.obj
[610/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysignf.dir/copysignf.cpp.obj
[611/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.atof.dir/atof.cpp.obj
[612/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expf.dir/expf.cpp.obj
[613/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj
FAILED: libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj
/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/./bin/clang++ --target=armv6m-none-eabi -DLIBC_NAMESPACE=__llvm_libc_21_0_0_git -I/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc -isystem /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/include/armv6m-unknown-none-eabi --target=armv6m-none-eabi -Wno-atomic-alignment "-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)" "-Dfprintf(stream, format, ...)=printf(format)" -D_LIBCPP_PRINT=1 -mthumb -fPIC -fno-semantic-interposition -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 -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -ffunction-sections -fdata-sections -ffile-prefix-map=/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-x_d6ortc/runtimes/runtimes-armv6m-none-eabi-bins=../../../../llvm-project -ffile-prefix-map=/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/= -no-canonical-prefixes -Os -DNDEBUG --target=armv6m-none-eabi -DLIBC_QSORT_IMPL=LIBC_QSORT_HEAP_SORT -DLIBC_TYPES_TIME_T_IS_32_BIT -DLIBC_ADD_NULL_CHECKS "-DLIBC_MATH=(LIBC_MATH_SKIP_ACCURATE_PASS | LIBC_MATH_SMALL_TABLES)" -DLIBC_ERRNO_MODE=LIBC_ERRNO_MODE_EXTERNAL -fpie -ffreestanding -DLIBC_FULL_BUILD -nostdlibinc -ffixed-point -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 -MD -MT libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj -MF libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj.d -o libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp.dir/exp.cpp.obj -c /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/math/generic/exp.cpp
In file included from /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/math/generic/exp.cpp:10:
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/math/exp.h:70:25: error: constexpr function never produces a constant expression [-Winvalid-constexpr]
70 | static constexpr double poly_approx_d(double dx) {
| ^~~~~~~~~~~~~
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/math/exp.h:74:15: note: non-constexpr function 'multiply_add<double>' cannot be used in a constant expression
74 | double c0 = fputil::multiply_add(dx, 0.5, 1.0);
| ^
/var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/libc/src/__support/FPUtil/multiply_add.h:27:1: note: declared here
27 | multiply_add(const T &x, const T &y, const T &z) {
| ^
1 error generated.
[614/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2f.dir/exp2f.cpp.obj
[615/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expm1f.dir/expm1f.cpp.obj
[616/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.copysignl.dir/copysignl.cpp.obj
[617/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtof.dir/strtof.cpp.obj
[618/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtod.dir/strtod.cpp.obj
[619/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtof_l.dir/strtof_l.cpp.obj
[620/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2m1f.dir/exp2m1f.cpp.obj
[621/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10m1f.dir/exp10m1f.cpp.obj
[622/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtold.dir/strtold.cpp.obj
[623/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtod_l.dir/strtod_l.cpp.obj
[624/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexp.dir/frexp.cpp.obj
[625/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10f.dir/exp10f.cpp.obj
[626/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexpf.dir/frexpf.cpp.obj
[627/2518] Building CXX object libc/src/stdlib/CMakeFiles/libc.src.stdlib.strtold_l.dir/strtold_l.cpp.obj
[628/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llogb.dir/llogb.cpp.obj
[629/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogb.dir/ilogb.cpp.obj
[630/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp2.dir/exp2.cpp.obj
[631/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.frexpl.dir/frexpl.cpp.obj
[632/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogbf.dir/ilogbf.cpp.obj
[633/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.ilogbl.dir/ilogbl.cpp.obj
[634/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.exp10.dir/exp10.cpp.obj
[635/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.expm1.dir/expm1.cpp.obj
[636/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.modff.dir/modff.cpp.obj
[637/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.log2f.dir/log2f.cpp.obj
[638/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.fminl.dir/fminl.cpp.obj
[639/2518] Building CXX object libc/src/math/generic/CMakeFiles/libc.src.math.generic.llogbl.dir/llogbl.cpp.obj
```
</details>
https://github.com/llvm/llvm-project/pull/148091
More information about the llvm-commits
mailing list