forked from OSchip/llvm-project
[CSInfo] Use isCandidateForCallSiteEntry() when updating the CSInfo
Use the isCandidateForCallSiteEntry(). This should mostly be an NFC, but there are some parts ensuring the moveCallSiteInfo() and copyCallSiteInfo() operate with call site entry candidates (both Src and Dest should be the call site entry candidates). Differential Revision: https://reviews.llvm.org/D74122
This commit is contained in:
parent
d2e0fee77b
commit
68908993eb
|
@ -170,7 +170,7 @@ void BranchFolder::RemoveDeadBlock(MachineBasicBlock *MBB) {
|
|||
|
||||
// Update call site info.
|
||||
std::for_each(MBB->begin(), MBB->end(), [MF](const MachineInstr &MI) {
|
||||
if (MI.isCall(MachineInstr::IgnoreBundle))
|
||||
if (MI.isCandidateForCallSiteEntry())
|
||||
MF->eraseCallSiteInfo(&MI);
|
||||
});
|
||||
// Remove the block.
|
||||
|
|
|
@ -1851,7 +1851,7 @@ bool IfConverter::IfConvertDiamondCommon(
|
|||
while (NumDups1 != 0) {
|
||||
// Since this instruction is going to be deleted, update call
|
||||
// site info state if the instruction is call instruction.
|
||||
if (DI2->isCall(MachineInstr::IgnoreBundle))
|
||||
if (DI2->isCandidateForCallSiteEntry())
|
||||
MBB2.getParent()->eraseCallSiteInfo(&*DI2);
|
||||
|
||||
++DI2;
|
||||
|
@ -1900,7 +1900,7 @@ bool IfConverter::IfConvertDiamondCommon(
|
|||
|
||||
// Since this instruction is going to be deleted, update call
|
||||
// site info state if the instruction is call instruction.
|
||||
if (DI1->isCall(MachineInstr::IgnoreBundle))
|
||||
if (DI1->isCandidateForCallSiteEntry())
|
||||
MBB1.getParent()->eraseCallSiteInfo(&*DI1);
|
||||
|
||||
// skip dbg_value instructions
|
||||
|
@ -2188,8 +2188,8 @@ void IfConverter::CopyAndPredicateBlock(BBInfo &ToBBI, BBInfo &FromBBI,
|
|||
|
||||
MachineInstr *MI = MF.CloneMachineInstr(&I);
|
||||
// Make a copy of the call site info.
|
||||
if (MI->isCall(MachineInstr::IgnoreBundle))
|
||||
MF.copyCallSiteInfo(&I,MI);
|
||||
if (I.isCandidateForCallSiteEntry())
|
||||
MF.copyCallSiteInfo(&I, MI);
|
||||
|
||||
ToBBI.BB->insert(ToBBI.BB->end(), MI);
|
||||
ToBBI.NonPredSize++;
|
||||
|
|
|
@ -864,7 +864,8 @@ foldMemoryOperand(ArrayRef<std::pair<MachineInstr *, unsigned>> Ops,
|
|||
HSpiller.rmFromMergeableSpills(*MI, FI))
|
||||
--NumSpills;
|
||||
LIS.ReplaceMachineInstrInMaps(*MI, *FoldMI);
|
||||
if (MI->isCall())
|
||||
// Update the call site info.
|
||||
if (MI->isCandidateForCallSiteEntry())
|
||||
MI->getMF()->moveCallSiteInfo(MI, FoldMI);
|
||||
MI->eraseFromParent();
|
||||
|
||||
|
|
|
@ -231,7 +231,8 @@ bool LiveRangeEdit::foldAsLoad(LiveInterval *LI,
|
|||
return false;
|
||||
LLVM_DEBUG(dbgs() << " folded: " << *FoldMI);
|
||||
LIS.ReplaceMachineInstrInMaps(*UseMI, *FoldMI);
|
||||
if (UseMI->isCall())
|
||||
// Update the call site info.
|
||||
if (UseMI->isCandidateForCallSiteEntry())
|
||||
UseMI->getMF()->moveCallSiteInfo(UseMI, FoldMI);
|
||||
UseMI->eraseFromParent();
|
||||
DefMI->addRegisterDead(LI->reg, nullptr);
|
||||
|
|
|
@ -863,7 +863,8 @@ try_next:;
|
|||
|
||||
MachineFunction::CallSiteInfoMap::iterator
|
||||
MachineFunction::getCallSiteInfo(const MachineInstr *MI) {
|
||||
assert(MI->isCall() && "Call site info refers only to call instructions!");
|
||||
assert(MI->isCandidateForCallSiteEntry() &&
|
||||
"Call site info refers only to call (MI) candidates");
|
||||
|
||||
if (!Target.Options.EnableDebugEntryValues)
|
||||
return CallSitesInfo.end();
|
||||
|
@ -872,7 +873,11 @@ MachineFunction::getCallSiteInfo(const MachineInstr *MI) {
|
|||
|
||||
void MachineFunction::moveCallSiteInfo(const MachineInstr *Old,
|
||||
const MachineInstr *New) {
|
||||
assert(New->isCall() && "Call site info refers only to call instructions!");
|
||||
assert(Old->isCandidateForCallSiteEntry() &&
|
||||
"Call site info refers only to call (MI) candidates");
|
||||
|
||||
if (!New->isCandidateForCallSiteEntry())
|
||||
return eraseCallSiteInfo(Old);
|
||||
|
||||
CallSiteInfoMap::iterator CSIt = getCallSiteInfo(Old);
|
||||
if (CSIt == CallSitesInfo.end())
|
||||
|
@ -884,6 +889,8 @@ void MachineFunction::moveCallSiteInfo(const MachineInstr *Old,
|
|||
}
|
||||
|
||||
void MachineFunction::eraseCallSiteInfo(const MachineInstr *MI) {
|
||||
assert(MI->isCandidateForCallSiteEntry() &&
|
||||
"Call site info refers only to call (MI) candidates");
|
||||
CallSiteInfoMap::iterator CSIt = getCallSiteInfo(MI);
|
||||
if (CSIt == CallSitesInfo.end())
|
||||
return;
|
||||
|
@ -892,7 +899,11 @@ void MachineFunction::eraseCallSiteInfo(const MachineInstr *MI) {
|
|||
|
||||
void MachineFunction::copyCallSiteInfo(const MachineInstr *Old,
|
||||
const MachineInstr *New) {
|
||||
assert(New->isCall() && "Call site info refers only to call instructions!");
|
||||
assert(Old->isCandidateForCallSiteEntry() &&
|
||||
"Call site info refers only to call (MI) candidates");
|
||||
|
||||
if (!New->isCandidateForCallSiteEntry())
|
||||
return eraseCallSiteInfo(Old);
|
||||
|
||||
CallSiteInfoMap::iterator CSIt = getCallSiteInfo(Old);
|
||||
if (CSIt == CallSitesInfo.end())
|
||||
|
|
|
@ -1260,7 +1260,7 @@ bool MachineOutliner::outline(Module &M,
|
|||
MOP.getReg(), true, /* isDef = true */
|
||||
true /* isImp = true */));
|
||||
}
|
||||
if (MI.isCall())
|
||||
if (MI.isCandidateForCallSiteEntry())
|
||||
MI.getMF()->eraseCallSiteInfo(&MI);
|
||||
};
|
||||
// Copy over the defs in the outlined range.
|
||||
|
|
|
@ -1776,7 +1776,8 @@ bool PeepholeOptimizer::runOnMachineFunction(MachineFunction &MF) {
|
|||
LocalMIs.erase(MI);
|
||||
LocalMIs.erase(DefMI);
|
||||
LocalMIs.insert(FoldMI);
|
||||
if (MI->isCall())
|
||||
// Update the call site info.
|
||||
if (MI->isCandidateForCallSiteEntry())
|
||||
MI->getMF()->moveCallSiteInfo(MI, FoldMI);
|
||||
MI->eraseFromParent();
|
||||
DefMI->eraseFromParent();
|
||||
|
|
|
@ -143,7 +143,7 @@ TargetInstrInfo::ReplaceTailWithBranchTo(MachineBasicBlock::iterator Tail,
|
|||
// from the end of MBB.
|
||||
while (Tail != MBB->end()) {
|
||||
auto MI = Tail++;
|
||||
if (MI->isCall())
|
||||
if (MI->isCandidateForCallSiteEntry())
|
||||
MBB->getParent()->eraseCallSiteInfo(&*MI);
|
||||
MBB->erase(MI);
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ bool UnreachableMachineBlockElim::runOnMachineFunction(MachineFunction &F) {
|
|||
for (unsigned i = 0, e = DeadBlocks.size(); i != e; ++i) {
|
||||
// Remove any call site information for calls in the block.
|
||||
for (auto &I : DeadBlocks[i]->instrs())
|
||||
if (I.isCall(MachineInstr::IgnoreBundle))
|
||||
if (I.isCandidateForCallSiteEntry())
|
||||
DeadBlocks[i]->getParent()->eraseCallSiteInfo(&I);
|
||||
|
||||
DeadBlocks[i]->eraseFromParent();
|
||||
|
|
|
@ -111,7 +111,7 @@ void XRayInstrumentation::replaceRetWithPatchableRet(
|
|||
for (auto &MO : T.operands())
|
||||
MIB.add(MO);
|
||||
Terminators.push_back(&T);
|
||||
if (T.isCall())
|
||||
if (T.isCandidateForCallSiteEntry())
|
||||
MF.eraseCallSiteInfo(&T);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1207,7 +1207,8 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
|||
|
||||
|
||||
// Update call site info and delete the pseudo instruction TCRETURN.
|
||||
MBB.getParent()->moveCallSiteInfo(&MI, &*NewMI);
|
||||
if (MI.isCandidateForCallSiteEntry())
|
||||
MI.getMF()->moveCallSiteInfo(&MI, &*NewMI);
|
||||
MBB.erase(MBBI);
|
||||
|
||||
MBBI = NewMI;
|
||||
|
@ -1410,8 +1411,8 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
|||
const bool Thumb = Opcode == ARM::tTPsoft;
|
||||
|
||||
MachineInstrBuilder MIB;
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
if (STI->genLongCalls()) {
|
||||
MachineFunction *MF = MBB.getParent();
|
||||
MachineConstantPool *MCP = MF->getConstantPool();
|
||||
unsigned PCLabelID = AFI->createPICLabelUId();
|
||||
MachineConstantPoolValue *CPV =
|
||||
|
@ -1440,7 +1441,9 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
|||
|
||||
MIB.cloneMemRefs(MI);
|
||||
TransferImpOps(MI, MIB, MIB);
|
||||
MI.getMF()->moveCallSiteInfo(&MI, &*MIB);
|
||||
// Update the call site info.
|
||||
if (MI.isCandidateForCallSiteEntry())
|
||||
MF->moveCallSiteInfo(&MI, &*MIB);
|
||||
MI.eraseFromParent();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -275,7 +275,10 @@ bool X86ExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
|||
|
||||
MachineInstr &NewMI = *std::prev(MBBI);
|
||||
NewMI.copyImplicitOps(*MBBI->getParent()->getParent(), *MBBI);
|
||||
MBB.getParent()->moveCallSiteInfo(&*MBBI, &NewMI);
|
||||
|
||||
// Update the call site info.
|
||||
if (MBBI->isCandidateForCallSiteEntry())
|
||||
MBB.getParent()->moveCallSiteInfo(&*MBBI, &NewMI);
|
||||
|
||||
// Delete the pseudo instruction TCRETURN.
|
||||
MBB.erase(MBBI);
|
||||
|
|
Loading…
Reference in New Issue