From 0e753d617be1ff6a9ac0f894da9d2544e2489850 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25804 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 44ce9981a62..04fef370171 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/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);