summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/TailDuplicator.cpp
diff options
context:
space:
mode:
authorKyle Butt <kyle+llvm@iteratee.net>2016-07-20 00:01:51 +0000
committerKyle Butt <kyle+llvm@iteratee.net>2016-07-20 00:01:51 +0000
commitd2b886e569fb6c8621cc2b58873fa9e046d47d60 (patch)
tree95ef31bebf791af241628411200832bdc20427eb /llvm/lib/CodeGen/TailDuplicator.cpp
parent1d2e609b0180a376b5473cc4bae5c75a82e27a01 (diff)
downloadbcm5719-llvm-d2b886e569fb6c8621cc2b58873fa9e046d47d60.tar.gz
bcm5719-llvm-d2b886e569fb6c8621cc2b58873fa9e046d47d60.zip
Codegen: Tail Duplication: Only duplicate into layout pred if it is a CFG Pred.
Add a check that the layout predecessor of a block is an actual CFG predecssor of the block as well. No current code fails this check, but upcoming patches can trigger this, and it makes sense to separate it out. llvm-svn: 276066
Diffstat (limited to 'llvm/lib/CodeGen/TailDuplicator.cpp')
-rw-r--r--llvm/lib/CodeGen/TailDuplicator.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/TailDuplicator.cpp b/llvm/lib/CodeGen/TailDuplicator.cpp
index f2349f28243..059c1dc5483 100644
--- a/llvm/lib/CodeGen/TailDuplicator.cpp
+++ b/llvm/lib/CodeGen/TailDuplicator.cpp
@@ -824,6 +824,8 @@ bool TailDuplicator::tailDuplicate(MachineFunction &MF, bool IsSimple,
// This has to check PrevBB->succ_size() because EH edges are ignored by
// AnalyzeBranch.
if (PrevBB->succ_size() == 1 &&
+ // Layout preds are not always CFG preds. Check.
+ *PrevBB->succ_begin() == TailBB &&
!TII->analyzeBranch(*PrevBB, PriorTBB, PriorFBB, PriorCond, true) &&
PriorCond.empty() && !PriorTBB && TailBB->pred_size() == 1 &&
!TailBB->hasAddressTaken()) {
OpenPOWER on IntegriCloud