diff options
author | Kyle Butt <kyle+llvm@iteratee.net> | 2017-04-10 22:28:22 +0000 |
---|---|---|
committer | Kyle Butt <kyle+llvm@iteratee.net> | 2017-04-10 22:28:22 +0000 |
commit | 7e8be28661b66e1c0358f1bab199ea1e377ef024 (patch) | |
tree | 35f138d8dd7d23c73856f789e865578872961a37 /llvm/lib/CodeGen | |
parent | ee51a20164fba305401158e9d1020f7c3cd27adc (diff) | |
download | bcm5719-llvm-7e8be28661b66e1c0358f1bab199ea1e377ef024.tar.gz bcm5719-llvm-7e8be28661b66e1c0358f1bab199ea1e377ef024.zip |
CodeGen: BlockPlacement: Don't always tail-duplicate with no other successor.
The math works out where it can actually be counter-productive. The probability
calculations correctly handle the case where the alternative is 0 probability,
rely on those calculations.
Includes a test case that demonstrates the problem.
llvm-svn: 299892
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/MachineBlockPlacement.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/MachineBlockPlacement.cpp b/llvm/lib/CodeGen/MachineBlockPlacement.cpp index c03ffdd3732..ffd88b7c8e3 100644 --- a/llvm/lib/CodeGen/MachineBlockPlacement.cpp +++ b/llvm/lib/CodeGen/MachineBlockPlacement.cpp @@ -1489,11 +1489,7 @@ MachineBlockPlacement::selectBestSuccessor( if (DupProb < BestProb) break; if (canTailDuplicateUnplacedPreds(BB, Succ, Chain, BlockFilter) - // If tail duplication gives us fallthrough when we otherwise wouldn't - // have it, that is a strict gain. - && (BestSucc.BB == nullptr - || isProfitableToTailDup(BB, Succ, BestProb, Chain, - BlockFilter))) { + && (isProfitableToTailDup(BB, Succ, BestProb, Chain, BlockFilter))) { DEBUG( dbgs() << " Candidate: " << getBlockName(Succ) << ", probability: " << DupProb |