diff options
author | Chris Lattner <sabre@nondot.org> | 2006-09-10 06:36:57 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-09-10 06:36:57 +0000 |
commit | c66764c00756d800aede2fd32d55658a236b1912 (patch) | |
tree | 6a67d334609227586aa7d357c5d09db56a33f02d | |
parent | dc08cd56c4982d01dd83989318aa82da94b84c8f (diff) |
This code was trying too hard. By eliminating redundant edges in the CFG
due to switch cases going to the same place, it make #pred != #phi entries,
breaking live interval analysis.
This fixes 458.sjeng on x86 with llc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30236 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp index 578f8d2f3d..4c4b0f951d 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -970,24 +970,21 @@ void SelectionDAGLowering::visitSwitch(SwitchInst &I) { // of the jump table. If the value of the jump table slot corresponds to // a case statement, push the case's BB onto the vector, otherwise, push // the default BB. - std::set<MachineBasicBlock*> UniqueBBs; std::vector<MachineBasicBlock*> DestBBs; uint64_t TEI = First; for (CaseItr ii = Cases.begin(), ee = Cases.end(); ii != ee; ++TEI) { if (cast<ConstantIntegral>(ii->first)->getRawValue() == TEI) { DestBBs.push_back(ii->second); - UniqueBBs.insert(ii->second); ++ii; } else { DestBBs.push_back(Default); - UniqueBBs.insert(Default); } } // Update successor info - for (std::set<MachineBasicBlock*>::iterator ii = UniqueBBs.begin(), - ee = UniqueBBs.end(); ii != ee; ++ii) - JumpTableBB->addSuccessor(*ii); + for (std::vector<MachineBasicBlock*>::iterator I = DestBBs.begin(), + E = DestBBs.end(); I != E; ++I) + JumpTableBB->addSuccessor(*I); // Create a jump table index for this jump table, or return an existing // one. |