about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKaran Janthe <karanjanthe@gmail.com>2025-06-30 14:29:59 +0000
committerKaran Janthe <karanjanthe@gmail.com>2025-07-02 02:55:21 +0000
commit5773d38c7a7d522e6d867de1e57375d129ae478e (patch)
tree28984886276fbd6a8fda80f3829825202333d56d
parent4e973370053a5fe87ee96d43c506623e9bd1eb9d (diff)
downloadrust-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.cpp13
m---------src/tools/enzyme0
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