diff options
| author | Manuel Drehwald <git@manuel.drehwald.info> | 2025-02-07 01:58:48 -0500 |
|---|---|---|
| committer | Manuel Drehwald <git@manuel.drehwald.info> | 2025-02-07 01:58:48 -0500 |
| commit | 8f87e8095e3f1ebb73ec738ddd26885fdbb75e37 (patch) | |
| tree | 3db07e56494b8e7ef2c2423beda8d8adf3d778bf /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | 70b9ba3d6e1d64e6b00da707e5b1b5127e63b1cf (diff) | |
| download | rust-8f87e8095e3f1ebb73ec738ddd26885fdbb75e37.tar.gz rust-8f87e8095e3f1ebb73ec738ddd26885fdbb75e37.zip | |
get tests to work without -Z/-C flags
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp index 6447a9362b3..0063f262c9b 100644 --- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp @@ -688,6 +688,8 @@ struct LLVMRustSanitizerOptions { bool SanitizeKernelAddressRecover; }; +extern "C" void registerEnzyme(llvm::PassBuilder &PB); + extern "C" LLVMRustResult LLVMRustOptimize( LLVMModuleRef ModuleRef, LLVMTargetMachineRef TMRef, LLVMRustPassBuilderOptLevel OptLevelRust, LLVMRustOptStage OptStage, @@ -1010,6 +1012,14 @@ extern "C" LLVMRustResult LLVMRustOptimize( MPM.addPass(NameAnonGlobalPass()); } + // now load "-enzyme" pass: + registerEnzyme(PB); + if (auto Err = PB.parsePassPipeline(MPM, "enzyme")) { + std::string ErrMsg = toString(std::move(Err)); + LLVMRustSetLastError(ErrMsg.c_str()); + return LLVMRustResult::Failure; + } + // Upgrade all calls to old intrinsics first. for (Module::iterator I = TheModule->begin(), E = TheModule->end(); I != E;) UpgradeCallsToIntrinsic(&*I++); // must be post-increment, as we remove |
