[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