From: Chris Lattner Date: Wed, 19 Jan 2005 18:01:40 +0000 (+0000) Subject: Know some identities about tokenfactor nodes. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=39908e0ce0d8bd9de3c53271f0d27ab9d75816ad;p=oota-llvm.git Know some identities about tokenfactor nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 3b106d192d1..762061fa0c7 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -549,6 +549,10 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, SDOperand N1, SDOperand N2) { #ifndef NDEBUG switch (Opcode) { + case ISD::TokenFactor: + assert(VT == MVT::Other && N1.getValueType() == MVT::Other && + N2.getValueType() == MVT::Other && "Invalid token factor!"); + break; case ISD::AND: case ISD::OR: case ISD::XOR: @@ -739,6 +743,13 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, // Finally, fold operations that do not require constants. switch (Opcode) { + case ISD::TokenFactor: + if (N1.getOpcode() == ISD::EntryToken) + return N2; + if (N2.getOpcode() == ISD::EntryToken) + return N1; + break; + case ISD::AND: case ISD::OR: if (SetCCSDNode *LHS = dyn_cast(N1.Val))