From d6f5ae44557fbd56edee9d7129f43d71282bafde Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 30 Jan 2006 04:22:28 +0000 Subject: [PATCH] don't insert an and node if it isn't needed here, this can prevent folding of lowered target nodes. llvm-svn: 25804 --- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 44ce9981a623..04fef370171e 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1284,7 +1284,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { } else { // Make sure the condition is either zero or one. It may have been // promoted from something else. - Tmp1 = DAG.getZeroExtendInReg(Tmp1, MVT::i1); + unsigned NumBits = MVT::getSizeInBits(Tmp1.getValueType()); + if (!TLI.MaskedValueIsZero(Tmp1, (~0ULL >> (64-NumBits))^1)) + Tmp1 = DAG.getZeroExtendInReg(Tmp1, MVT::i1); Result = DAG.getSelectCC(Tmp1, DAG.getConstant(0, Tmp1.getValueType()), Tmp2, Tmp3, ISD::SETNE);