[llvm] CodeGen: Trim redundant template argument from defusechain_iterator (PR #135024)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 9 09:24:48 PDT 2025
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/135024
>From dfb7559070bb75c5443452e26567c70a3fd8d620 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 9 Apr 2025 12:20:48 +0800
Subject: [PATCH] CodeGen: Trim redundant template argument from
defusechain_iterator
Only one of ByOperand, ByInstr, or ByBundle should be true. Replace
ByBundle with !ByInstr, and assert that both are not used.
---
.../llvm/CodeGen/MachineRegisterInfo.h | 25 ++++++++-----------
1 file changed, 11 insertions(+), 14 deletions(-)
diff --git a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
index 1d4bcbb8cab9e..8e288cf212360 100644
--- a/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
+++ b/llvm/include/llvm/CodeGen/MachineRegisterInfo.h
@@ -277,21 +277,18 @@ class MachineRegisterInfo {
/// reg_begin/reg_end - Provide iteration support to walk over all definitions
/// and uses of a register within the MachineFunction that corresponds to this
/// MachineRegisterInfo object.
- template<bool Uses, bool Defs, bool SkipDebug,
- bool ByOperand, bool ByInstr, bool ByBundle>
+ template <bool Uses, bool Defs, bool SkipDebug, bool ByOperand, bool ByInstr>
class defusechain_iterator;
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> friend class defusechain_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.
- using reg_iterator =
- defusechain_iterator<true, true, false, true, false, false>;
+ using reg_iterator = defusechain_iterator<true, true, false, true, false>;
reg_iterator reg_begin(Register RegNo) const {
return reg_iterator(getRegUseDefListHead(RegNo));
}
@@ -339,7 +336,7 @@ class MachineRegisterInfo {
/// reg_nodbg_iterator/reg_nodbg_begin/reg_nodbg_end - Walk all defs and uses
/// of the specified register, skipping those marked as Debug.
using reg_nodbg_iterator =
- defusechain_iterator<true, true, true, true, false, false>;
+ defusechain_iterator<true, true, true, true, false>;
reg_nodbg_iterator reg_nodbg_begin(Register RegNo) const {
return reg_nodbg_iterator(getRegUseDefListHead(RegNo));
}
@@ -393,8 +390,7 @@ class MachineRegisterInfo {
}
/// def_iterator/def_begin/def_end - Walk all defs of the specified register.
- using def_iterator =
- defusechain_iterator<false, true, false, true, false, false>;
+ using def_iterator = defusechain_iterator<false, true, false, true, false>;
def_iterator def_begin(Register RegNo) const {
return def_iterator(getRegUseDefListHead(RegNo));
}
@@ -473,8 +469,7 @@ class MachineRegisterInfo {
}
/// use_iterator/use_begin/use_end - Walk all uses of the specified register.
- using use_iterator =
- defusechain_iterator<true, false, false, true, false, false>;
+ using use_iterator = defusechain_iterator<true, false, false, true, false>;
use_iterator use_begin(Register RegNo) const {
return use_iterator(getRegUseDefListHead(RegNo));
}
@@ -528,7 +523,7 @@ class MachineRegisterInfo {
/// use_nodbg_iterator/use_nodbg_begin/use_nodbg_end - Walk all uses of the
/// specified register, skipping those marked as Debug.
using use_nodbg_iterator =
- defusechain_iterator<true, false, true, true, false, false>;
+ defusechain_iterator<true, false, true, true, false>;
use_nodbg_iterator use_nodbg_begin(Register RegNo) const {
return use_nodbg_iterator(getRegUseDefListHead(RegNo));
}
@@ -1045,9 +1040,11 @@ class MachineRegisterInfo {
/// 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>
+ bool ByInstr>
class defusechain_iterator {
friend class MachineRegisterInfo;
+ static_assert(!ByOperand || !ByInstr,
+ "ByOperand and ByInstr are mutually exclusive");
public:
using iterator_category = std::forward_iterator_tag;
@@ -1110,7 +1107,7 @@ class MachineRegisterInfo {
do {
advance();
} while (Op && Op->getParent() == P);
- } else if (ByBundle) {
+ } else {
MachineBasicBlock::instr_iterator P =
getBundleStart(Op->getParent()->getIterator());
do {
More information about the llvm-commits
mailing list