From f2a17a70f4be4677450ec03abf6840dd97bcd672 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 9 Sep 2005 01:11:44 +0000 Subject: [PATCH] use new accessors to simplify code. Add checking to make sure top-level instr definitions are void git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23288 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/DAGISelEmitter.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 5056e01d048..37e9fa3053d 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -277,7 +277,7 @@ TreePatternNode *TreePatternNode::InlinePatternFragments(TreePattern &TP) { TP.error("'" + Op->getName() + "' fragment requires " + utostr(Frag->getNumArgs()) + " operands!"); - TreePatternNode *FragTree = Frag->getTrees()[0]->clone(); + TreePatternNode *FragTree = Frag->getTree(0)->clone(); // Resolve formal arguments to their actual value. if (Frag->getNumArgs()) { @@ -574,9 +574,9 @@ void DAGISelEmitter::ParseAndResolvePatternFragments(std::ostream &OS) { CodeInit *CI = dynamic_cast(Fragments[i]->getValueInit("Predicate")); if (!CI->getValue().empty()) { - assert(!P->getTrees()[0]->isLeaf() && "Can't be a leaf!"); + assert(!P->getTree(0)->isLeaf() && "Can't be a leaf!"); std::string ClassName = - getSDNodeInfo(P->getTrees()[0]->getOperator()).getSDClassName(); + getSDNodeInfo(P->getTree(0)->getOperator()).getSDClassName(); const char *C2 = ClassName == "SDNode" ? "N" : "inN"; OS << "static inline bool Predicate_" << Fragments[i]->getName() @@ -584,7 +584,7 @@ void DAGISelEmitter::ParseAndResolvePatternFragments(std::ostream &OS) { if (ClassName != "SDNode") OS << " " << ClassName << " *N = cast<" << ClassName << ">(inN);\n"; OS << CI->getValue() << "\n}\n"; - P->getTrees()[0]->setPredicateFn("Predicate_"+Fragments[i]->getName()); + P->getTree(0)->setPredicateFn("Predicate_"+Fragments[i]->getName()); } } @@ -642,6 +642,14 @@ void DAGISelEmitter::ParseAndResolveInstructions() { I->dump(); I->error("Could not infer all types in pattern!"); } + + // Verify that the top-level forms in the instruction are of void type. + for (unsigned j = 0, e = I->getNumTrees(); j != e; ++j) + if (I->getTree(j)->getType() != MVT::isVoid) { + I->dump(); + I->error("Top-level forms in instruction pattern should have" + " void types"); + } DEBUG(I->dump()); Instructions.push_back(I); -- 2.34.1