[llvm] r206344 - [ARM64, C++11] Tidy up branch relaxation a bit w/ c++11.
Jim Grosbach
grosbach at apple.com
Tue Apr 15 17:42:46 PDT 2014
Author: grosbach
Date: Tue Apr 15 19:42:46 2014
New Revision: 206344
URL: http://llvm.org/viewvc/llvm-project?rev=206344&view=rev
Log:
[ARM64,C++11] Tidy up branch relaxation a bit w/ c++11.
No functional change.
Modified:
llvm/trunk/lib/Target/ARM64/ARM64BranchRelaxation.cpp
Modified: llvm/trunk/lib/Target/ARM64/ARM64BranchRelaxation.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/ARM64BranchRelaxation.cpp?rev=206344&r1=206343&r2=206344&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/ARM64BranchRelaxation.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/ARM64BranchRelaxation.cpp Tue Apr 15 19:42:46 2014
@@ -81,10 +81,10 @@ class ARM64BranchRelaxation : public Mac
bool relaxBranchInstructions();
void scanFunction();
MachineBasicBlock *splitBlockBeforeInstr(MachineInstr *MI);
- void adjustBlockOffsets(MachineBasicBlock *BB);
+ void adjustBlockOffsets(MachineBasicBlock &MBB);
bool isBlockInRange(MachineInstr *MI, MachineBasicBlock *BB, unsigned Disp);
bool fixupConditionalBranch(MachineInstr *MI);
- void computeBlockSize(MachineBasicBlock *MBB);
+ void computeBlockSize(const MachineBasicBlock &MBB);
unsigned getInstrOffset(MachineInstr *MI) const;
void dumpBBs();
void verify();
@@ -106,11 +106,9 @@ char ARM64BranchRelaxation::ID = 0;
void ARM64BranchRelaxation::verify() {
#ifndef NDEBUG
unsigned PrevNum = MF->begin()->getNumber();
- for (MachineFunction::iterator MBBI = MF->begin(), E = MF->end(); MBBI != E;
- ++MBBI) {
- MachineBasicBlock *MBB = MBBI;
- unsigned Align = MBB->getAlignment();
- unsigned Num = MBB->getNumber();
+ for (MachineBasicBlock &MBB : *MF) {
+ unsigned Align = MBB.getAlignment();
+ unsigned Num = MBB.getNumber();
assert(BlockInfo[Num].Offset % (1u << Align) == 0);
assert(!Num || BlockInfo[PrevNum].postOffset() <= BlockInfo[Num].Offset);
PrevNum = Num;
@@ -133,14 +131,12 @@ static bool BBHasFallthrough(MachineBasi
// Get the next machine basic block in the function.
MachineFunction::iterator MBBI = MBB;
// Can't fall off end of function.
- if (std::next(MBBI) == MBB->getParent()->end())
+ MachineBasicBlock *NextBB = std::next(MBBI);
+ if (NextBB == MBB->getParent()->end())
return false;
- MachineBasicBlock *NextBB = std::next(MBBI);
- for (MachineBasicBlock::succ_iterator I = MBB->succ_begin(),
- E = MBB->succ_end();
- I != E; ++I)
- if (*I == NextBB)
+ for (MachineBasicBlock *S : MBB->successors())
+ if (S == NextBB)
return true;
return false;
@@ -156,21 +152,20 @@ void ARM64BranchRelaxation::scanFunction
// has any inline assembly in it. If so, we have to be conservative about
// alignment assumptions, as we don't know for sure the size of any
// instructions in the inline assembly.
- for (MachineFunction::iterator I = MF->begin(), E = MF->end(); I != E; ++I)
- computeBlockSize(I);
+ for (MachineBasicBlock &MBB : *MF)
+ computeBlockSize(MBB);
// Compute block offsets and known bits.
- adjustBlockOffsets(MF->begin());
+ adjustBlockOffsets(*MF->begin());
}
/// computeBlockSize - Compute the size for MBB.
/// This function updates BlockInfo directly.
-void ARM64BranchRelaxation::computeBlockSize(MachineBasicBlock *MBB) {
+void ARM64BranchRelaxation::computeBlockSize(const MachineBasicBlock &MBB) {
unsigned Size = 0;
- for (MachineBasicBlock::iterator I = MBB->begin(), E = MBB->end(); I != E;
- ++I)
- Size += TII->GetInstSizeInBytes(I);
- BlockInfo[MBB->getNumber()].Size = Size;
+ for (const MachineInstr &MI : MBB)
+ Size += TII->GetInstSizeInBytes(&MI);
+ BlockInfo[MBB.getNumber()].Size = Size;
}
/// getInstrOffset - Return the current offset of the specified machine
@@ -192,17 +187,15 @@ unsigned ARM64BranchRelaxation::getInstr
return Offset;
}
-void ARM64BranchRelaxation::adjustBlockOffsets(MachineBasicBlock *Start) {
- unsigned PrevNum = Start->getNumber();
- MachineFunction::iterator MBBI = Start, E = MF->end();
- for (++MBBI; MBBI != E; ++MBBI) {
- MachineBasicBlock *MBB = MBBI;
- unsigned Num = MBB->getNumber();
+void ARM64BranchRelaxation::adjustBlockOffsets(MachineBasicBlock &Start) {
+ unsigned PrevNum = Start.getNumber();
+ for (auto &MBB : make_range(MachineFunction::iterator(Start), MF->end())) {
+ unsigned Num = MBB.getNumber();
if (!Num) // block zero is never changed from offset zero.
continue;
// Get the offset and known bits at the end of the layout predecessor.
// Include the alignment of the current block.
- unsigned LogAlign = MBBI->getAlignment();
+ unsigned LogAlign = MBB.getAlignment();
BlockInfo[Num].Offset = BlockInfo[PrevNum].postOffset(LogAlign);
PrevNum = Num;
}
@@ -242,14 +235,14 @@ ARM64BranchRelaxation::splitBlockBeforeI
// the new jump we added. (It should be possible to do this without
// recounting everything, but it's very confusing, and this is rarely
// executed.)
- computeBlockSize(OrigBB);
+ computeBlockSize(*OrigBB);
// Figure out how large the NewMBB is. As the second half of the original
// block, it may contain a tablejump.
- computeBlockSize(NewBB);
+ computeBlockSize(*NewBB);
// All BBOffsets following these blocks must be modified.
- adjustBlockOffsets(OrigBB);
+ adjustBlockOffsets(*OrigBB);
++NumSplit;
@@ -440,7 +433,7 @@ bool ARM64BranchRelaxation::fixupConditi
MI->eraseFromParent();
// Finally, keep the block offsets up to date.
- adjustBlockOffsets(MBB);
+ adjustBlockOffsets(*MBB);
return true;
}
More information about the llvm-commits
mailing list