mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-27 15:22:29 +00:00
NVPTX: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to MachineInstr* in the NVPTX backend, mainly by preferring MachineInstr& over MachineInstr* when a pointer isn't nullable and using range-based for loops. There was one piece of questionable code in NVPTXInstrInfo::AnalyzeBranch, where a condition checked a pointer converted from an iterator for nullptr. Since this case is impossible (moreover, the code above guarantees that the iterator is valid), I removed the check when I changed the pointer to a reference. Despite that case, there should be no functionality change here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274931 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d1e9f00637
commit
0795ebde87
@ -34,7 +34,7 @@ void NVPTXFrameLowering::emitPrologue(MachineFunction &MF,
|
||||
MachineBasicBlock &MBB) const {
|
||||
if (MF.getFrameInfo()->hasStackObjects()) {
|
||||
assert(&MF.front() == &MBB && "Shrink-wrapping not yet supported");
|
||||
MachineInstr *MI = MBB.begin();
|
||||
MachineInstr *MI = &MBB.front();
|
||||
MachineRegisterInfo &MR = MF.getRegInfo();
|
||||
|
||||
// This instruction really occurs before first instruction
|
||||
|
@ -155,17 +155,17 @@ bool NVPTXInstrInfo::AnalyzeBranch(
|
||||
return false;
|
||||
|
||||
// Get the last instruction in the block.
|
||||
MachineInstr *LastInst = I;
|
||||
MachineInstr &LastInst = *I;
|
||||
|
||||
// If there is only one terminator instruction, process it.
|
||||
if (I == MBB.begin() || !isUnpredicatedTerminator(*--I)) {
|
||||
if (LastInst->getOpcode() == NVPTX::GOTO) {
|
||||
TBB = LastInst->getOperand(0).getMBB();
|
||||
if (LastInst.getOpcode() == NVPTX::GOTO) {
|
||||
TBB = LastInst.getOperand(0).getMBB();
|
||||
return false;
|
||||
} else if (LastInst->getOpcode() == NVPTX::CBranch) {
|
||||
} else if (LastInst.getOpcode() == NVPTX::CBranch) {
|
||||
// Block ends with fall-through condbranch.
|
||||
TBB = LastInst->getOperand(1).getMBB();
|
||||
Cond.push_back(LastInst->getOperand(0));
|
||||
TBB = LastInst.getOperand(1).getMBB();
|
||||
Cond.push_back(LastInst.getOperand(0));
|
||||
return false;
|
||||
}
|
||||
// Otherwise, don't know what this is.
|
||||
@ -173,26 +173,26 @@ bool NVPTXInstrInfo::AnalyzeBranch(
|
||||
}
|
||||
|
||||
// Get the instruction before it if it's a terminator.
|
||||
MachineInstr *SecondLastInst = I;
|
||||
MachineInstr &SecondLastInst = *I;
|
||||
|
||||
// If there are three terminators, we don't know what sort of block this is.
|
||||
if (SecondLastInst && I != MBB.begin() && isUnpredicatedTerminator(*--I))
|
||||
if (I != MBB.begin() && isUnpredicatedTerminator(*--I))
|
||||
return true;
|
||||
|
||||
// If the block ends with NVPTX::GOTO and NVPTX:CBranch, handle it.
|
||||
if (SecondLastInst->getOpcode() == NVPTX::CBranch &&
|
||||
LastInst->getOpcode() == NVPTX::GOTO) {
|
||||
TBB = SecondLastInst->getOperand(1).getMBB();
|
||||
Cond.push_back(SecondLastInst->getOperand(0));
|
||||
FBB = LastInst->getOperand(0).getMBB();
|
||||
if (SecondLastInst.getOpcode() == NVPTX::CBranch &&
|
||||
LastInst.getOpcode() == NVPTX::GOTO) {
|
||||
TBB = SecondLastInst.getOperand(1).getMBB();
|
||||
Cond.push_back(SecondLastInst.getOperand(0));
|
||||
FBB = LastInst.getOperand(0).getMBB();
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the block ends with two NVPTX:GOTOs, handle it. The second one is not
|
||||
// executed, so remove it.
|
||||
if (SecondLastInst->getOpcode() == NVPTX::GOTO &&
|
||||
LastInst->getOpcode() == NVPTX::GOTO) {
|
||||
TBB = SecondLastInst->getOperand(0).getMBB();
|
||||
if (SecondLastInst.getOpcode() == NVPTX::GOTO &&
|
||||
LastInst.getOpcode() == NVPTX::GOTO) {
|
||||
TBB = SecondLastInst.getOperand(0).getMBB();
|
||||
I = LastInst;
|
||||
if (AllowModify)
|
||||
I->eraseFromParent();
|
||||
|
@ -55,11 +55,10 @@ bool NVPTXPrologEpilogPass::runOnMachineFunction(MachineFunction &MF) {
|
||||
|
||||
calculateFrameObjectOffsets(MF);
|
||||
|
||||
for (MachineFunction::iterator BB = MF.begin(), E = MF.end(); BB != E; ++BB) {
|
||||
for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ++I) {
|
||||
MachineInstr *MI = I;
|
||||
for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
|
||||
if (!MI->getOperand(i).isFI())
|
||||
for (MachineBasicBlock &MBB : MF) {
|
||||
for (MachineInstr &MI : MBB) {
|
||||
for (unsigned i = 0, e = MI.getNumOperands(); i != e; ++i) {
|
||||
if (!MI.getOperand(i).isFI())
|
||||
continue;
|
||||
TRI.eliminateFrameIndex(MI, 0, i, nullptr);
|
||||
Modified = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user