Issue 176913
Summary compiler-rt windows 32-bit builtins tests fail in runtimes build
Labels compiler-rt:builtins
Assignees
Reporter zmodem
    Similarly to #176892: #171941 enabled builtins tests which previously didn't run as part of the runtimes build. This is a good thing in general, except some tests fail.

In this case, the 32-bit builtins, like clzsi2_test.c etc fail. See logs below.

The errors seems to come from the tests trying to use i386 builtins, but invoking clang with the default target, x64.

For example, `__clzsi2` exists in the linked library, but it has an extra underscore on i386:

```
dumpbin /symbols "C:/src/llvm-project/build.test/./lib/../lib/clang/23/lib/windows\clang_rt.builtins-i386.lib" | grep __clzsi2
008 00000000 SECT4  notype ()    External     | ___clzsi2
```

Other builtins, like `__udivmodti4`, are not built for 32-bit, because it's guarded by `#ifdef CRT_HAS_128BIT` which is not set. The corresponding test has `// REQUIRES: int128` and the same `#ifdef`, but when the test runs those are set --- again the test runner doesn't seem to take into account that it should target i386.

---

```
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES=compiler-rt -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF -DBUILTINS_i386-pc-windows-msvc_LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_CRT=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_LIBFUZZER=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_CTX_PROFILE=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_MEMPROF=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_ORC=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_PROFILE=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_SANITIZERS=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_BUILD_XRAY=OFF -DRUNTIMES_i386-pc-windows-msvc_COMPILER_RT_DEFAULT_TARGET_ONLY=ON -DLLVM_BUILTIN_TARGETS=i386-pc-windows-msvc -DLLVM_RUNTIME_TARGETS=i386-pc-windows-msvc ../llvm
ninja check-runtimes
[...]
********************
Testing:  0.. 10.. 20.. 30.. 40.
FAIL: Builtins-i386-windows :: clzsi2_test.c (105 of 225, 3 of 3 attempts)
******************** TEST 'Builtins-i386-windows :: clzsi2_test.c' FAILED ********************
Exit Code: 1120

Command Output (stdout):
--
# RUN: at line 1
C:/src/llvm-project/build.test/./bin/clang.exe   -gline-tables-only -gcodeview -gcolumn-info      -fno-builtin -I C:/src/llvm-project/compiler-rt\lib\builtins -nodefaultlibs C:\src\llvm-project\compiler-rt\test\builtins\Unit\clzsi2_test.c C:/src/llvm-project/build.test/./lib/../lib/clang/23/lib/windows\clang_rt.builtins-i386.lib -o C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\clzsi2_test.c.tmp && C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\clzsi2_test.c.tmp
# executed command: C:/src/llvm-project/build.test/./bin/clang.exe -gline-tables-only -gcodeview -gcolumn-info -fno-builtin -I 'C:/src/llvm-project/compiler-rt\lib\builtins' -nodefaultlibs 'C:\src\llvm-project\compiler-rt\test\builtins\Unit\clzsi2_test.c' 'C:/src/llvm-project/build.test/./lib/../lib/clang/23/lib/windows\clang_rt.builtins-i386.lib' -o 'C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\clzsi2_test.c.tmp'
# .---command stdout------------
# | clzsi2_test-a8663f.o : error LNK2019: unresolved external symbol __clzsi2 referenced in function test__clzsi2
# | C:\src\llvm-project\build.test\.\lib\..\lib\clang\23\lib\windows\clang_rt.builtins-i386.lib : warning LNK4272: library machine type 'x86' conflicts with target machine type 'x64'
# | C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\clzsi2_test.c.tmp : fatal error LNK1120: 1 unresolved externals
# `-----------------------------
# .---command stderr------------
# | clang: error: linker command failed with exit code 1120 (use -v to see invocation)
# `-----------------------------
# error: command failed with exit status: 0x460

