[llvm] CodeGen: Remove redundant arguments to defusechain_instr_iterator (PR #135023)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 9 07:10:13 PDT 2025


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/135023

ByOperand must be false, this is implied by the iterator type.
The instr_iterator cases are a separate implementation from the single
operand defusechain_iterator.

Additionally ByInstr and ByBundle are mutually exclusive.

>From 12014eae3044f1e79413b77d25ffa4804662cb55 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 9 Apr 2025 10:45:05 +0800
Subject: [PATCH] CodeGen: Remove redundant arguments to
 defusechain_instr_iterator

ByOperand must be false, this is implied by the iterator type.
The instr_iterator cases are a separate implementation from the single
operand defusechain_iterator.

Additionally ByInstr and ByBundle are mutually exclusive.
---
 .../llvm/CodeGen/MachineRegisterInfo.h        | 37 ++++++++-----------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
index aad876d87ccfb..1d4bcbb8cab9e 100644
--- a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
+++ b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -280,15 +280,13 @@ class MachineRegisterInfo {
   template<bool Uses, bool Defs, bool SkipDebug,
            bool ByOperand, bool ByInstr, bool ByBundle>
   class defusechain_iterator;
-  template<bool Uses, bool Defs, bool SkipDebug,
-           bool ByOperand, bool ByInstr, bool ByBundle>
+  template <bool Uses, bool Defs, bool SkipDebug, bool ByInstr>
   class defusechain_instr_iterator;
 
   // Make it a friend so it can access getNextOperandForReg().
   template<bool, bool, bool, bool, bool, bool>
     friend class defusechain_iterator;
-  template<bool, bool, bool, bool, bool, bool>
-    friend class defusechain_instr_iterator;
+  template <bool, bool, bool, bool> friend class defusechain_instr_iterator;
 
   /// reg_iterator/reg_begin/reg_end - Walk all defs and uses of the specified
   /// register.
@@ -306,7 +304,7 @@ class MachineRegisterInfo {
   /// reg_instr_iterator/reg_instr_begin/reg_instr_end - Walk all defs and uses
   /// of the specified register, stepping by MachineInstr.
   using reg_instr_iterator =
-      defusechain_instr_iterator<true, true, false, false, true, false>;
+      defusechain_instr_iterator<true, true, false, /*ByInstr=*/true>;
   reg_instr_iterator reg_instr_begin(Register RegNo) const {
     return reg_instr_iterator(getRegUseDefListHead(RegNo));
   }
@@ -322,7 +320,7 @@ class MachineRegisterInfo {
   /// reg_bundle_iterator/reg_bundle_begin/reg_bundle_end - Walk all defs and uses
   /// of the specified register, stepping by bundle.
   using reg_bundle_iterator =
-      defusechain_instr_iterator<true, true, false, false, false, true>;
+      defusechain_instr_iterator<true, true, false, /*ByInstr=*/false>;
   reg_bundle_iterator reg_bundle_begin(Register RegNo) const {
     return reg_bundle_iterator(getRegUseDefListHead(RegNo));
   }
@@ -358,7 +356,7 @@ class MachineRegisterInfo {
   /// all defs and uses of the specified register, stepping by MachineInstr,
   /// skipping those marked as Debug.
   using reg_instr_nodbg_iterator =
-      defusechain_instr_iterator<true, true, true, false, true, false>;
+      defusechain_instr_iterator<true, true, true, /*ByInstr=*/true>;
   reg_instr_nodbg_iterator reg_instr_nodbg_begin(Register RegNo) const {
     return reg_instr_nodbg_iterator(getRegUseDefListHead(RegNo));
   }
@@ -375,7 +373,7 @@ class MachineRegisterInfo {
   /// all defs and uses of the specified register, stepping by bundle,
   /// skipping those marked as Debug.
   using reg_bundle_nodbg_iterator =
-      defusechain_instr_iterator<true, true, true, false, false, true>;
+      defusechain_instr_iterator<true, true, true, /*ByInstr=*/false>;
   reg_bundle_nodbg_iterator reg_bundle_nodbg_begin(Register RegNo) const {
     return reg_bundle_nodbg_iterator(getRegUseDefListHead(RegNo));
   }
@@ -409,7 +407,7 @@ class MachineRegisterInfo {
   /// def_instr_iterator/def_instr_begin/def_instr_end - Walk all defs of the
   /// specified register, stepping by MachineInst.
   using def_instr_iterator =
-      defusechain_instr_iterator<false, true, false, false, true, false>;
+      defusechain_instr_iterator<false, true, false, /*ByInstr=*/true>;
   def_instr_iterator def_instr_begin(Register RegNo) const {
     return def_instr_iterator(getRegUseDefListHead(RegNo));
   }
@@ -425,7 +423,7 @@ class MachineRegisterInfo {
   /// def_bundle_iterator/def_bundle_begin/def_bundle_end - Walk all defs of the
   /// specified register, stepping by bundle.
   using def_bundle_iterator =
-      defusechain_instr_iterator<false, true, false, false, false, true>;
+      defusechain_instr_iterator<false, true, false, /*ByInstr=*/false>;
   def_bundle_iterator def_bundle_begin(Register RegNo) const {
     return def_bundle_iterator(getRegUseDefListHead(RegNo));
   }
@@ -489,7 +487,7 @@ class MachineRegisterInfo {
   /// use_instr_iterator/use_instr_begin/use_instr_end - Walk all uses of the
   /// specified register, stepping by MachineInstr.
   using use_instr_iterator =
-      defusechain_instr_iterator<true, false, false, false, true, false>;
+      defusechain_instr_iterator<true, false, false, /*ByInstr=*/true>;
   use_instr_iterator use_instr_begin(Register RegNo) const {
     return use_instr_iterator(getRegUseDefListHead(RegNo));
   }
@@ -505,7 +503,7 @@ class MachineRegisterInfo {
   /// use_bundle_iterator/use_bundle_begin/use_bundle_end - Walk all uses of the
   /// specified register, stepping by bundle.
   using use_bundle_iterator =
-      defusechain_instr_iterator<true, false, false, false, false, true>;
+      defusechain_instr_iterator<true, false, false, /*ByInstr=*/false>;
   use_bundle_iterator use_bundle_begin(Register RegNo) const {
     return use_bundle_iterator(getRegUseDefListHead(RegNo));
   }
@@ -547,7 +545,7 @@ class MachineRegisterInfo {
   /// all uses of the specified register, stepping by MachineInstr, skipping
   /// those marked as Debug.
   using use_instr_nodbg_iterator =
-      defusechain_instr_iterator<true, false, true, false, true, false>;
+      defusechain_instr_iterator<true, false, true, /*ByInstr=*/true>;
   use_instr_nodbg_iterator use_instr_nodbg_begin(Register RegNo) const {
     return use_instr_nodbg_iterator(getRegUseDefListHead(RegNo));
   }
@@ -564,7 +562,7 @@ class MachineRegisterInfo {
   /// all uses of the specified register, stepping by bundle, skipping
   /// those marked as Debug.
   using use_bundle_nodbg_iterator =
-      defusechain_instr_iterator<true, false, true, false, false, true>;
+      defusechain_instr_iterator<true, false, true, /*ByInstr=*/false>;
   use_bundle_nodbg_iterator use_bundle_nodbg_begin(Register RegNo) const {
     return use_bundle_nodbg_iterator(getRegUseDefListHead(RegNo));
   }
@@ -1151,8 +1149,7 @@ class MachineRegisterInfo {
   /// returns defs.  If neither are true then you are silly and it always
   /// returns end().  If SkipDebug is true it skips uses marked Debug
   /// when incrementing.
-  template <bool ReturnUses, bool ReturnDefs, bool SkipDebug, bool ByOperand,
-            bool ByInstr, bool ByBundle>
+  template <bool ReturnUses, bool ReturnDefs, bool SkipDebug, bool ByInstr>
   class defusechain_instr_iterator {
     friend class MachineRegisterInfo;
 
@@ -1210,14 +1207,12 @@ class MachineRegisterInfo {
     // Iterator traversal: forward iteration only
     defusechain_instr_iterator &operator++() {          // Preincrement
       assert(Op && "Cannot increment end iterator!");
-      if (ByOperand)
-        advance();
-      else if (ByInstr) {
+      if (ByInstr) {
         MachineInstr *P = Op->getParent();
         do {
           advance();
         } while (Op && Op->getParent() == P);
-      } else if (ByBundle) {
+      } else {
         MachineBasicBlock::instr_iterator P =
             getBundleStart(Op->getParent()->getIterator());
         do {
@@ -1234,7 +1229,7 @@ class MachineRegisterInfo {
     // Retrieve a reference to the current operand.
     MachineInstr &operator*() const {
       assert(Op && "Cannot dereference end iterator!");
-      if (ByBundle)
+      if (!ByInstr)
         return *getBundleStart(Op->getParent()->getIterator());
       return *Op->getParent();
     }



More information about the llvm-commits mailing list