From 6e1c6231ba93ed7590c62ef0f94d0d9443b598ed Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 28 Oct 2008 07:11:07 +0000 Subject: [PATCH] Don't produce invalid comparisons after legalize. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58320 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 0622c552d5a..c6c8e0359b3 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -1720,7 +1720,8 @@ SDValue DAGCombiner::visitAND(SDNode *N) { if (LL == RL && LR == RR) { bool isInteger = LL.getValueType().isInteger(); ISD::CondCode Result = ISD::getSetCCAndOperation(Op0, Op1, isInteger); - if (Result != ISD::SETCC_INVALID) + if (Result != ISD::SETCC_INVALID && + (!AfterLegalize || TLI.isCondCodeLegal(Result, LL.getValueType()))) return DAG.getSetCC(N0.getValueType(), LL, LR, Result); } } @@ -1904,7 +1905,8 @@ SDValue DAGCombiner::visitOR(SDNode *N) { if (LL == RL && LR == RR) { bool isInteger = LL.getValueType().isInteger(); ISD::CondCode Result = ISD::getSetCCOrOperation(Op0, Op1, isInteger); - if (Result != ISD::SETCC_INVALID) + if (Result != ISD::SETCC_INVALID && + (!AfterLegalize || TLI.isCondCodeLegal(Result, LL.getValueType()))) return DAG.getSetCC(N0.getValueType(), LL, LR, Result); } }