Add support for nodes with void arguments, like chain nodes
authorChris Lattner <sabre@nondot.org>
Fri, 15 Aug 2003 04:28:04 +0000 (04:28 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 15 Aug 2003 04:28:04 +0000 (04:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7869 91177308-0d34-0410-b5e6-96231b3b80d8

support/tools/TableGen/InstrSelectorEmitter.cpp
utils/TableGen/InstrSelectorEmitter.cpp

index 28c7de1140372a04ba445056c42933c3c76dce40..2db6da4bd2ff67d674bbfc821a863f2a2a3dac1c 100644 (file)
@@ -299,6 +299,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) {
       MadeChange |= Child->updateNodeType(ISE.getTarget().getPointerType(),
                                           TheRecord->getName());
       break;
+    case NodeType::Void:
+      MadeChange |= Child->updateNodeType(MVT::isVoid, TheRecord->getName());
+      break;
     default: assert(0 && "Invalid argument ArgType!");
     }
   }
@@ -449,8 +452,6 @@ void InstrSelectorEmitter::ReadNodeTypes() {
         throw "In node " + Node->getName() + ", arg 0 cannot have type 'arg0'!";
       if (a == 1 && ArgTypes.back() == NodeType::Arg1)
         throw "In node " + Node->getName() + ", arg 1 cannot have type 'arg1'!";
-      if (ArgTypes.back() == NodeType::Void)
-        throw "In node " + Node->getName() + ", args cannot be void type!";
     }
     if ((RetTy == NodeType::Arg0 && Args->getSize() == 0) ||
         (RetTy == NodeType::Arg1 && Args->getSize() < 2))
index 28c7de1140372a04ba445056c42933c3c76dce40..2db6da4bd2ff67d674bbfc821a863f2a2a3dac1c 100644 (file)
@@ -299,6 +299,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) {
       MadeChange |= Child->updateNodeType(ISE.getTarget().getPointerType(),
                                           TheRecord->getName());
       break;
+    case NodeType::Void:
+      MadeChange |= Child->updateNodeType(MVT::isVoid, TheRecord->getName());
+      break;
     default: assert(0 && "Invalid argument ArgType!");
     }
   }
@@ -449,8 +452,6 @@ void InstrSelectorEmitter::ReadNodeTypes() {
         throw "In node " + Node->getName() + ", arg 0 cannot have type 'arg0'!";
       if (a == 1 && ArgTypes.back() == NodeType::Arg1)
         throw "In node " + Node->getName() + ", arg 1 cannot have type 'arg1'!";
-      if (ArgTypes.back() == NodeType::Void)
-        throw "In node " + Node->getName() + ", args cannot be void type!";
     }
     if ((RetTy == NodeType::Arg0 && Args->getSize() == 0) ||
         (RetTy == NodeType::Arg1 && Args->getSize() < 2))