diff options
| author | Karan Janthe <karanjanthe@gmail.com> | 2025-06-30 14:29:59 +0000 |
|---|---|---|
| committer | Karan Janthe <karanjanthe@gmail.com> | 2025-07-02 02:55:21 +0000 |
| commit | 5773d38c7a7d522e6d867de1e57375d129ae478e (patch) | |
| tree | 28984886276fbd6a8fda80f3829825202333d56d | |
| parent | 4e973370053a5fe87ee96d43c506623e9bd1eb9d (diff) | |
| download | rust-5773d38c7a7d522e6d867de1e57375d129ae478e.tar.gz rust-5773d38c7a7d522e6d867de1e57375d129ae478e.zip | |
fix: Fix TypePrintFn flag passing for autodiff codegen
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 13 | ||||
| m--------- | src/tools/enzyme | 0 |
2 files changed, 13 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp index d4a05fbbbc5..7771b41bd66 100644 --- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp @@ -700,6 +700,10 @@ struct LLVMRustSanitizerOptions { #ifdef ENZYME extern "C" void registerEnzymeAndPassPipeline(llvm::PassBuilder &PB, /* augmentPassBuilder */ bool); + +extern "C" { +extern llvm::cl::opt<std::string> EnzymeFunctionToAnalyze; +} #endif extern "C" LLVMRustResult LLVMRustOptimize( @@ -1069,6 +1073,15 @@ extern "C" LLVMRustResult LLVMRustOptimize( return LLVMRustResult::Failure; } + // Check if PrintTAFn was used and add type analysis pass if needed + if (!EnzymeFunctionToAnalyze.empty()) { + if (auto Err = PB.parsePassPipeline(MPM, "print-type-analysis")) { + std::string ErrMsg = toString(std::move(Err)); + LLVMRustSetLastError(ErrMsg.c_str()); + return LLVMRustResult::Failure; + } + } + if (PrintAfterEnzyme) { // Handle the Rust flag `-Zautodiff=PrintModAfter`. std::string Banner = "Module after EnzymeNewPM"; diff --git a/src/tools/enzyme b/src/tools/enzyme -Subproject b5098d515d5e1bd0f5470553bc0d18da9794ca8 +Subproject 0f65f31837a608db469ebde94adbc921be70bd8 |
