diff options
Diffstat (limited to 'llvm/utils/TableGen/DAGISelEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/DAGISelEmitter.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/DAGISelEmitter.cpp b/llvm/utils/TableGen/DAGISelEmitter.cpp index 2854e4f221d..533664669ac 100644 --- a/llvm/utils/TableGen/DAGISelEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelEmitter.cpp @@ -1959,10 +1959,17 @@ void DAGISelEmitter::run(raw_ostream &OS) { PatternSortingPredicate2(CGP)); - // Convert each pattern into Matcher's. + // Convert each variant of each pattern into a Matcher. std::vector<Matcher*> PatternMatchers; - for (unsigned i = 0, e = Patterns.size(); i != e; ++i) - PatternMatchers.push_back(ConvertPatternToMatcher(*Patterns[i], CGP)); + for (unsigned i = 0, e = Patterns.size(); i != e; ++i) { + for (unsigned Variant = 0; ; ++Variant) { + if (Matcher *M = ConvertPatternToMatcher(*Patterns[i], Variant, CGP)) + PatternMatchers.push_back(M); + else + break; + } + } + Matcher *TheMatcher = new ScopeMatcher(&PatternMatchers[0], PatternMatchers.size()); |

