diff options
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r-- | llvm/utils/TableGen/CodeGenDAGPatterns.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp index fe5766f..56cf9c7 100644 --- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp @@ -1523,22 +1523,17 @@ std::string PatternToMatch::getPredicateCheck() const { getPredicateRecords(PredicateRecs); SmallString<128> PredicateCheck; + raw_svector_ostream OS(PredicateCheck); + ListSeparator LS(" && "); for (Record *Pred : PredicateRecs) { StringRef CondString = Pred->getValueAsString("CondString"); if (CondString.empty()) continue; - if (!PredicateCheck.empty()) - PredicateCheck += " && "; - PredicateCheck += "("; - PredicateCheck += CondString; - PredicateCheck += ")"; + OS << LS << '(' << CondString << ')'; } - if (!HwModeFeatures.empty()) { - if (!PredicateCheck.empty()) - PredicateCheck += " && "; - PredicateCheck += HwModeFeatures; - } + if (!HwModeFeatures.empty()) + OS << LS << HwModeFeatures; return std::string(PredicateCheck); } |