Description
Likely caused by #120594. cc @saethlin
CI for compiler_builtins is failing with:
error: linking with `link.exe` failed: exit code: 1120
|
= note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.38.33130\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\rustccNjGuE\\symbols.o" "D:\\a\\compiler-builtins\\compiler-builtins\\target\\x86_64-pc-windows-msvc\\debug\\examples\\intrinsics.intrinsics.94b4869361004a03-cgu.0.rcgu.o" "/LIBPATH:D:\\a\\compiler-builtins\\compiler-builtins\\target\\x86_64-pc-windows-msvc\\debug\\deps" "/LIBPATH:D:\\a\\compiler-builtins\\compiler-builtins\\target\\debug\\deps" "/LIBPATH:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "kernel32.lib" "msvcrt.lib" "D:\\a\\compiler-builtins\\compiler-builtins\\target\\x86_64-pc-windows-msvc\\debug\\deps\\libcompiler_builtins-b84df12ffea9ddc5.rlib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:D:\\a\\compiler-builtins\\compiler-builtins\\target\\x86_64-pc-windows-msvc\\debug\\examples\\intrinsics.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\runneradmin\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis"
= note: libcompiler_builtins-b84df12ffea9ddc5.rlib(compiler_builtins-b84df12ffea9ddc5.compiler_builtins.ca00aaabc6ad635b-cgu.2.rcgu.o) : error LNK2019: unresolved external symbol _ZN4core3ptr13read_volatile18precondition_check17ha1e11d6217b519e2E referenced in function _ZN4core3ptr13read_volatile17h3fd78456f42a46ecE
libcompiler_builtins-b84df12ffea9ddc5.rlib(compiler_builtins-b84df12ffea9ddc5.compiler_builtins.ca00aaabc6ad635b-cgu.2.rcgu.o) : error LNK2019: unresolved external symbol _ZN4core10intrinsics19copy_nonoverlapping18precondition_check17h5ef2e74b4a074627E referenced in function _ZN4core3ptr14read_unaligned17h327557c7a8527effE
D:\a\compiler-builtins\compiler-builtins\target\x86_64-pc-windows-msvc\debug\examples\intrinsics.exe : fatal error LNK1120: 2 unresolved externals
The cause seems to be from a combination of factors:
- compiler-builtins cannot reference any symbols in libcore. It can only call functions marked with
#[inline]
, since those are codegen'ed into compiler_builtins.rlib. precondition_check
is marked as#[inline(never)]
, which breaks this.- The call is not eliminated because
core::intrinsics::debug_assertions
is resolved late in the codegen backend, after any MIR optimizations. - This failure happens in debug builds, so LLVM isn't eliminating the
if
branch either.