diff options
author | Chris Lattner <sabre@nondot.org> | 2007-04-09 05:23:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-04-09 05:23:13 +0000 |
commit | ff33cc4d08a115e40b8ad0caabfe971cd9a8351a (patch) | |
tree | b4847704854d281eb011771dca68ddd2bd6f213b /lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | ad043e85f8916c2a932cdd5893f0f2dd75a16994 (diff) |
add some assertions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35800 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index dc3450c712..a51f79f592 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -1046,19 +1046,30 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, switch (Opcode) { case ISD::TokenFactor: return Operand; // Factor of one node? No factor. + case ISD::FP_ROUND: + case ISD::FP_EXTEND: + assert(MVT::isFloatingPoint(VT) && + MVT::isFloatingPoint(Operand.getValueType()) && "Invalid FP cast!"); + break; case ISD::SIGN_EXTEND: + assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && + "Invalid SIGN_EXTEND!"); if (Operand.getValueType() == VT) return Operand; // noop extension assert(Operand.getValueType() < VT && "Invalid sext node, dst < src!"); if (OpOpcode == ISD::SIGN_EXTEND || OpOpcode == ISD::ZERO_EXTEND) return getNode(OpOpcode, VT, Operand.Val->getOperand(0)); break; case ISD::ZERO_EXTEND: + assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && + "Invalid ZERO_EXTEND!"); if (Operand.getValueType() == VT) return Operand; // noop extension assert(Operand.getValueType() < VT && "Invalid zext node, dst < src!"); if (OpOpcode == ISD::ZERO_EXTEND) // (zext (zext x)) -> (zext x) return getNode(ISD::ZERO_EXTEND, VT, Operand.Val->getOperand(0)); break; case ISD::ANY_EXTEND: + assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && + "Invalid ANY_EXTEND!"); if (Operand.getValueType() == VT) return Operand; // noop extension assert(Operand.getValueType() < VT && "Invalid anyext node, dst < src!"); if (OpOpcode == ISD::ZERO_EXTEND || OpOpcode == ISD::SIGN_EXTEND) @@ -1066,6 +1077,8 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT, return getNode(OpOpcode, VT, Operand.Val->getOperand(0)); break; case ISD::TRUNCATE: + assert(MVT::isInteger(VT) && MVT::isInteger(Operand.getValueType()) && + "Invalid TRUNCATE!"); if (Operand.getValueType() == VT) return Operand; // noop truncate assert(Operand.getValueType() > VT && "Invalid truncate node, src < dst!"); if (OpOpcode == ISD::TRUNCATE) |