diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-06-14 20:28:52 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-06-14 20:28:52 +0000 |
commit | 1e6f08b2a2fb83de83b09214e6f18c1fa1bf1f80 (patch) | |
tree | 27955a12306942372cf0374d0ea324f9123bab43 /llvm/lib/CodeGen | |
parent | 3a8e2a8b2fb4cc74bab521328a85bc80cfb613d0 (diff) | |
download | bcm5719-llvm-1e6f08b2a2fb83de83b09214e6f18c1fa1bf1f80.tar.gz bcm5719-llvm-1e6f08b2a2fb83de83b09214e6f18c1fa1bf1f80.zip |
Fix some stupid bugs that have effectively disabled if-conversion.
llvm-svn: 37575
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/IfConversion.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/IfConversion.cpp b/llvm/lib/CodeGen/IfConversion.cpp index 02fbfeee54c..40a7143423e 100644 --- a/llvm/lib/CodeGen/IfConversion.cpp +++ b/llvm/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; } |