aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAG.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index faeb872528..f130b161fa 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -1195,7 +1195,11 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT,
SDNode *&N = BinaryOps[std::make_pair(Opcode, std::make_pair(N1, N2))];
if (N) return SDOperand(N, 0);
N = new SDNode(Opcode, N1, N2);
- N->setValueTypes(VT);
+
+ if (Opcode != ISD::READPORT && Opcode != ISD::READIO)
+ N->setValueTypes(VT);
+ else
+ N->setValueTypes(VT, MVT::Other);
AllNodes.push_back(N);
return SDOperand(N, 0);
@@ -1666,6 +1670,11 @@ const char *SDNode::getOperationName() const {
case ISD::MEMCPY: return "memcpy";
case ISD::MEMMOVE: return "memmove";
+ case ISD::READPORT: return "readport";
+ case ISD::WRITEPORT: return "writeport";
+ case ISD::READIO: return "readio";
+ case ISD::WRITEIO: return "writeio";
+
case ISD::SETCC:
const SetCCSDNode *SetCC = cast<SetCCSDNode>(this);
switch (SetCC->getCondition()) {