EnzymeAD / EnzymeAD/Enzyme

Enzyme should specify the full llvm lib path

Open
#2,289 6 comments 1 reaction 0 assignees View on GitHub
needs more information
Dominant language
LLVM
Stars
1.7k
Forks
188
Avg merge
1d 22h
Merged PRs (30d)
26

Description

https://github.com/rust-lang/rust/pull/140244#discussion_r2064384802

Enzyme currently links against llvm by just asking for `-llvm`, which locally can lead to it building libLLVMEnzyme-18.so against a systems llvm 18, instead of the rust llvm-20 https://github.com/rust-lang/rust/pull/140244#discussion_r2063909483. In CI, it also leads to complete build failures since the linker doesn't find llvm at all. https://github.com/rust-lang-ci/rust/actions/runs/14737612704/job/41367597667

The final, failing build command is
```
: && /Users/runner/work/rust/rust/clang+llvm-15.0.7-x86_64-apple-darwin21.0/bin/clang++ -Wall -fno-rtti -ffunction-sections -fdata-sections -fPIC -m64 --target=x86_64-apple-macosx -mmacosx-version-min=10.12 -stdlib=libc++ -fdebug-prefix-map=/Users/runner/work/rust/rust=/rustc/llvm -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull -Werror=unused-result -Werror=reorder -Werror=switch -O2 -arch x86_64 -isysroot /Applications/Xcode_15.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk -mmacosx-version-min=10.12 -dynamiclib -Wl,-headerpad_max_install_names -static-libstdc++ -o Enzyme/libEnzyme-20.dylib -install_name @rpath/libEnzyme-20.dylib Enzyme/CMakeFiles/Enzyme-20.dir/ActivityAnalysis.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/ActivityAnalysisPrinter.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/CApi.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/CacheUtility.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/CallDerivatives.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/DiffeGradientUtils.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/DifferentialUseAnalysis.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/Enzyme.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/EnzymeLogic.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/FunctionUtils.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/GradientUtils.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/InstructionBatcher.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/JLInstSimplify.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/MustExitScalarEvolution.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/PreserveNVVM.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TraceGenerator.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TraceInterface.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TraceUtils.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/Utils.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TypeAnalysis/TypeTree.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TypeAnalysis/TypeAnalysis.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TypeAnalysis/TypeAnalysisPrinter.cpp.o Enzyme/CMakeFiles/Enzyme-20.dir/TypeAnalysis/RustDebugInfo.cpp.o -lLLVM && :
```

Working x86 run for comparison: https://github.com/rust-lang/rust/pull/140064#issuecomment-2819833226

@I-Al-Istannen

The two relevant cmake files in enzyme are: [here](https://github.com/rust-lang/enzyme/blob/main/enzyme/Enzyme/CMakeLists.txt) and [here](https://github.com/rust-lang/enzyme/blob/main/enzyme/CMakeLists.txt).

Contributor guide

Open the contributing guide

Research direction

Read enzyme/Enzyme/CMakeLists.txt and enzyme/CMakeLists.txt, then compare their LLVM linking configuration with the failing CI command and the working x86 run. Verify the resulting build selects the Rust-provided LLVM library rather than a system LLVM and succeeds in the affected CI build.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, rust
Domain
build-system, compilers
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
65/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.