Skip to content

Commit 2a7f12e

Browse files
authored
CodeGen: Trim redundant template argument from defusechain_iterator (#135024)
Only one of ByOperand, ByInstr, or ByBundle should be true. Replace ByBundle with !ByInstr, and assert that both are not used.
1 parent 840b366 commit 2a7f12e

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

llvm/include/llvm/CodeGen/MachineRegisterInfo.h

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -277,21 +277,18 @@ class MachineRegisterInfo {
277277
/// reg_begin/reg_end - Provide iteration support to walk over all definitions
278278
/// and uses of a register within the MachineFunction that corresponds to this
279279
/// MachineRegisterInfo object.
280-
template<bool Uses, bool Defs, bool SkipDebug,
281-
bool ByOperand, bool ByInstr, bool ByBundle>
280+
template <bool Uses, bool Defs, bool SkipDebug, bool ByOperand, bool ByInstr>
282281
class defusechain_iterator;
283282
template <bool Uses, bool Defs, bool SkipDebug, bool ByInstr>
284283
class defusechain_instr_iterator;
285284

286285
// Make it a friend so it can access getNextOperandForReg().
287-
template<bool, bool, bool, bool, bool, bool>
288-
friend class defusechain_iterator;
286+
template <bool, bool, bool, bool, bool> friend class defusechain_iterator;
289287
template <bool, bool, bool, bool> friend class defusechain_instr_iterator;
290288

291289
/// reg_iterator/reg_begin/reg_end - Walk all defs and uses of the specified
292290
/// register.
293-
using reg_iterator =
294-
defusechain_iterator<true, true, false, true, false, false>;
291+
using reg_iterator = defusechain_iterator<true, true, false, true, false>;
295292
reg_iterator reg_begin(Register RegNo) const {
296293
return reg_iterator(getRegUseDefListHead(RegNo));
297294
}
@@ -339,7 +336,7 @@ class MachineRegisterInfo {
339336
/// reg_nodbg_iterator/reg_nodbg_begin/reg_nodbg_end - Walk all defs and uses
340337
/// of the specified register, skipping those marked as Debug.
341338
using reg_nodbg_iterator =
342-
defusechain_iterator<true, true, true, true, false, false>;
339+
defusechain_iterator<true, true, true, true, false>;
343340
reg_nodbg_iterator reg_nodbg_begin(Register RegNo) const {
344341
return reg_nodbg_iterator(getRegUseDefListHead(RegNo));
345342
}
@@ -393,8 +390,7 @@ class MachineRegisterInfo {
393390
}
394391

395392
/// def_iterator/def_begin/def_end - Walk all defs of the specified register.
396-
using def_iterator =
397-
defusechain_iterator<false, true, false, true, false, false>;
393+
using def_iterator = defusechain_iterator<false, true, false, true, false>;
398394
def_iterator def_begin(Register RegNo) const {
399395
return def_iterator(getRegUseDefListHead(RegNo));
400396
}
@@ -473,8 +469,7 @@ class MachineRegisterInfo {
473469
}
474470

475471
/// use_iterator/use_begin/use_end - Walk all uses of the specified register.
476-
using use_iterator =
477-
defusechain_iterator<true, false, false, true, false, false>;
472+
using use_iterator = defusechain_iterator<true, false, false, true, false>;
478473
use_iterator use_begin(Register RegNo) const {
479474
return use_iterator(getRegUseDefListHead(RegNo));
480475
}
@@ -528,7 +523,7 @@ class MachineRegisterInfo {
528523
/// use_nodbg_iterator/use_nodbg_begin/use_nodbg_end - Walk all uses of the
529524
/// specified register, skipping those marked as Debug.
530525
using use_nodbg_iterator =
531-
defusechain_iterator<true, false, true, true, false, false>;
526+
defusechain_iterator<true, false, true, true, false>;
532527
use_nodbg_iterator use_nodbg_begin(Register RegNo) const {
533528
return use_nodbg_iterator(getRegUseDefListHead(RegNo));
534529
}
@@ -1045,9 +1040,11 @@ class MachineRegisterInfo {
10451040
/// returns end(). If SkipDebug is true it skips uses marked Debug
10461041
/// when incrementing.
10471042
template <bool ReturnUses, bool ReturnDefs, bool SkipDebug, bool ByOperand,
1048-
bool ByInstr, bool ByBundle>
1043+
bool ByInstr>
10491044
class defusechain_iterator {
10501045
friend class MachineRegisterInfo;
1046+
static_assert(!ByOperand || !ByInstr,
1047+
"ByOperand and ByInstr are mutually exclusive");
10511048

10521049
public:
10531050
using iterator_category = std::forward_iterator_tag;
@@ -1110,7 +1107,7 @@ class MachineRegisterInfo {
11101107
do {
11111108
advance();
11121109
} while (Op && Op->getParent() == P);
1113-
} else if (ByBundle) {
1110+
} else {
11141111
MachineBasicBlock::instr_iterator P =
11151112
getBundleStart(Op->getParent()->getIterator());
11161113
do {

0 commit comments

Comments
 (0)