forked from OSchip/llvm-project
[NFC] add/modify wrapper function for findRegisterDefOperand().
llvm-svn: 354438
This commit is contained in:
parent
f3d4166132
commit
b934fce613
|
@ -1199,12 +1199,22 @@ public:
|
||||||
|
|
||||||
/// Wrapper for findRegisterDefOperandIdx, it returns
|
/// Wrapper for findRegisterDefOperandIdx, it returns
|
||||||
/// a pointer to the MachineOperand rather than an index.
|
/// a pointer to the MachineOperand rather than an index.
|
||||||
MachineOperand *findRegisterDefOperand(unsigned Reg, bool isDead = false,
|
MachineOperand *
|
||||||
const TargetRegisterInfo *TRI = nullptr) {
|
findRegisterDefOperand(unsigned Reg, bool isDead = false,
|
||||||
int Idx = findRegisterDefOperandIdx(Reg, isDead, false, TRI);
|
bool Overlap = false,
|
||||||
|
const TargetRegisterInfo *TRI = nullptr) {
|
||||||
|
int Idx = findRegisterDefOperandIdx(Reg, isDead, Overlap, TRI);
|
||||||
return (Idx == -1) ? nullptr : &getOperand(Idx);
|
return (Idx == -1) ? nullptr : &getOperand(Idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const MachineOperand *
|
||||||
|
findRegisterDefOperand(unsigned Reg, bool isDead = false,
|
||||||
|
bool Overlap = false,
|
||||||
|
const TargetRegisterInfo *TRI = nullptr) const {
|
||||||
|
return const_cast<MachineInstr *>(this)->findRegisterDefOperand(
|
||||||
|
Reg, isDead, Overlap, TRI);
|
||||||
|
}
|
||||||
|
|
||||||
/// Find the index of the first operand in the
|
/// Find the index of the first operand in the
|
||||||
/// operand list that is used to represent the predicate. It returns -1 if
|
/// operand list that is used to represent the predicate. It returns -1 if
|
||||||
/// none is found.
|
/// none is found.
|
||||||
|
|
|
@ -400,7 +400,7 @@ bool LiveVariables::HandlePhysRegKill(unsigned Reg, MachineInstr *MI) {
|
||||||
true/*IsImp*/, true/*IsKill*/));
|
true/*IsImp*/, true/*IsKill*/));
|
||||||
else {
|
else {
|
||||||
MachineOperand *MO =
|
MachineOperand *MO =
|
||||||
LastRefOrPartRef->findRegisterDefOperand(Reg, false, TRI);
|
LastRefOrPartRef->findRegisterDefOperand(Reg, false, false, TRI);
|
||||||
bool NeedEC = MO->isEarlyClobber() && MO->getReg() != Reg;
|
bool NeedEC = MO->isEarlyClobber() && MO->getReg() != Reg;
|
||||||
// If the last reference is the last def, then it's not used at all.
|
// If the last reference is the last def, then it's not used at all.
|
||||||
// That is, unless we are currently processing the last reference itself.
|
// That is, unless we are currently processing the last reference itself.
|
||||||
|
|
|
@ -1917,7 +1917,7 @@ void MachineInstr::setRegisterDefReadUndef(unsigned Reg, bool IsUndef) {
|
||||||
void MachineInstr::addRegisterDefined(unsigned Reg,
|
void MachineInstr::addRegisterDefined(unsigned Reg,
|
||||||
const TargetRegisterInfo *RegInfo) {
|
const TargetRegisterInfo *RegInfo) {
|
||||||
if (TargetRegisterInfo::isPhysicalRegister(Reg)) {
|
if (TargetRegisterInfo::isPhysicalRegister(Reg)) {
|
||||||
MachineOperand *MO = findRegisterDefOperand(Reg, false, RegInfo);
|
MachineOperand *MO = findRegisterDefOperand(Reg, false, false, RegInfo);
|
||||||
if (MO)
|
if (MO)
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1140,7 +1140,8 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned,
|
||||||
// then remove the early-clobber flag.
|
// then remove the early-clobber flag.
|
||||||
for (unsigned Reg : ECRegs) {
|
for (unsigned Reg : ECRegs) {
|
||||||
if (MIB->readsRegister(Reg, TRI)) {
|
if (MIB->readsRegister(Reg, TRI)) {
|
||||||
MachineOperand *MO = MIB->findRegisterDefOperand(Reg, false, TRI);
|
MachineOperand *MO =
|
||||||
|
MIB->findRegisterDefOperand(Reg, false, false, TRI);
|
||||||
assert(MO && "No def operand for clobbered register?");
|
assert(MO && "No def operand for clobbered register?");
|
||||||
MO->setIsEarlyClobber(false);
|
MO->setIsEarlyClobber(false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue