From d8cbfe82ba170fe3283d0a4725f1c77c443b45d7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 10 Apr 2005 01:13:15 +0000 Subject: Fix a thinko. If the operand is promoted, pass the promoted value into the new zero extend, not the original operand. This fixes cast bool -> long on ppc. Add an unrelated fixme llvm-svn: 21196 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp') diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 74e807ca826..f33ecd72239 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -767,6 +767,10 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, if (N2C->isAllOnesValue()) return N1; // X and -1 -> X + // FIXME: Should add a corresponding version of this for + // ZERO_EXTEND/SIGN_EXTEND by converting them to an ANY_EXTEND node which + // we don't have yet. + // and (zero_extend_inreg x:16:32), 1 -> and x, 1 if (N1.getOpcode() == ISD::ZERO_EXTEND_INREG || N1.getOpcode() == ISD::SIGN_EXTEND_INREG) { -- cgit v1.2.3