summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorKyle Butt <kyle+llvm@iteratee.net>2017-04-10 22:28:22 +0000
committerKyle Butt <kyle+llvm@iteratee.net>2017-04-10 22:28:22 +0000
commit7e8be28661b66e1c0358f1bab199ea1e377ef024 (patch)
tree35f138d8dd7d23c73856f789e865578872961a37 /llvm/lib/CodeGen
parentee51a20164fba305401158e9d1020f7c3cd27adc (diff)
downloadbcm5719-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.cpp6
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
OpenPOWER on IntegriCloud