mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
LivePhysRegs: Skip reserved regs in computeLiveIns; NFCI
Re-commit r303937 + r303949 as they were not the cause for the build failures. We do not track liveness of reserved registers so adding them to the liveins list in computeLiveIns() was completely unnecessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303970 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d6cdc20e21
commit
b0e29ac6a6
@ -163,7 +163,7 @@ inline raw_ostream &operator<<(raw_ostream &OS, const LivePhysRegs& LR) {
|
||||
/// lists are up-to-date. Uses the given LivePhysReg instance \p LiveRegs; This
|
||||
/// is just here to avoid repeated heap allocations when calling this multiple
|
||||
/// times in a pass.
|
||||
void computeLiveIns(LivePhysRegs &LiveRegs, const TargetRegisterInfo &TRI,
|
||||
void computeLiveIns(LivePhysRegs &LiveRegs, const MachineRegisterInfo &MRI,
|
||||
MachineBasicBlock &MBB);
|
||||
|
||||
} // end namespace llvm
|
||||
|
@ -153,13 +153,14 @@ bool BranchFolder::OptimizeFunction(MachineFunction &MF,
|
||||
|
||||
TriedMerging.clear();
|
||||
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
AfterBlockPlacement = AfterPlacement;
|
||||
TII = tii;
|
||||
TRI = tri;
|
||||
MMI = mmi;
|
||||
MLI = mli;
|
||||
this->MRI = &MRI;
|
||||
|
||||
MachineRegisterInfo &MRI = MF.getRegInfo();
|
||||
UpdateLiveIns = MRI.tracksLiveness() && TRI->trackLivenessAfterRegAlloc(MF);
|
||||
if (!UpdateLiveIns)
|
||||
MRI.invalidateLiveness();
|
||||
@ -351,7 +352,7 @@ void BranchFolder::ReplaceTailWithBranchTo(MachineBasicBlock::iterator OldInst,
|
||||
|
||||
if (UpdateLiveIns) {
|
||||
NewDest->clearLiveIns();
|
||||
computeLiveIns(LiveRegs, *TRI, *NewDest);
|
||||
computeLiveIns(LiveRegs, *MRI, *NewDest);
|
||||
}
|
||||
|
||||
++NumTailMerge;
|
||||
@ -388,7 +389,7 @@ MachineBasicBlock *BranchFolder::SplitMBBAt(MachineBasicBlock &CurMBB,
|
||||
MBBFreqInfo.setBlockFreq(NewMBB, MBBFreqInfo.getBlockFreq(&CurMBB));
|
||||
|
||||
if (UpdateLiveIns)
|
||||
computeLiveIns(LiveRegs, *TRI, *NewMBB);
|
||||
computeLiveIns(LiveRegs, *MRI, *NewMBB);
|
||||
|
||||
// Add the new block to the funclet.
|
||||
const auto &FuncletI = FuncletMembership.find(&CurMBB);
|
||||
|
@ -108,6 +108,7 @@ namespace llvm {
|
||||
bool UpdateLiveIns;
|
||||
unsigned MinCommonTailLength;
|
||||
const TargetInstrInfo *TII;
|
||||
const MachineRegisterInfo *MRI;
|
||||
const TargetRegisterInfo *TRI;
|
||||
MachineModuleInfo *MMI;
|
||||
MachineLoopInfo *MLI;
|
||||
|
@ -259,7 +259,7 @@ MachineBasicBlock *BranchRelaxation::splitBlockBeforeInstr(MachineInstr &MI,
|
||||
|
||||
// Need to fix live-in lists if we track liveness.
|
||||
if (TRI->trackLivenessAfterRegAlloc(*MF))
|
||||
computeLiveIns(LiveRegs, *TRI, *NewBB);
|
||||
computeLiveIns(LiveRegs, MF->getRegInfo(), *NewBB);
|
||||
|
||||
++NumSplit;
|
||||
|
||||
|
@ -200,8 +200,10 @@ void LivePhysRegs::addLiveIns(const MachineBasicBlock &MBB) {
|
||||
addBlockLiveIns(MBB);
|
||||
}
|
||||
|
||||
void llvm::computeLiveIns(LivePhysRegs &LiveRegs, const TargetRegisterInfo &TRI,
|
||||
void llvm::computeLiveIns(LivePhysRegs &LiveRegs,
|
||||
const MachineRegisterInfo &MRI,
|
||||
MachineBasicBlock &MBB) {
|
||||
const TargetRegisterInfo &TRI = *MRI.getTargetRegisterInfo();
|
||||
assert(MBB.livein_empty());
|
||||
LiveRegs.init(TRI);
|
||||
LiveRegs.addLiveOutsNoPristines(MBB);
|
||||
@ -209,10 +211,12 @@ void llvm::computeLiveIns(LivePhysRegs &LiveRegs, const TargetRegisterInfo &TRI,
|
||||
LiveRegs.stepBackward(MI);
|
||||
|
||||
for (unsigned Reg : LiveRegs) {
|
||||
if (MRI.isReserved(Reg))
|
||||
continue;
|
||||
// Skip the register if we are about to add one of its super registers.
|
||||
bool ContainsSuperReg = false;
|
||||
for (MCSuperRegIterator SReg(Reg, &TRI); SReg.isValid(); ++SReg) {
|
||||
if (LiveRegs.contains(*SReg)) {
|
||||
if (LiveRegs.contains(*SReg) && !MRI.isReserved(*SReg)) {
|
||||
ContainsSuperReg = true;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user