From 39908e0ce0d8bd9de3c53271f0d27ab9d75816ad Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 19 Jan 2005 18:01:40 +0000 Subject: [PATCH] Know some identities about tokenfactor nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) 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))