diff options
Diffstat (limited to 'llvm/utils/TableGen/GlobalISelEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/GlobalISelEmitter.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/GlobalISelEmitter.cpp b/llvm/utils/TableGen/GlobalISelEmitter.cpp index 9b356148cc17..ec41cd9fec07 100644 --- a/llvm/utils/TableGen/GlobalISelEmitter.cpp +++ b/llvm/utils/TableGen/GlobalISelEmitter.cpp @@ -207,7 +207,7 @@ static Error isTrivialOperatorNode(const TreePatternNode &N) { if (Predicate.isImmediatePattern()) continue; - if (Predicate.hasNoUse()) + if (Predicate.hasNoUse() || Predicate.hasOneUse()) continue; if (Predicate.isNonExtLoad() || Predicate.isAnyExtLoad() || @@ -782,6 +782,10 @@ Expected<InstructionMatcher &> GlobalISelEmitter::createAndImportSelDAGMatcher( InsnMatcher.addPredicate<NoUsePredicateMatcher>(); HasAddedBuiltinMatcher = true; } + if (Predicate.hasOneUse()) { + InsnMatcher.addPredicate<OneUsePredicateMatcher>(); + HasAddedBuiltinMatcher = true; + } if (Predicate.hasGISelPredicateCode()) { if (Predicate.usesOperands()) { |
