Changes in directory llvm/lib/CodeGen/SelectionDAG:
SelectionDAGISel.cpp updated: 1.274 -> 1.275 --- Log message: 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. --- Diffs of the changes: (+3 -6) SelectionDAGISel.cpp | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.274 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.275 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.274 Sat Sep 9 01:03:30 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Sun Sep 10 01:36:57 2006 @@ -970,24 +970,21 @@ // 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. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits