Changes in directory llvm/lib/CodeGen/SelectionDAG:

SelectionDAGISel.cpp updated: 1.449 -> 1.449.2.1
---
Log message:

Merge from mainline PR1403: http://llvm.org/PR1403 


---
Diffs of the changes:  (+12 -5)

 SelectionDAGISel.cpp |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.449 
llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.449.2.1
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.449    Mon May  7 
15:49:28 2007
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  Wed May  9 23:42:32 2007
@@ -1462,6 +1462,11 @@
   return true;
 }
 
+static inline bool areJTsAllowed(const TargetLowering &TLI) {
+  return (TLI.isOperationLegal(ISD::BR_JT, MVT::Other) ||
+          TLI.isOperationLegal(ISD::BRIND, MVT::Other));
+}
+  
 /// handleJTSwitchCase - Emit jumptable for current switch case range
 bool SelectionDAGLowering::handleJTSwitchCase(CaseRec& CR,
                                               CaseRecVector& WorkList,
@@ -1478,9 +1483,7 @@
        I!=E; ++I)
     TSize += I->size();
 
-  if ((!TLI.isOperationLegal(ISD::BR_JT, MVT::Other) &&
-       !TLI.isOperationLegal(ISD::BRIND, MVT::Other)) ||
-      TSize <= 3)
+  if (!areJTsAllowed(TLI) || TSize <= 3)
     return false;
   
   double Density = (double)TSize / (double)((Last - First) + 1ULL);  
@@ -1622,8 +1625,12 @@
     LSize += J->size();
     RSize -= J->size();
   }
-  // If our case is dense we *really* should handle it earlier!
-  assert((FMetric > 0) && "Should handle dense range earlier!");
+  if (areJTsAllowed(TLI)) {
+    // If our case is dense we *really* should handle it earlier!
+    assert((FMetric > 0) && "Should handle dense range earlier!");
+  } else {
+    Pivot = CR.Range.first + Size/2;
+  }
   
   CaseRange LHSR(CR.Range.first, Pivot);
   CaseRange RHSR(Pivot, CR.Range.second);



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to