diff options
| -rw-r--r-- | llvm/utils/TableGen/DAGISelMatcherOpt.cpp | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/DAGISelMatcherOpt.cpp b/llvm/utils/TableGen/DAGISelMatcherOpt.cpp index 910c4c5d697..820ab63c1fa 100644 --- a/llvm/utils/TableGen/DAGISelMatcherOpt.cpp +++ b/llvm/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.  | 

