aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/IfConversion.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-06-14 20:28:52 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-06-14 20:28:52 +0000
commit86ff296e63cd9d4c28a7b73d3d6ec05e4011a0e5 (patch)
treea5c26f3c53f8f61083399583ad5e4ee0b2142186 /lib/CodeGen/IfConversion.cpp
parentaf67ea73184006b4f8a86ceb04fe318aad8b6558 (diff)
Fix some stupid bugs that have effectively disabled if-conversion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37575 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/IfConversion.cpp')
-rw-r--r--lib/CodeGen/IfConversion.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/CodeGen/IfConversion.cpp b/lib/CodeGen/IfConversion.cpp
index 02fbfeee54..40a7143423 100644
--- a/lib/CodeGen/IfConversion.cpp
+++ b/lib/CodeGen/IfConversion.cpp
@@ -208,6 +208,7 @@ bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
// marked dead (due to it being predicated), then skip it.
if (!BBI.IsEnqueued || BBI.IsDone)
continue;
+ BBI.IsEnqueued = false;
bool RetVal = false;
switch (BBI.Kind) {
@@ -625,6 +626,7 @@ bool IfConverter::AnalyzeBlocks(MachineFunction &MF,
case ICTriangleFalse:
case ICTriangleFRev:
case ICDiamond:
+ BBI.IsEnqueued = true;
Candidates.push_back(&BBI);
break;
default:
@@ -660,7 +662,7 @@ void IfConverter::ReTryPreds(MachineBasicBlock *BB) {
E = BB->pred_end(); PI != E; ++PI) {
BBInfo &PBBI = BBAnalysis[(*PI)->getNumber()];
if (!PBBI.IsDone && PBBI.Kind == ICNotClassfied) {
- assert(PBBI.IsEnqueued && "Unexpected");
+ assert(!PBBI.IsEnqueued && "Unexpected");
PBBI.IsAnalyzed = false;
}
}
@@ -963,6 +965,7 @@ void IfConverter::PredicateBlock(BBInfo &BBI,
}
}
+ BBI.IsAnalyzed = false;
BBI.NonPredSize = 0;
std::copy(Cond.begin(), Cond.end(), std::back_inserter(BBI.Predicate));
@@ -1013,4 +1016,7 @@ void IfConverter::MergeBlocks(BBInfo &ToBBI, BBInfo &FromBBI) {
std::copy(FromBBI.Predicate.begin(), FromBBI.Predicate.end(),
std::back_inserter(ToBBI.Predicate));
FromBBI.Predicate.clear();
+
+ ToBBI.IsAnalyzed = false;
+ FromBBI.IsAnalyzed = false;
}