Changes in directory llvm/lib/CodeGen/SelectionDAG:
SelectionDAG.cpp updated: 1.302 -> 1.303 --- Log message: Fix Regression/CodeGen/Generic/2006-04-26-SetCCAnd.ll and PR748: http://llvm.cs.uiuc.edu/PR748 . --- Diffs of the changes: (+29 -1) SelectionDAG.cpp | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.302 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.303 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.302 Sat Apr 22 13:53:45 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Thu Apr 27 00:01:07 2006 @@ -232,7 +232,22 @@ return ISD::SETCC_INVALID; // Combine all of the condition bits. - return ISD::CondCode(Op1 & Op2); + ISD::CondCode Result = ISD::CondCode(Op1 & Op2); + + // Canonicalize illegal integer setcc's. + if (isInteger) { + switch (Result) { + default: break; + case ISD::SETUO: // e.g. SETUGT & SETULT + Result = ISD::SETFALSE; + break; + case ISD::SETUEQ: // e.g. SETUGE & SETULE + Result = ISD::SETEQ; + break; + } + } + + return Result; } const TargetMachine &SelectionDAG::getTarget() const { @@ -849,6 +864,19 @@ case ISD::SETFALSE2: return getConstant(0, VT); case ISD::SETTRUE: case ISD::SETTRUE2: return getConstant(1, VT); + + case ISD::SETOEQ: + case ISD::SETOGT: + case ISD::SETOGE: + case ISD::SETOLT: + case ISD::SETOLE: + case ISD::SETONE: + case ISD::SETO: + case ISD::SETUO: + case ISD::SETUEQ: + case ISD::SETUNE: + assert(!MVT::isInteger(N1.getValueType()) && "Illegal setcc for integer!"); + break; } if (ConstantSDNode *N2C = dyn_cast<ConstantSDNode>(N2.Val)) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits