Fix a thinko. If the operand is promoted, pass the promoted value into
authorChris Lattner <sabre@nondot.org>
Sun, 10 Apr 2005 01:13:15 +0000 (01:13 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 10 Apr 2005 01:13:15 +0000 (01:13 +0000)
the new zero extend, not the original operand.  This fixes cast bool -> long
on ppc.

Add an unrelated fixme

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21196 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index 256aa2513e0de18fa48379cc1e58de00a2681495..1fcaa723e2c4788265ce73c85cf2b4d75d6c4914 100644 (file)
@@ -1937,7 +1937,7 @@ void SelectionDAGLegalize::ExpandOp(SDOperand Op, SDOperand &Lo, SDOperand &Hi){
 
     // The low part is just a zero extension of the input (which degenerates to
     // a copy).
-    Lo = DAG.getNode(ISD::ZERO_EXTEND, NVT, LegalizeOp(Node->getOperand(0)));
+    Lo = DAG.getNode(ISD::ZERO_EXTEND, NVT, In);
     
     // The high part is just a zero.
     Hi = DAG.getConstant(0, NVT);
index 74e807ca82697a6c6482a554e3d119b39ef0fa91..f33ecd72239337ab05bfeaa140ac2b4b0edd1a6a 100644 (file)
@@ -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) {