diff --git a/llvm/include/llvm/CodeGen/SelectionDAGISel.h b/llvm/include/llvm/CodeGen/SelectionDAGISel.h index 375d2f31e283..5241a51dd8cd 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGISel.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGISel.h @@ -435,9 +435,9 @@ public: /// It runs node predicate number PredNo and returns true if it succeeds or /// false if it fails. The number is a private implementation detail to the /// code tblgen produces. - virtual bool CheckNodePredicateWithOperands( - SDValue Op, unsigned PredNo, - const SmallVectorImpl &Operands) const { + virtual bool + CheckNodePredicateWithOperands(SDValue Op, unsigned PredNo, + ArrayRef Operands) const { llvm_unreachable("Tblgen should generate the implementation of this!"); } diff --git a/llvm/lib/TableGen/StringMatcher.cpp b/llvm/lib/TableGen/StringMatcher.cpp index b85849e40bb5..eb9036625796 100644 --- a/llvm/lib/TableGen/StringMatcher.cpp +++ b/llvm/lib/TableGen/StringMatcher.cpp @@ -11,7 +11,7 @@ //===----------------------------------------------------------------------===// #include "llvm/TableGen/StringMatcher.h" -#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" #include @@ -23,14 +23,15 @@ using namespace llvm; /// FindFirstNonCommonLetter - Find the first character in the keys of the -/// string pairs that is not shared across the whole set of strings. All +/// string pairs that is not shared across the whole set of strings. All /// strings are assumed to have the same length. static unsigned FindFirstNonCommonLetter(ArrayRef Matches) { assert(!Matches.empty()); for (auto [Idx, Letter] : enumerate(Matches[0]->first)) { - // Check to see if `Letter` is the same across the set. - for (const StringMatcher::StringPair *Match : Matches) + // Check to see if `Letter` is the same across the set. Since the letter is + // from `Matches[0]`, we can skip `Matches[0]` in the loop below. + for (const StringMatcher::StringPair *Match : Matches.drop_front()) if (Match->first[Idx] != Letter) return Idx; } diff --git a/llvm/lib/TableGen/StringToOffsetTable.cpp b/llvm/lib/TableGen/StringToOffsetTable.cpp index d73b5749ad7d..0db3f35f1c4b 100644 --- a/llvm/lib/TableGen/StringToOffsetTable.cpp +++ b/llvm/lib/TableGen/StringToOffsetTable.cpp @@ -44,8 +44,8 @@ void StringToOffsetTable::EmitStringTableDef(raw_ostream &OS, const Twine &Name, bool UseChars = !EmitLongStrLiterals && AggregateString.size() > (64 * 1024); OS << (UseChars ? "{\n" : "\n"); - llvm::ListSeparator LineSep(UseChars ? ",\n" : "\n"); - llvm::SmallVector Strings(split(AggregateString, '\0')); + ListSeparator LineSep(UseChars ? ",\n" : "\n"); + SmallVector Strings(split(AggregateString, '\0')); // We should always have an empty string at the start, and because these are // null terminators rather than separators, we'll have one at the end as // well. Skip the end one. @@ -63,7 +63,7 @@ void StringToOffsetTable::EmitStringTableDef(raw_ostream &OS, const Twine &Name, continue; } - llvm::ListSeparator CharSep(", "); + ListSeparator CharSep(", "); for (char C : Str) { OS << CharSep << "'"; OS.write_escaped(StringRef(&C, 1)); diff --git a/llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp index 3a4ca1b45156..86be0d12d7b8 100644 --- a/llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp +++ b/llvm/utils/TableGen/Common/CodeGenDAGPatterns.cpp @@ -3187,7 +3187,7 @@ bool TreePattern::InferAllTypes( return true; } - const SmallVectorImpl &InNodes = InIter->second; + ArrayRef InNodes = InIter->second; // The input types should be fully resolved by now. for (TreePatternNode *Node : Nodes) { diff --git a/llvm/utils/TableGen/Common/CodeGenSchedule.cpp b/llvm/utils/TableGen/Common/CodeGenSchedule.cpp index af7e43929bcf..a93b5be01754 100644 --- a/llvm/utils/TableGen/Common/CodeGenSchedule.cpp +++ b/llvm/utils/TableGen/Common/CodeGenSchedule.cpp @@ -1292,8 +1292,8 @@ public: PredTransitions(CodeGenSchedModels &sm) : SchedModels(sm) {} - bool substituteVariantOperand(const SmallVectorImpl &RWSeq, - bool IsRead, unsigned StartIdx); + bool substituteVariantOperand(ArrayRef RWSeq, bool IsRead, + unsigned StartIdx); bool substituteVariants(const PredTransition &Trans); @@ -1526,8 +1526,8 @@ void PredTransitions::pushVariant(const TransVariant &VInfo, bool IsRead) { // operand. StartIdx is an index into TransVec where partial results // starts. RWSeq must be applied to all transitions between StartIdx and the end // of TransVec. -bool PredTransitions::substituteVariantOperand( - const SmallVectorImpl &RWSeq, bool IsRead, unsigned StartIdx) { +bool PredTransitions::substituteVariantOperand(ArrayRef RWSeq, + bool IsRead, unsigned StartIdx) { bool Subst = false; // Visit each original RW within the current sequence. for (unsigned int RWI : RWSeq) { @@ -1591,7 +1591,7 @@ bool PredTransitions::substituteVariants(const PredTransition &Trans) { } static void addSequences(CodeGenSchedModels &SchedModels, - const SmallVectorImpl> &Seqs, + ArrayRef> Seqs, IdxVec &Result, bool IsRead) { for (const auto &S : Seqs) if (!S.empty()) diff --git a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp index 49c33dc5ca14..d3fba6a92357 100644 --- a/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp @@ -1158,7 +1158,7 @@ void MatcherTableEmitter::EmitPredicateFunctions(raw_ostream &OS) { EmitNodePredicatesFunction( NodePredicatesWithOperands, "CheckNodePredicateWithOperands(SDValue Op, unsigned PredNo, " - "const SmallVectorImpl &Operands) const", + "ArrayRef Operands) const", OS); // Emit CompletePattern matchers. diff --git a/llvm/utils/TableGen/DAGISelMatcherOpt.cpp b/llvm/utils/TableGen/DAGISelMatcherOpt.cpp index 05bca75bcd4e..8d8189983270 100644 --- a/llvm/utils/TableGen/DAGISelMatcherOpt.cpp +++ b/llvm/utils/TableGen/DAGISelMatcherOpt.cpp @@ -282,8 +282,8 @@ static void ContractNodes(std::unique_ptr &InputMatcherPtr, #endif if (ResultsMatch) { - const SmallVectorImpl &VTs = EN->getVTList(); - const SmallVectorImpl &Operands = EN->getOperandList(); + ArrayRef VTs = EN->getVTList(); + ArrayRef Operands = EN->getOperandList(); MatcherPtr->reset(new MorphNodeToMatcher( EN->getInstruction(), VTs, Operands, EN->hasChain(), EN->hasInGlue(), EN->hasOutGlue(), EN->hasMemRefs(),