[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sat Sep 9 23:37:11 PDT 2006
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.
More information about the llvm-commits
mailing list