[llvm] [Clang][CodeGen] Improve support for NPM codegen (PR #210248)

Vikram Hegde via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 27 23:31:46 PDT 2026


https://github.com/vikramRH updated https://github.com/llvm/llvm-project/pull/210248

>From 7d57b17ec105a66da33139c17311fec39f932f9a Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Thu, 16 Jul 2026 16:12:34 +0530
Subject: [PATCH] [CodeGen][NewPM] Register SI callbacks and target analyses
 before PassBuilder defaults

---
 llvm/lib/Passes/RunCodeGen.cpp | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/Passes/RunCodeGen.cpp b/llvm/lib/Passes/RunCodeGen.cpp
index 0ba67d01c3a9b..fee9b8f4e00de 100644
--- a/llvm/lib/Passes/RunCodeGen.cpp
+++ b/llvm/lib/Passes/RunCodeGen.cpp
@@ -17,6 +17,7 @@
 #include "llvm/IR/LegacyPassManager.h"
 #include "llvm/IR/PassManager.h"
 #include "llvm/Passes/PassBuilder.h"
+#include "llvm/Passes/StandardInstrumentations.h"
 #include "llvm/Support/CodeGen.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/ToolOutputFile.h"
@@ -75,6 +76,18 @@ static Error runCodeGenPipelineNewPM(TargetMachine &TM, Module &M,
   PipelineTuningOptions PTOptions;
   TargetMachine *TMPointer = &TM;
   PassBuilder PB(TMPointer, PTOptions, std::nullopt, &PIC, VFS);
+
+  StandardInstrumentations SI(M.getContext(), /*DebugLogging=*/false);
+  SI.registerCallbacks(PIC, &MAM);
+
+  TargetLibraryInfoImpl TLII(M.getTargetTriple());
+  FAM.registerPass([&] { return TargetLibraryAnalysis(TLII); });
+  MAM.registerPass([&] { return MachineModuleAnalysis(MMI); });
+  MAM.registerPass([&] {
+    const llvm::TargetOptions &Options = TM.Options;
+    return RuntimeLibraryAnalysis(Options.MCOptions.ABIName, Options.VecLib);
+  });
+
   PB.registerModuleAnalyses(MAM);
   PB.registerCGSCCAnalyses(CGAM);
   PB.registerFunctionAnalyses(FAM);
@@ -82,8 +95,6 @@ static Error runCodeGenPipelineNewPM(TargetMachine &TM, Module &M,
   PB.registerMachineFunctionAnalyses(MFAM);
   PB.crossRegisterProxies(LAM, FAM, CGAM, MAM, &MFAM);
 
-  MAM.registerPass([&] { return MachineModuleAnalysis(MMI); });
-
   Error BuildPipelineError =
       TM.buildCodeGenPipeline(MPM, MAM, OS, DwoOS ? &DwoOS->os() : nullptr,
                               CGFT, Opt, MMI.getContext(), &PIC);



More information about the llvm-commits mailing list