Skip to content

Commit e75789a

Browse files
committed
Integrate llvm#124327
1 parent 27598ab commit e75789a

File tree

11 files changed

+2367
-2186
lines changed

11 files changed

+2367
-2186
lines changed

llvm/include/llvm/CodeGen/MachineRegisterInfo.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "llvm/ADT/iterator_range.h"
2424
#include "llvm/CodeGen/MachineBasicBlock.h"
2525
#include "llvm/CodeGen/MachineFunction.h"
26+
#include "llvm/CodeGen/MachineInstr.h"
2627
#include "llvm/CodeGen/MachineInstrBundle.h"
2728
#include "llvm/CodeGen/MachineOperand.h"
2829
#include "llvm/CodeGen/RegisterBank.h"
@@ -592,6 +593,9 @@ class MachineRegisterInfo {
592593
/// multiple uses.
593594
bool hasOneNonDBGUser(Register RegNo) const;
594595

596+
/// If the register has a single non-Debug instruction using the specified
597+
/// register, returns it; otherwise returns nullptr.
598+
MachineInstr *getOneNonDBGUser(Register RegNo) const;
595599

596600
/// hasAtMostUses - Return true if the given register has at most \p MaxUsers
597601
/// non-debug user instructions.

llvm/lib/CodeGen/MachineRegisterInfo.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,11 @@ bool MachineRegisterInfo::hasOneNonDBGUser(Register RegNo) const {
432432
return hasSingleElement(use_nodbg_instructions(RegNo));
433433
}
434434

435+
MachineInstr *MachineRegisterInfo::getOneNonDBGUser(Register RegNo) const {
436+
auto RegNoDbgUsers = use_nodbg_instructions(RegNo);
437+
return hasSingleElement(RegNoDbgUsers) ? &*RegNoDbgUsers.begin() : nullptr;
438+
}
439+
435440
bool MachineRegisterInfo::hasAtMostUserInstrs(Register Reg,
436441
unsigned MaxUsers) const {
437442
return hasNItemsOrLess(use_instr_nodbg_begin(Reg), use_instr_nodbg_end(),

0 commit comments

Comments
 (0)