diff options
-rw-r--r-- | utils/TableGen/DAGISelMatcherOpt.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/utils/TableGen/DAGISelMatcherOpt.cpp b/utils/TableGen/DAGISelMatcherOpt.cpp index 910c4c5..820ab63 100644 --- a/utils/TableGen/DAGISelMatcherOpt.cpp +++ b/utils/TableGen/DAGISelMatcherOpt.cpp @@ -44,11 +44,13 @@ static void ContractNodes(OwningPtr<Matcher> &MatcherPtr, if (MoveChildMatcher *MC = dyn_cast<MoveChildMatcher>(N)) { Matcher *New = 0; if (RecordMatcher *RM = dyn_cast<RecordMatcher>(MC->getNext())) - New = new RecordChildMatcher(MC->getChildNo(), RM->getWhatFor(), - RM->getResultNo()); + if (MC->getChildNo() < 8) // Only have RecordChild0...7 + New = new RecordChildMatcher(MC->getChildNo(), RM->getWhatFor(), + RM->getResultNo()); if (CheckTypeMatcher *CT= dyn_cast<CheckTypeMatcher>(MC->getNext())) - New = new CheckChildTypeMatcher(MC->getChildNo(), CT->getType()); + if (MC->getChildNo() < 8) // Only have CheckChildType0...7 + New = new CheckChildTypeMatcher(MC->getChildNo(), CT->getType()); if (New) { // Insert the new node. |