--
[...]
********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
FAIL: Builtins-i386-windows :: udivmodti4_test.c (225 of 225, 3 of 3 attempts)
******************** TEST 'Builtins-i386-windows :: udivmodti4_test.c' FAILED ********************
Exit Code: 1120

Command Output (stdout):
--
# RUN: at line 1
C:/src/llvm-project/build.test/./bin/clang.exe -gline-tables-only -gcodeview -gcolumn-info      -fno-builtin -I C:/src/llvm-project/compiler-rt\lib\builtins -nodefaultlibs C:\src\llvm-project\compiler-rt\test\builtins\Unit\udivmodti4_test.c C:/src/llvm-project/build.test/./lib/../lib/clang/23/lib/windows\clang_rt.builtins-i386.lib -o C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\udivmodti4_test.c.tmp && C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\udivmodti4_test.c.tmp
# executed command: C:/src/llvm-project/build.test/./bin/clang.exe -gline-tables-only -gcodeview -gcolumn-info -fno-builtin -I 'C:/src/llvm-project/compiler-rt\lib\builtins' -nodefaultlibs 'C:\src\llvm-project\compiler-rt\test\builtins\Unit\udivmodti4_test.c' 'C:/src/llvm-project/build.test/./lib/../lib/clang/23/lib/windows\clang_rt.builtins-i386.lib' -o 'C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\udivmodti4_test.c.tmp'
# .---command stdout------------
# | udivmodti4_test-1e4fa9.o : error LNK2019: unresolved external symbol __udivmodti4 referenced in function test__udivmodti4
# | C:\src\llvm-project\build.test\.\lib\..\lib\clang\23\lib\windows\clang_rt.builtins-i386.lib : warning LNK4272: library machine type 'x86' conflicts with target machine type 'x64'
# | C:\src\llvm-project\build.test\runtimes\runtimes-i386-pc-windows-msvc-bins\compiler-rt\test\builtins\Unit\I386WindowsConfig\Output\udivmodti4_test.c.tmp : fatal error LNK1120: 1 unresolved externals
# `-----------------------------
# .---command stderr------------
# | clang: error: linker command failed with exit code 1120 (use -v to see invocation)
# `-----------------------------
# error: command failed with exit status: 0x460

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
********************
Failed Tests (97):
  Builtins-i386-windows :: absvdi2_test.c
  Builtins-i386-windows :: absvsi2_test.c
  Builtins-i386-windows :: absvti2_test.c
 Builtins-i386-windows :: addvdi3_test.c
  Builtins-i386-windows :: addvsi3_test.c
  Builtins-i386-windows :: addvti3_test.c
 Builtins-i386-windows :: ashldi3_test.c
  Builtins-i386-windows :: ashlti3_test.c
  Builtins-i386-windows :: ashrdi3_test.c
 Builtins-i386-windows :: ashrti3_test.c
  Builtins-i386-windows :: bswapdi2_test.c
  Builtins-i386-windows :: bswapsi2_test.c
 Builtins-i386-windows :: clear_cache_test.c
  Builtins-i386-windows :: clzdi2_test.c
  Builtins-i386-windows :: clzsi2_test.c
 Builtins-i386-windows :: clzti2_test.c
  Builtins-i386-windows :: cmpdi2_test.c
  Builtins-i386-windows :: cmpti2_test.c
 Builtins-i386-windows :: comparedf2_test.c
  Builtins-i386-windows :: comparesf2_test.c
  Builtins-i386-windows :: ctzdi2_test.c
 Builtins-i386-windows :: ctzsi2_test.c
  Builtins-i386-windows :: ctzti2_test.c
  Builtins-i386-windows :: divdf3_test.c
 Builtins-i386-windows :: divdi3_test.c
  Builtins-i386-windows :: divmodsi4_test.c
  Builtins-i386-windows :: divmodti4_test.c
 Builtins-i386-windows :: divsf3_test.c
  Builtins-i386-windows :: divsi3_test.c
  Builtins-i386-windows :: divti3_test.c
 Builtins-i386-windows :: enable_execute_stack_test.c
  Builtins-i386-windows :: extendhfdf2_test.c
  Builtins-i386-windows :: extendhfsf2_test.c
 Builtins-i386-windows :: ffsdi2_test.c
  Builtins-i386-windows :: ffssi2_test.c
  Builtins-i386-windows :: ffsti2_test.c
 Builtins-i386-windows :: fixdfdi_test.c
  Builtins-i386-windows :: fixdfti_test.c
  Builtins-i386-windows :: fixsfdi_test.c
 Builtins-i386-windows :: fixsfti_test.c
  Builtins-i386-windows :: fixunsdfdi_test.c
  Builtins-i386-windows :: fixunsdfsi_test.c
 Builtins-i386-windows :: fixunsdfti_test.c
  Builtins-i386-windows :: fixunssfdi_test.c
  Builtins-i386-windows :: fixunssfsi_test.c
 Builtins-i386-windows :: fixunssfti_test.c
  Builtins-i386-windows :: floatdidf_test.c
  Builtins-i386-windows :: floatdisf_test.c
 Builtins-i386-windows :: floattidf_test.c
  Builtins-i386-windows :: floattisf_test.c
  Builtins-i386-windows :: floatundidf_test.c
 Builtins-i386-windows :: floatundisf_test.c
  Builtins-i386-windows :: floatuntidf_test.c
  Builtins-i386-windows :: lshrdi3_test.c
 Builtins-i386-windows :: lshrti3_test.c
  Builtins-i386-windows :: moddi3_test.c
  Builtins-i386-windows :: modsi3_test.c
 Builtins-i386-windows :: modti3_test.c
  Builtins-i386-windows :: muldi3_test.c
  Builtins-i386-windows :: mulodi4_test.c
 Builtins-i386-windows :: mulosi4_test.c
  Builtins-i386-windows :: muloti4_test.c
  Builtins-i386-windows :: mulsf3_test.c
 Builtins-i386-windows :: multi3_test.c
  Builtins-i386-windows :: mulvdi3_test.c
  Builtins-i386-windows :: mulvsi3_test.c
 Builtins-i386-windows :: mulvti3_test.c
  Builtins-i386-windows :: negdi2_test.c
  Builtins-i386-windows :: negti2_test.c
 Builtins-i386-windows :: negvdi2_test.c
  Builtins-i386-windows :: negvsi2_test.c
  Builtins-i386-windows :: negvti2_test.c
 Builtins-i386-windows :: paritydi2_test.c
  Builtins-i386-windows :: paritysi2_test.c
  Builtins-i386-windows :: parityti2_test.c
 Builtins-i386-windows :: popcountdi2_test.c
  Builtins-i386-windows :: popcountsi2_test.c
  Builtins-i386-windows :: popcountti2_test.c
 Builtins-i386-windows :: powidf2_test.c
  Builtins-i386-windows :: powisf2_test.c
  Builtins-i386-windows :: subvdi3_test.c
 Builtins-i386-windows :: subvsi3_test.c
  Builtins-i386-windows :: subvti3_test.c
  Builtins-i386-windows :: truncdfhf2_test.c
 Builtins-i386-windows :: truncdfsf2_test.c
  Builtins-i386-windows :: truncsfhf2_test.c
  Builtins-i386-windows :: ucmpdi2_test.c
 Builtins-i386-windows :: ucmpti2_test.c
  Builtins-i386-windows :: udivdi3_test.c
  Builtins-i386-windows :: udivmoddi4_test.c
 Builtins-i386-windows :: udivmodsi4_test.c
  Builtins-i386-windows :: udivmodti4_test.c
  Builtins-i386-windows :: udivsi3_test.c
 Builtins-i386-windows :: udivti3_test.c
  Builtins-i386-windows :: umoddi3_test.c
  Builtins-i386-windows :: umodsi3_test.c
 Builtins-i386-windows :: umodti3_test.c
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to