OSDN Git Service

[MBP] Split placement and alignment into two functions. NFC.
authorHaicheng Wu <haicheng@codeaurora.org>
Fri, 29 Apr 2016 17:06:44 +0000 (17:06 +0000)
committerHaicheng Wu <haicheng@codeaurora.org>
Fri, 29 Apr 2016 17:06:44 +0000 (17:06 +0000)
Cut and Paste.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268067 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineBlockPlacement.cpp

index 6a9078a..970be7f 100644 (file)
@@ -300,6 +300,7 @@ class MachineBlockPlacement : public MachineFunctionPass {
   void rotateLoopWithProfile(BlockChain &LoopChain, MachineLoop &L,
                              const BlockFilterSet &LoopBlockSet);
   void buildCFGChains(MachineFunction &F);
+  void alignBlocks(MachineFunction &F);
 
 public:
   static char ID; // Pass identification, replacement for typeid
@@ -1357,7 +1358,9 @@ void MachineBlockPlacement::buildCFGChains(MachineFunction &F) {
   MachineBasicBlock *TBB = nullptr, *FBB = nullptr; // For AnalyzeBranch.
   if (!TII->AnalyzeBranch(F.back(), TBB, FBB, Cond))
     F.back().updateTerminator();
+}
 
+void MachineBlockPlacement::alignBlocks(MachineFunction &F) {
   // Walk through the backedges of the function now that we have fully laid out
   // the basic blocks and align the destination of each backedge. We don't rely
   // exclusively on the loop info here so that we can align backedges in
@@ -1366,6 +1369,7 @@ void MachineBlockPlacement::buildCFGChains(MachineFunction &F) {
   // FIXME: Use Function::optForSize().
   if (F.getFunction()->hasFnAttribute(Attribute::OptimizeForSize))
     return;
+  BlockChain &FunctionChain = *BlockToChain[&F.front()];
   if (FunctionChain.begin() == FunctionChain.end())
     return; // Empty chain.
 
@@ -1442,6 +1446,7 @@ bool MachineBlockPlacement::runOnMachineFunction(MachineFunction &F) {
   assert(BlockToChain.empty());
 
   buildCFGChains(F);
+  alignBlocks(F);
 
   BlockToChain.clear();
   ChainAllocator.DestroyAll();