[llvm] [CodeGen][NPM] Add support for -print-regusage in New Pass Manager (PR #169761)

via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 2 22:39:52 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Teja Alaghari (TejaX-Alaghari)

<details>
<summary>Changes</summary>

Legacy pass manager uses `doFinalization()` method called at the end of module processing to print register usage information when `-print-regusage` flag is passed.

This patch attempts to add an alternative mechanism to support this functionality in the NPM.

---
Full diff: https://github.com/llvm/llvm-project/pull/169761.diff


3 Files Affected:

- (modified) llvm/include/llvm/CodeGen/RegisterUsageInfo.h (+1) 
- (modified) llvm/lib/CodeGen/RegisterUsageInfo.cpp (+9) 
- (modified) llvm/test/CodeGen/AMDGPU/ipra-regmask.ll (+1) 


``````````diff
diff --git a/llvm/include/llvm/CodeGen/RegisterUsageInfo.h b/llvm/include/llvm/CodeGen/RegisterUsageInfo.h
index 9b0d30426f1d3..04acaf380405e 100644
--- a/llvm/include/llvm/CodeGen/RegisterUsageInfo.h
+++ b/llvm/include/llvm/CodeGen/RegisterUsageInfo.h
@@ -34,6 +34,7 @@ class TargetMachine;
 
 class PhysicalRegisterUsageInfo {
 public:
+  ~PhysicalRegisterUsageInfo();
   /// Set TargetMachine which is used to print analysis.
   void setTargetMachine(const TargetMachine &TM);
 
diff --git a/llvm/lib/CodeGen/RegisterUsageInfo.cpp b/llvm/lib/CodeGen/RegisterUsageInfo.cpp
index 2ef380fc7cad4..48466381f4d3e 100644
--- a/llvm/lib/CodeGen/RegisterUsageInfo.cpp
+++ b/llvm/lib/CodeGen/RegisterUsageInfo.cpp
@@ -56,6 +56,15 @@ bool PhysicalRegisterUsageInfo::doFinalization(Module &M) {
   return false;
 }
 
+PhysicalRegisterUsageInfo::~PhysicalRegisterUsageInfo() {
+  // As doFinalization() is not called for analysis results in the new PM,
+  // we print the register usage information here.
+  if (DumpRegUsage && TM)
+    print(errs());
+
+  RegMasks.shrink_and_clear();
+}
+
 void PhysicalRegisterUsageInfo::storeUpdateRegUsageInfo(
     const Function &FP, ArrayRef<uint32_t> RegMask) {
   RegMasks[&FP] = RegMask;
diff --git a/llvm/test/CodeGen/AMDGPU/ipra-regmask.ll b/llvm/test/CodeGen/AMDGPU/ipra-regmask.ll
index dc4bf21ab1269..052f1dd1e1c92 100644
--- a/llvm/test/CodeGen/AMDGPU/ipra-regmask.ll
+++ b/llvm/test/CodeGen/AMDGPU/ipra-regmask.ll
@@ -1,5 +1,6 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -enable-ipra -print-regusage -filetype=null 2>&1 < %s | FileCheck %s
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -enable-new-pm=1 -enable-ipra -print-regusage -filetype=null 2>&1 < %s | FileCheck %s
 
 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -stop-after=prologepilog -o - %s \
 ; RUN:   | llc -x=mir -mtriple=amdgcn-amd-amdhsa -passes="module(require<reg-usage>,function(machine-function(reg-usage-collector)),print<reg-usage>)" -filetype=null 2>&1 \

``````````

</details>


https://github.com/llvm/llvm-project/pull/169761


More information about the llvm-commits mailing list