forked from OSchip/llvm-project
[SystemZ] Use "for (auto" a bit
Just the simple cases for now. There were a few knock-on changes of MachineBasicBlock *s to MachineBasicBlock &s. No functional change intended. llvm-svn: 203105
This commit is contained in:
parent
c231269ff9
commit
28c111ec8a
|
@ -70,7 +70,7 @@ public:
|
|||
return "SystemZ Comparison Elimination";
|
||||
}
|
||||
|
||||
bool processBlock(MachineBasicBlock *MBB);
|
||||
bool processBlock(MachineBasicBlock &MBB);
|
||||
bool runOnMachineFunction(MachineFunction &F);
|
||||
|
||||
private:
|
||||
|
@ -97,9 +97,8 @@ FunctionPass *llvm::createSystemZElimComparePass(SystemZTargetMachine &TM) {
|
|||
}
|
||||
|
||||
// Return true if CC is live out of MBB.
|
||||
static bool isCCLiveOut(MachineBasicBlock *MBB) {
|
||||
for (MachineBasicBlock::succ_iterator SI = MBB->succ_begin(),
|
||||
SE = MBB->succ_end(); SI != SE; ++SI)
|
||||
static bool isCCLiveOut(MachineBasicBlock &MBB) {
|
||||
for (auto SI = MBB.succ_begin(), SE = MBB.succ_end(); SI != SE; ++SI)
|
||||
if ((*SI)->isLiveIn(SystemZ::CC))
|
||||
return true;
|
||||
return false;
|
||||
|
@ -328,8 +327,8 @@ optimizeCompareZero(MachineInstr *Compare,
|
|||
// Search back for CC results that are based on the first operand.
|
||||
unsigned SrcReg = Compare->getOperand(0).getReg();
|
||||
unsigned SrcSubReg = Compare->getOperand(0).getSubReg();
|
||||
MachineBasicBlock *MBB = Compare->getParent();
|
||||
MachineBasicBlock::iterator MBBI = Compare, MBBE = MBB->begin();
|
||||
MachineBasicBlock &MBB = *Compare->getParent();
|
||||
MachineBasicBlock::iterator MBBI = Compare, MBBE = MBB.begin();
|
||||
Reference CCRefs;
|
||||
Reference SrcRefs;
|
||||
while (MBBI != MBBE) {
|
||||
|
@ -424,7 +423,7 @@ fuseCompareAndBranch(MachineInstr *Compare,
|
|||
|
||||
// Process all comparison instructions in MBB. Return true if something
|
||||
// changed.
|
||||
bool SystemZElimCompare::processBlock(MachineBasicBlock *MBB) {
|
||||
bool SystemZElimCompare::processBlock(MachineBasicBlock &MBB) {
|
||||
bool Changed = false;
|
||||
|
||||
// Walk backwards through the block looking for comparisons, recording
|
||||
|
@ -432,8 +431,8 @@ bool SystemZElimCompare::processBlock(MachineBasicBlock *MBB) {
|
|||
// instructions before it.
|
||||
bool CompleteCCUsers = !isCCLiveOut(MBB);
|
||||
SmallVector<MachineInstr *, 4> CCUsers;
|
||||
MachineBasicBlock::iterator MBBI = MBB->end();
|
||||
while (MBBI != MBB->begin()) {
|
||||
MachineBasicBlock::iterator MBBI = MBB.end();
|
||||
while (MBBI != MBB.begin()) {
|
||||
MachineInstr *MI = --MBBI;
|
||||
if (CompleteCCUsers &&
|
||||
MI->isCompare() &&
|
||||
|
@ -463,9 +462,8 @@ bool SystemZElimCompare::runOnMachineFunction(MachineFunction &F) {
|
|||
TRI = &TII->getRegisterInfo();
|
||||
|
||||
bool Changed = false;
|
||||
for (MachineFunction::iterator MFI = F.begin(), MFE = F.end();
|
||||
MFI != MFE; ++MFI)
|
||||
Changed |= processBlock(MFI);
|
||||
for (auto &MBB : F)
|
||||
Changed |= processBlock(MBB);
|
||||
|
||||
return Changed;
|
||||
}
|
||||
|
|
|
@ -336,9 +336,8 @@ void SystemZFrameLowering::emitPrologue(MachineFunction &MF) const {
|
|||
MCSymbol *GPRSaveLabel = MMI.getContext().CreateTempSymbol();
|
||||
BuildMI(MBB, MBBI, DL,
|
||||
ZII->get(TargetOpcode::PROLOG_LABEL)).addSym(GPRSaveLabel);
|
||||
for (std::vector<CalleeSavedInfo>::const_iterator
|
||||
I = CSI.begin(), E = CSI.end(); I != E; ++I) {
|
||||
unsigned Reg = I->getReg();
|
||||
for (auto &Save : CSI) {
|
||||
unsigned Reg = Save.getReg();
|
||||
if (SystemZ::GR64BitRegClass.contains(Reg)) {
|
||||
int64_t Offset = SPOffsetFromCFA + RegSpillOffsets[Reg];
|
||||
MMI.addFrameInst(MCCFIInstruction::createOffset(
|
||||
|
@ -378,16 +377,14 @@ void SystemZFrameLowering::emitPrologue(MachineFunction &MF) const {
|
|||
// Mark the FramePtr as live at the beginning of every block except
|
||||
// the entry block. (We'll have marked R11 as live on entry when
|
||||
// saving the GPRs.)
|
||||
for (MachineFunction::iterator I = std::next(MF.begin()), E = MF.end();
|
||||
I != E; ++I)
|
||||
for (auto I = std::next(MF.begin()), E = MF.end(); I != E; ++I)
|
||||
I->addLiveIn(SystemZ::R11D);
|
||||
}
|
||||
|
||||
// Skip over the FPR saves.
|
||||
MCSymbol *FPRSaveLabel = 0;
|
||||
for (std::vector<CalleeSavedInfo>::const_iterator
|
||||
I = CSI.begin(), E = CSI.end(); I != E; ++I) {
|
||||
unsigned Reg = I->getReg();
|
||||
for (auto &Save : CSI) {
|
||||
unsigned Reg = Save.getReg();
|
||||
if (SystemZ::FP64BitRegClass.contains(Reg)) {
|
||||
if (MBBI != MBB.end() &&
|
||||
(MBBI->getOpcode() == SystemZ::STD ||
|
||||
|
@ -399,10 +396,10 @@ void SystemZFrameLowering::emitPrologue(MachineFunction &MF) const {
|
|||
// Add CFI for the this save.
|
||||
if (!FPRSaveLabel)
|
||||
FPRSaveLabel = MMI.getContext().CreateTempSymbol();
|
||||
unsigned Reg = MRI->getDwarfRegNum(I->getReg(), true);
|
||||
int64_t Offset = getFrameIndexOffset(MF, I->getFrameIdx());
|
||||
unsigned DwarfReg = MRI->getDwarfRegNum(Reg, true);
|
||||
int64_t Offset = getFrameIndexOffset(MF, Save.getFrameIdx());
|
||||
MMI.addFrameInst(MCCFIInstruction::createOffset(
|
||||
FPRSaveLabel, Reg, SPOffsetFromCFA + Offset));
|
||||
FPRSaveLabel, DwarfReg, SPOffsetFromCFA + Offset));
|
||||
}
|
||||
}
|
||||
// Complete the CFI for the FPR saves, modelling them as taking effect
|
||||
|
|
|
@ -1284,8 +1284,7 @@ static unsigned reverseCCMask(unsigned CCMask) {
|
|||
static void adjustForSubtraction(SelectionDAG &DAG, Comparison &C) {
|
||||
if (C.CCMask == SystemZ::CCMASK_CMP_EQ ||
|
||||
C.CCMask == SystemZ::CCMASK_CMP_NE) {
|
||||
for (SDNode::use_iterator I = C.Op0->use_begin(), E = C.Op0->use_end();
|
||||
I != E; ++I) {
|
||||
for (auto I = C.Op0->use_begin(), E = C.Op0->use_end(); I != E; ++I) {
|
||||
SDNode *N = *I;
|
||||
if (N->getOpcode() == ISD::SUB &&
|
||||
((N->getOperand(0) == C.Op0 && N->getOperand(1) == C.Op1) ||
|
||||
|
@ -1305,8 +1304,7 @@ static void adjustForSubtraction(SelectionDAG &DAG, Comparison &C) {
|
|||
static void adjustForFNeg(Comparison &C) {
|
||||
ConstantFPSDNode *C1 = dyn_cast<ConstantFPSDNode>(C.Op1);
|
||||
if (C1 && C1->isZero()) {
|
||||
for (SDNode::use_iterator I = C.Op0->use_begin(), E = C.Op0->use_end();
|
||||
I != E; ++I) {
|
||||
for (auto I = C.Op0->use_begin(), E = C.Op0->use_end(); I != E; ++I) {
|
||||
SDNode *N = *I;
|
||||
if (N->getOpcode() == ISD::FNEG) {
|
||||
C.Op0 = SDValue(N, 0);
|
||||
|
@ -1333,8 +1331,7 @@ static void adjustForLTGFR(Comparison &C) {
|
|||
if (C1 && C1->getZExtValue() == 32) {
|
||||
SDValue ShlOp0 = C.Op0.getOperand(0);
|
||||
// See whether X has any SIGN_EXTEND_INREG uses.
|
||||
for (SDNode::use_iterator I = ShlOp0->use_begin(), E = ShlOp0->use_end();
|
||||
I != E; ++I) {
|
||||
for (auto I = ShlOp0->use_begin(), E = ShlOp0->use_end(); I != E; ++I) {
|
||||
SDNode *N = *I;
|
||||
if (N->getOpcode() == ISD::SIGN_EXTEND_INREG &&
|
||||
cast<VTSDNode>(N->getOperand(1))->getVT() == MVT::i32) {
|
||||
|
|
|
@ -321,9 +321,8 @@ bool SystemZLongBranch::mustRelaxBranch(const TerminatorInfo &Terminator,
|
|||
// Return true if, under current assumptions, any terminator needs
|
||||
// to be relaxed.
|
||||
bool SystemZLongBranch::mustRelaxABranch() {
|
||||
for (SmallVectorImpl<TerminatorInfo>::iterator TI = Terminators.begin(),
|
||||
TE = Terminators.end(); TI != TE; ++TI)
|
||||
if (mustRelaxBranch(*TI, TI->Address))
|
||||
for (auto &Terminator : Terminators)
|
||||
if (mustRelaxBranch(Terminator, Terminator.Address))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -333,10 +332,9 @@ bool SystemZLongBranch::mustRelaxABranch() {
|
|||
void SystemZLongBranch::setWorstCaseAddresses() {
|
||||
SmallVector<TerminatorInfo, 16>::iterator TI = Terminators.begin();
|
||||
BlockPosition Position(MF->getAlignment());
|
||||
for (SmallVectorImpl<MBBInfo>::iterator BI = MBBs.begin(), BE = MBBs.end();
|
||||
BI != BE; ++BI) {
|
||||
skipNonTerminators(Position, *BI);
|
||||
for (unsigned BTI = 0, BTE = BI->NumTerminators; BTI != BTE; ++BTI) {
|
||||
for (auto &Block : MBBs) {
|
||||
skipNonTerminators(Position, Block);
|
||||
for (unsigned BTI = 0, BTE = Block.NumTerminators; BTI != BTE; ++BTI) {
|
||||
skipTerminator(Position, *TI, true);
|
||||
++TI;
|
||||
}
|
||||
|
@ -435,10 +433,9 @@ void SystemZLongBranch::relaxBranch(TerminatorInfo &Terminator) {
|
|||
void SystemZLongBranch::relaxBranches() {
|
||||
SmallVector<TerminatorInfo, 16>::iterator TI = Terminators.begin();
|
||||
BlockPosition Position(MF->getAlignment());
|
||||
for (SmallVectorImpl<MBBInfo>::iterator BI = MBBs.begin(), BE = MBBs.end();
|
||||
BI != BE; ++BI) {
|
||||
skipNonTerminators(Position, *BI);
|
||||
for (unsigned BTI = 0, BTE = BI->NumTerminators; BTI != BTE; ++BTI) {
|
||||
for (auto &Block : MBBs) {
|
||||
skipNonTerminators(Position, Block);
|
||||
for (unsigned BTI = 0, BTE = Block.NumTerminators; BTI != BTE; ++BTI) {
|
||||
assert(Position.Address <= TI->Address &&
|
||||
"Addresses shouldn't go forwards");
|
||||
if (mustRelaxBranch(*TI, Position.Address))
|
||||
|
|
|
@ -30,7 +30,7 @@ public:
|
|||
return "SystemZ Instruction Shortening";
|
||||
}
|
||||
|
||||
bool processBlock(MachineBasicBlock *MBB);
|
||||
bool processBlock(MachineBasicBlock &MBB);
|
||||
bool runOnMachineFunction(MachineFunction &F);
|
||||
|
||||
private:
|
||||
|
@ -98,16 +98,15 @@ bool SystemZShortenInst::shortenIIF(MachineInstr &MI, unsigned *GPRMap,
|
|||
}
|
||||
|
||||
// Process all instructions in MBB. Return true if something changed.
|
||||
bool SystemZShortenInst::processBlock(MachineBasicBlock *MBB) {
|
||||
bool SystemZShortenInst::processBlock(MachineBasicBlock &MBB) {
|
||||
bool Changed = false;
|
||||
|
||||
// Work out which words are live on exit from the block.
|
||||
unsigned LiveLow = 0;
|
||||
unsigned LiveHigh = 0;
|
||||
for (MachineBasicBlock::succ_iterator SI = MBB->succ_begin(),
|
||||
SE = MBB->succ_end(); SI != SE; ++SI) {
|
||||
for (MachineBasicBlock::livein_iterator LI = (*SI)->livein_begin(),
|
||||
LE = (*SI)->livein_end(); LI != LE; ++LI) {
|
||||
for (auto SI = MBB.succ_begin(), SE = MBB.succ_end(); SI != SE; ++SI) {
|
||||
for (auto LI = (*SI)->livein_begin(), LE = (*SI)->livein_end();
|
||||
LI != LE; ++LI) {
|
||||
unsigned Reg = *LI;
|
||||
assert(Reg < SystemZ::NUM_TARGET_REGS && "Invalid register number");
|
||||
LiveLow |= LowGPRs[Reg];
|
||||
|
@ -116,8 +115,7 @@ bool SystemZShortenInst::processBlock(MachineBasicBlock *MBB) {
|
|||
}
|
||||
|
||||
// Iterate backwards through the block looking for instructions to change.
|
||||
for (MachineBasicBlock::reverse_iterator MBBI = MBB->rbegin(),
|
||||
MBBE = MBB->rend(); MBBI != MBBE; ++MBBI) {
|
||||
for (auto MBBI = MBB.rbegin(), MBBE = MBB.rend(); MBBI != MBBE; ++MBBI) {
|
||||
MachineInstr &MI = *MBBI;
|
||||
unsigned Opcode = MI.getOpcode();
|
||||
if (Opcode == SystemZ::IILF)
|
||||
|
@ -128,8 +126,8 @@ bool SystemZShortenInst::processBlock(MachineBasicBlock *MBB) {
|
|||
SystemZ::LLIHH);
|
||||
unsigned UsedLow = 0;
|
||||
unsigned UsedHigh = 0;
|
||||
for (MachineInstr::mop_iterator MOI = MI.operands_begin(),
|
||||
MOE = MI.operands_end(); MOI != MOE; ++MOI) {
|
||||
for (auto MOI = MI.operands_begin(), MOE = MI.operands_end();
|
||||
MOI != MOE; ++MOI) {
|
||||
MachineOperand &MO = *MOI;
|
||||
if (MO.isReg()) {
|
||||
if (unsigned Reg = MO.getReg()) {
|
||||
|
@ -155,9 +153,8 @@ bool SystemZShortenInst::runOnMachineFunction(MachineFunction &F) {
|
|||
TII = static_cast<const SystemZInstrInfo *>(F.getTarget().getInstrInfo());
|
||||
|
||||
bool Changed = false;
|
||||
for (MachineFunction::iterator MFI = F.begin(), MFE = F.end();
|
||||
MFI != MFE; ++MFI)
|
||||
Changed |= processBlock(MFI);
|
||||
for (auto &MBB : F)
|
||||
Changed |= processBlock(MBB);
|
||||
|
||||
return Changed;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue