Changes in directory llvm/include/llvm/CodeGen:
SelectionDAGISel.h updated: 1.35 -> 1.36 --- Log message: Properly emit range comparisons for switch cases, where neighbour cases go to the same destination. Now we're producing really good code for switch-lower-feature.ll testcase --- Diffs of the changes: (+6 -4) SelectionDAGISel.h | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) Index: llvm/include/llvm/CodeGen/SelectionDAGISel.h diff -u llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.35 llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.36 --- llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.35 Sun Mar 25 10:07:15 2007 +++ llvm/include/llvm/CodeGen/SelectionDAGISel.h Wed Apr 4 16:14:49 2007 @@ -82,15 +82,17 @@ /// SDISel for the code generation of additional basic blocks needed by multi- /// case switch statements. struct CaseBlock { - CaseBlock(ISD::CondCode cc, Value *cmplhs, Value *cmprhs, + CaseBlock(ISD::CondCode cc, Value *cmplhs, Value *cmprhs, Value *cmpmiddle, MachineBasicBlock *truebb, MachineBasicBlock *falsebb, MachineBasicBlock *me) - : CC(cc), CmpLHS(cmplhs), CmpRHS(cmprhs), + : CC(cc), CmpLHS(cmplhs), CmpMHS(cmpmiddle), CmpRHS(cmprhs), TrueBB(truebb), FalseBB(falsebb), ThisBB(me) {} // CC - the condition code to use for the case block's setcc node ISD::CondCode CC; - // CmpLHS/CmpRHS - The LHS/RHS of the comparison to emit. - Value *CmpLHS, *CmpRHS; + // CmpLHS/CmpRHS/CmpMHS - The LHS/MHS/RHS of the comparison to emit. + // Emit by default LHS op RHS. MHS is used for range comparisons: + // If MHS is not null: (LHS <= MHS) and (MHS <= RHS). + Value *CmpLHS, *CmpMHS, *CmpRHS; // TrueBB/FalseBB - the block to branch to if the setcc is true/false. MachineBasicBlock *TrueBB, *FalseBB; // ThisBB - the block into which to emit the code for the setcc and branches _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits