[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