generalize 'CaseBlock'.  It really allows any comparison to be inserted.

llvm-svn: 31161
diff --git a/llvm/include/llvm/CodeGen/SelectionDAGISel.h b/llvm/include/llvm/CodeGen/SelectionDAGISel.h
index f733d96..855febe 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAGISel.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAGISel.h
@@ -82,20 +82,19 @@
   /// SDISel for the code generation of additional basic blocks needed by multi-
   /// case switch statements.
   struct CaseBlock {
-    CaseBlock(ISD::CondCode cc, Value *s, Constant *c, MachineBasicBlock *lhs,
-              MachineBasicBlock *rhs, MachineBasicBlock *me) : 
-    CC(cc), SwitchV(s), CaseC(c), LHSBB(lhs), RHSBB(rhs), ThisBB(me) {}
+    CaseBlock(ISD::CondCode cc, Value *cmplhs, Value *cmprhs, 
+              MachineBasicBlock *lhs, MachineBasicBlock *rhs,
+              MachineBasicBlock *me) : 
+    CC(cc), CmpLHS(cmplhs), CmpRHS(cmprhs), LHSBB(lhs), RHSBB(rhs), ThisBB(me){}
     // CC - the condition code to use for the case block's setcc node
     ISD::CondCode CC;
-    // SwitchV - the value to be switched on, 'foo' in switch(foo)
-    Value *SwitchV;
-    // CaseC - the constant the setcc node will compare against SwitchV
-    Constant *CaseC;
+    // CmpLHS/CmpRHS - The LHS/RHS of the comparison to emit.
+    Value *CmpLHS, *CmpRHS;
     // LHSBB - the block to branch to if the setcc is true
     MachineBasicBlock *LHSBB;
     // RHSBB - the block to branch to if the setcc is false
     MachineBasicBlock *RHSBB;
-    // ThisBB - the blcok into which to emit the code for the setcc and branches
+    // ThisBB - the block into which to emit the code for the setcc and branches
     MachineBasicBlock *ThisBB;
   };
   struct JumpTable {
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index fa4407d..17ee597 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -819,9 +819,8 @@
 /// visitSwitchCase - Emits the necessary code to represent a single node in
 /// the binary search tree resulting from lowering a switch instruction.
 void SelectionDAGLowering::visitSwitchCase(SelectionDAGISel::CaseBlock &CB) {
-  SDOperand SwitchOp = getValue(CB.SwitchV);
-  SDOperand CaseOp = getValue(CB.CaseC);
-  SDOperand Cond = DAG.getSetCC(MVT::i1, SwitchOp, CaseOp, CB.CC);
+  SDOperand Cond = DAG.getSetCC(MVT::i1, getValue(CB.CmpLHS),
+                                getValue(CB.CmpRHS), CB.CC);
   
   // Set NextBlock to be the MBB immediately after the current one, if any.
   // This is used to avoid emitting unnecessary branches to the next block.