Index: lib/Target/NVPTX/NVPTXFrameLowering.cpp =================================================================== --- lib/Target/NVPTX/NVPTXFrameLowering.cpp +++ lib/Target/NVPTX/NVPTXFrameLowering.cpp @@ -34,7 +34,7 @@ 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 Index: lib/Target/NVPTX/NVPTXInstrInfo.cpp =================================================================== --- lib/Target/NVPTX/NVPTXInstrInfo.cpp +++ lib/Target/NVPTX/NVPTXInstrInfo.cpp @@ -155,17 +155,17 @@ 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 @@ } // 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(); Index: lib/Target/NVPTX/NVPTXPrologEpilogPass.cpp =================================================================== --- lib/Target/NVPTX/NVPTXPrologEpilogPass.cpp +++ lib/Target/NVPTX/NVPTXPrologEpilogPass.cpp @@ -55,11 +55,10 @@ 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;