Know some identities about tokenfactor nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19699 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-01-19 18:01:40 +00:00
parent 88218ef706
commit 39908e0ce0

View File

@ -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<SetCCSDNode>(N1.Val))