[llvm] [CodeGen][NPM] Disable Machine verifier at the end of default pipelines (PR #208357)

Vikram Hegde via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 8 17:38:07 PDT 2026


https://github.com/vikramRH created https://github.com/llvm/llvm-project/pull/208357

[CodeGen][NPM] Disable Machine verifier at the end of default pipelines

add a target option to disable machine verifier

>From 23a70e5e2acdca884dc48f4173e107b946fedf74 Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Fri, 16 Jan 2026 16:45:41 +0530
Subject: [PATCH 1/2] [CodeGen][NPM] Disable Machine verifier at the end of
 default pipelines

---
 llvm/include/llvm/Passes/CodeGenPassBuilder.h | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index 3840b90c70811..f6add2e07cbec 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -618,9 +618,6 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
   if (auto Err = derived().addMachinePasses(PMW))
     return std::move(Err);
 
-  if (!Opt.DisableVerify)
-    addMachineFunctionPass(MachineVerifierPass(), PMW);
-
   if (PrintAsm) {
     derived().addAsmPrinter(PMW);
     flushFPMsToMPM(PMW, /*FreeMachineFunctions=*/true);

>From 212363b35f4284cc2bed24579a58614cd7e31b98 Mon Sep 17 00:00:00 2001
From: vikhegde <vikram.hegde at amd.com>
Date: Mon, 9 Feb 2026 19:34:15 +0530
Subject: [PATCH 2/2] add a target option to disable machine verifier

---
 llvm/include/llvm/Passes/CodeGenPassBuilder.h  |  3 +++
 llvm/include/llvm/Target/TargetMachine.h       |  3 +++
 llvm/include/llvm/Target/TargetOptions.h       | 14 +++++++++-----
 llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp |  4 +++-
 llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll   |  3 ---
 5 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index f6add2e07cbec..6a93e61ea111d 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -618,6 +618,9 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
   if (auto Err = derived().addMachinePasses(PMW))
     return std::move(Err);
 
+  if (!Opt.DisableVerify && TM.Options.EnableDefaultMachineVerifier)
+    addMachineFunctionPass(MachineVerifierPass(), PMW);
+
   if (PrintAsm) {
     derived().addAsmPrinter(PMW);
     flushFPMsToMPM(PMW, /*FreeMachineFunctions=*/true);
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
index 6fdd603092fc6..03c82913c94fc 100644
--- a/llvm/include/llvm/Target/TargetMachine.h
+++ b/llvm/include/llvm/Target/TargetMachine.h
@@ -312,6 +312,9 @@ class LLVM_ABI TargetMachine {
   void setSupportsDebugEntryValues(bool Enable) {
     Options.SupportsDebugEntryValues = Enable;
   }
+  void setEnableDefaultMachineVerifier(bool Enable) {
+    Options.EnableDefaultMachineVerifier = Enable;
+  }
 
   void setCFIFixup(bool Enable) { Options.EnableCFIFixup = Enable; }
 
diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h
index 4b589926615fd..dc8b2ebceee46 100644
--- a/llvm/include/llvm/Target/TargetOptions.h
+++ b/llvm/include/llvm/Target/TargetOptions.h
@@ -132,11 +132,11 @@ class TargetOptions {
         EmitStackSizeSection(false), EnableMachineOutliner(false),
         EnableMachineFunctionSplitter(false),
         EnableStaticDataPartitioning(false), SupportsDefaultOutlining(false),
-        EmitAddrsig(false), BBAddrMap(false), EmitCallGraphSection(false),
-        EmitCallSiteInfo(false), SupportsDebugEntryValues(false),
-        EnableDebugEntryValues(false), ValueTrackingVariableLocations(false),
-        ForceDwarfFrameSection(false), XRayFunctionIndex(true),
-        DebugStrictDwarf(false), Hotpatch(false),
+        EnableDefaultMachineVerifier(true), EmitAddrsig(false),
+        BBAddrMap(false), EmitCallGraphSection(false), EmitCallSiteInfo(false),
+        SupportsDebugEntryValues(false), EnableDebugEntryValues(false),
+        ValueTrackingVariableLocations(false), ForceDwarfFrameSection(false),
+        XRayFunctionIndex(true), DebugStrictDwarf(false), Hotpatch(false),
         PPCGenScalarMASSEntries(false), JMCInstrument(false),
         EnableCFIFixup(false), MisExpect(false), XCOFFReadOnlyPointers(false),
         VerifyArgABICompliance(true) {}
@@ -273,6 +273,10 @@ class TargetOptions {
   /// Set if the target supports default outlining behaviour.
   unsigned SupportsDefaultOutlining : 1;
 
+  /// Enable Machine verifier at the end of default codegen pipelines. (Only
+  /// used with NPM)
+  unsigned EnableDefaultMachineVerifier : 1;
+
   /// Emit address-significance table.
   unsigned EmitAddrsig : 1;
 
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index b07905a71b16f..8bdead574def5 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -1249,7 +1249,9 @@ GCNTargetMachine::GCNTargetMachine(const Target &T, const Triple &TT,
                                    std::optional<Reloc::Model> RM,
                                    std::optional<CodeModel::Model> CM,
                                    CodeGenOptLevel OL, bool JIT)
-    : AMDGPUTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL) {}
+    : AMDGPUTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL) {
+  setEnableDefaultMachineVerifier(false);
+}
 
 enum class OOBFlagValue {
   Any = 0,
diff --git a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
index 865058fa1d92c..2f3bc3f259e89 100644
--- a/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
+++ b/llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll
@@ -103,7 +103,6 @@
 ; GCN-O0-NEXT:       machine-sanmd
 ; GCN-O0-NEXT:       amdgpu-preload-kern-arg-prolog
 ; GCN-O0-NEXT:       stack-frame-layout
-; GCN-O0-NEXT:       verify
 ; GCN-O0-NEXT:       amdgpu-asm-printer
 ; GCN-O0-NEXT:     free-machine-function 
 ; GCN-O0-NEXT: amdgpu-asm-printer-end
@@ -292,7 +291,6 @@
 ; GCN-O2-NEXT:       machine-sanmd
 ; GCN-O2-NEXT:       amdgpu-preload-kern-arg-prolog
 ; GCN-O2-NEXT:       stack-frame-layout
-; GCN-O2-NEXT:       verify
 ; GCN-O2-NEXT:       amdgpu-asm-printer
 ; GCN-O2-NEXT:     free-machine-function
 ; GCN-O2-NEXT: amdgpu-asm-printer-end
@@ -481,7 +479,6 @@
 ; GCN-O3-NEXT:       machine-sanmd
 ; GCN-O3-NEXT:       amdgpu-preload-kern-arg-prolog
 ; GCN-O3-NEXT:       stack-frame-layout
-; GCN-O3-NEXT:       verify
 ; GCN-O3-NEXT:       amdgpu-asm-printer
 ; GCN-O3-NEXT:     free-machine-function
 ; GCN-O3-NEXT: amdgpu-asm-printer-end



More information about the llvm-commits mailing list