mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[BlockPlacement] Add option to align all non-fall-through blocks.
Summary: This option is being added for testing purposes. Reviewers: mcrosier Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D16410 llvm-svn: 258409
This commit is contained in:
parent
d8f9568a4c
commit
8cf2ae77e2
@ -62,6 +62,13 @@ static cl::opt<unsigned> AlignAllBlock("align-all-blocks",
|
||||
"blocks in the function."),
|
||||
cl::init(0), cl::Hidden);
|
||||
|
||||
static cl::opt<unsigned> AlignAllNonFallThruBlocks(
|
||||
"align-all-nofallthru-blocks",
|
||||
cl::desc("Force the alignment of all "
|
||||
"blocks that have no fall-through predecessors (i.e. don't add "
|
||||
"nops that are executed)."),
|
||||
cl::init(0), cl::Hidden);
|
||||
|
||||
static cl::opt<unsigned>
|
||||
AlignAllLoops("align-all-loops",
|
||||
cl::desc("Force the alignment of all loops in the function."),
|
||||
@ -1405,6 +1412,15 @@ bool MachineBlockPlacement::runOnMachineFunction(MachineFunction &F) {
|
||||
// Align all of the blocks in the function to a specific alignment.
|
||||
for (MachineBasicBlock &MBB : F)
|
||||
MBB.setAlignment(AlignAllBlock);
|
||||
else if (AlignAllNonFallThruBlocks) {
|
||||
// Align all of the blocks that have no fall-through predecessors to a
|
||||
// specific alignment.
|
||||
for (auto MBI = std::next(F.begin()), MBE = F.end(); MBI != MBE; ++MBI) {
|
||||
auto LayoutPred = std::prev(MBI);
|
||||
if (!LayoutPred->isSuccessor(&*MBI))
|
||||
MBI->setAlignment(AlignAllNonFallThruBlocks);
|
||||
}
|
||||
}
|
||||
|
||||
// We always return true as we have no way to track whether the final order
|
||||
// differs from the original order.
|
||||
|
Loading…
x
Reference in New Issue
Block a user