Index: lib/CodeGen/MachineBlockPlacement.cpp =================================================================== --- lib/CodeGen/MachineBlockPlacement.cpp +++ lib/CodeGen/MachineBlockPlacement.cpp @@ -116,6 +116,16 @@ cl::desc("Cost of jump instructions."), cl::init(1), cl::Hidden); +static cl::opt StaticHotProb( + "static-hot-prob", + cl::desc("Hot branch probability when only static profile is available."), + cl::init(80), cl::Hidden); + +static cl::opt ProfileHotProb( + "profile-hot-prob", + cl::desc("Hot branch probability when only runtime profile is available."), + cl::init(50), cl::Hidden); + namespace { class BlockChain; /// \brief Type for our function-wide basic block -> block chain mapping. @@ -405,7 +415,10 @@ MachineBlockPlacement::selectBestSuccessor(MachineBasicBlock *BB, BlockChain &Chain, const BlockFilterSet *BlockFilter) { - const BranchProbability HotProb(4, 5); // 80% + const BranchProbability HotProb( + BB->getParent()->getFunction()->getEntryCount() ? ProfileHotProb + : StaticHotProb, + 100); MachineBasicBlock *BestSucc = nullptr; auto BestProb = BranchProbability::getZero();