From: Fangrui Song Date: Wed, 3 Jul 2019 08:13:17 +0000 (+0000) Subject: Change std::{lower,upper}_bound to llvm::{lower,upper}_bound or llvm::partition_point... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b76b345fe11bc58f9e5037556f1a46b890d41cbf;p=clang Change std::{lower,upper}_bound to llvm::{lower,upper}_bound or llvm::partition_point. NFC git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365006 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Serialization/ContinuousRangeMap.h b/include/clang/Serialization/ContinuousRangeMap.h index ce5748b250..0c05537dd1 100644 --- a/include/clang/Serialization/ContinuousRangeMap.h +++ b/include/clang/Serialization/ContinuousRangeMap.h @@ -73,7 +73,7 @@ public: } void insertOrReplace(const value_type &Val) { - iterator I = std::lower_bound(Rep.begin(), Rep.end(), Val, Compare()); + iterator I = llvm::lower_bound(Rep, Val, Compare()); if (I != Rep.end() && I->first == Val.first) { I->second = Val.second; return; @@ -91,7 +91,7 @@ public: const_iterator end() const { return Rep.end(); } iterator find(Int K) { - iterator I = std::upper_bound(Rep.begin(), Rep.end(), K, Compare()); + iterator I = llvm::upper_bound(Rep, K, Compare()); // I points to the first entry with a key > K, which is the range that // follows the one containing K. if (I == Rep.begin()) diff --git a/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp b/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp index 74d5933868..5d0cfb8a8b 100644 --- a/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp +++ b/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp @@ -42,9 +42,8 @@ static bool isEmptyARCMTMacroStatement(NullStmt *S, return false; SourceManager &SM = Ctx.getSourceManager(); - std::vector::iterator - I = std::upper_bound(MacroLocs.begin(), MacroLocs.end(), SemiLoc, - BeforeThanCompare(SM)); + std::vector::iterator I = llvm::upper_bound( + MacroLocs, SemiLoc, BeforeThanCompare(SM)); --I; SourceLocation AfterMacroLoc = I->getLocWithOffset(getARCMTMacroName().size()); diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index db8e74ec94..cf0221542f 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -228,12 +228,11 @@ RawComment *ASTContext::getRawCommentForDeclNoCache(const Decl *D) const { if (Found) { Comment = MaybeBeforeDecl + 1; - assert(Comment == std::lower_bound(RawComments.begin(), RawComments.end(), - &CommentAtDeclLoc, Compare)); + assert(Comment == + llvm::lower_bound(RawComments, &CommentAtDeclLoc, Compare)); } else { // Slow path. - Comment = std::lower_bound(RawComments.begin(), RawComments.end(), - &CommentAtDeclLoc, Compare); + Comment = llvm::lower_bound(RawComments, &CommentAtDeclLoc, Compare); } } diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp index 6195d5fa66..a5793ce3aa 100644 --- a/lib/AST/DeclCXX.cpp +++ b/lib/AST/DeclCXX.cpp @@ -1450,10 +1450,8 @@ CXXRecordDecl::getLambdaExplicitTemplateParameters() const { [](const NamedDecl *D) { return !D->isImplicit(); }) && "Explicit template params should be ordered before implicit ones"); - const auto ExplicitEnd = std::lower_bound(List->begin(), List->end(), false, - [](const NamedDecl *D, bool) { - return !D->isImplicit(); - }); + const auto ExplicitEnd = llvm::partition_point( + *List, [](const NamedDecl *D) { return !D->isImplicit(); }); return llvm::makeArrayRef(List->begin(), ExplicitEnd); } diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp index c95681496a..c82f74413e 100644 --- a/lib/Basic/Diagnostic.cpp +++ b/lib/Basic/Diagnostic.cpp @@ -205,10 +205,9 @@ DiagnosticsEngine::DiagStateMap::lookup(SourceManager &SrcMgr, DiagnosticsEngine::DiagState * DiagnosticsEngine::DiagStateMap::File::lookup(unsigned Offset) const { - auto OnePastIt = std::upper_bound( - StateTransitions.begin(), StateTransitions.end(), Offset, - [](unsigned Offset, const DiagStatePoint &P) { - return Offset < P.Offset; + auto OnePastIt = + llvm::partition_point(StateTransitions, [=](const DiagStatePoint &P) { + return P.Offset <= Offset; }); assert(OnePastIt != StateTransitions.begin() && "missing initial state"); return OnePastIt[-1].State; diff --git a/lib/Basic/DiagnosticIDs.cpp b/lib/Basic/DiagnosticIDs.cpp index e8a99d08a9..f189e5de49 100644 --- a/lib/Basic/DiagnosticIDs.cpp +++ b/lib/Basic/DiagnosticIDs.cpp @@ -580,11 +580,8 @@ static bool getDiagnosticsInGroup(diag::Flavor Flavor, bool DiagnosticIDs::getDiagnosticsInGroup(diag::Flavor Flavor, StringRef Group, SmallVectorImpl &Diags) const { - auto Found = std::lower_bound(std::begin(OptionTable), std::end(OptionTable), - Group, - [](const WarningOption &LHS, StringRef RHS) { - return LHS.getName() < RHS; - }); + auto Found = llvm::partition_point( + OptionTable, [=](const WarningOption &O) { return O.getName() < Group; }); if (Found == std::end(OptionTable) || Found->getName() != Group) return true; // Option not found. diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 8d56b19b10..c57f1fd856 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -277,9 +277,9 @@ const LineEntry *LineTableInfo::FindNearestLineEntry(FileID FID, return &Entries.back(); // Do a binary search to find the maximal element that is still before Offset. - std::vector::const_iterator I = - std::upper_bound(Entries.begin(), Entries.end(), Offset); - if (I == Entries.begin()) return nullptr; + std::vector::const_iterator I = llvm::upper_bound(Entries, Offset); + if (I == Entries.begin()) + return nullptr; return &*--I; } diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 287e691870..8022cdcdbe 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -5076,8 +5076,7 @@ findNeonIntrinsicInMap(ArrayRef IntrinsicMap, } #endif - const NeonIntrinsicInfo *Builtin = - std::lower_bound(IntrinsicMap.begin(), IntrinsicMap.end(), BuiltinID); + const NeonIntrinsicInfo *Builtin = llvm::lower_bound(IntrinsicMap, BuiltinID); if (Builtin != IntrinsicMap.end() && Builtin->BuiltinID == BuiltinID) return Builtin; diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp index 9f4b686ad9..cc5c463224 100644 --- a/lib/CodeGen/CGExprConstant.cpp +++ b/lib/CodeGen/CGExprConstant.cpp @@ -288,7 +288,7 @@ Optional ConstantAggregateBuilder::splitAt(CharUnits Pos) { return Offsets.size(); while (true) { - auto FirstAfterPos = std::upper_bound(Offsets.begin(), Offsets.end(), Pos); + auto FirstAfterPos = llvm::upper_bound(Offsets, Pos); if (FirstAfterPos == Offsets.begin()) return 0; diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 4e261d9ec2..ee36caaebc 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -2447,8 +2447,8 @@ void ASTUnit::addFileLevelDecl(Decl *D) { return; } - LocDeclsTy::iterator I = std::upper_bound(Decls->begin(), Decls->end(), - LocDecl, llvm::less_first()); + LocDeclsTy::iterator I = + llvm::upper_bound(*Decls, LocDecl, llvm::less_first()); Decls->insert(I, LocDecl); } @@ -2473,9 +2473,9 @@ void ASTUnit::findFileRegionDecls(FileID File, unsigned Offset, unsigned Length, return; LocDeclsTy::iterator BeginIt = - std::lower_bound(LocDecls.begin(), LocDecls.end(), - std::make_pair(Offset, (Decl *)nullptr), - llvm::less_first()); + llvm::partition_point(LocDecls, [=](std::pair LD) { + return LD.first < Offset; + }); if (BeginIt != LocDecls.begin()) --BeginIt; @@ -2486,9 +2486,9 @@ void ASTUnit::findFileRegionDecls(FileID File, unsigned Offset, unsigned Length, BeginIt->second->isTopLevelDeclInObjCContainer()) --BeginIt; - LocDeclsTy::iterator EndIt = std::upper_bound( - LocDecls.begin(), LocDecls.end(), - std::make_pair(Offset + Length, (Decl *)nullptr), llvm::less_first()); + LocDeclsTy::iterator EndIt = llvm::upper_bound( + LocDecls, std::make_pair(Offset + Length, (Decl *)nullptr), + llvm::less_first()); if (EndIt != LocDecls.end()) ++EndIt; diff --git a/lib/Index/FileIndexRecord.cpp b/lib/Index/FileIndexRecord.cpp index dd5ad71771..c9dcb0f537 100644 --- a/lib/Index/FileIndexRecord.cpp +++ b/lib/Index/FileIndexRecord.cpp @@ -36,7 +36,7 @@ void FileIndexRecord::addDeclOccurence(SymbolRoleSet Roles, unsigned Offset, DeclOccurrence NewInfo(Roles, Offset, D, Relations); // We keep Decls in order as we need to access them in this order in all cases. - auto It = std::upper_bound(Decls.begin(), Decls.end(), NewInfo); + auto It = llvm::upper_bound(Decls, NewInfo); Decls.insert(It, std::move(NewInfo)); } diff --git a/lib/Lex/PPConditionalDirectiveRecord.cpp b/lib/Lex/PPConditionalDirectiveRecord.cpp index b9f68e4829..facee28007 100644 --- a/lib/Lex/PPConditionalDirectiveRecord.cpp +++ b/lib/Lex/PPConditionalDirectiveRecord.cpp @@ -25,9 +25,8 @@ bool PPConditionalDirectiveRecord::rangeIntersectsConditionalDirective( if (Range.isInvalid()) return false; - CondDirectiveLocsTy::const_iterator - low = std::lower_bound(CondDirectiveLocs.begin(), CondDirectiveLocs.end(), - Range.getBegin(), CondDirectiveLoc::Comp(SourceMgr)); + CondDirectiveLocsTy::const_iterator low = llvm::lower_bound( + CondDirectiveLocs, Range.getBegin(), CondDirectiveLoc::Comp(SourceMgr)); if (low == CondDirectiveLocs.end()) return false; @@ -55,9 +54,8 @@ SourceLocation PPConditionalDirectiveRecord::findConditionalDirectiveRegionLoc( Loc)) return CondDirectiveStack.back(); - CondDirectiveLocsTy::const_iterator - low = std::lower_bound(CondDirectiveLocs.begin(), CondDirectiveLocs.end(), - Loc, CondDirectiveLoc::Comp(SourceMgr)); + CondDirectiveLocsTy::const_iterator low = llvm::lower_bound( + CondDirectiveLocs, Loc, CondDirectiveLoc::Comp(SourceMgr)); assert(low != CondDirectiveLocs.end()); return low->getRegionLoc(); } diff --git a/lib/Lex/PreprocessingRecord.cpp b/lib/Lex/PreprocessingRecord.cpp index b372b2df50..115256db48 100644 --- a/lib/Lex/PreprocessingRecord.cpp +++ b/lib/Lex/PreprocessingRecord.cpp @@ -238,16 +238,13 @@ unsigned PreprocessingRecord::findBeginLocalPreprocessedEntity( return First - PreprocessedEntities.begin(); } -unsigned PreprocessingRecord::findEndLocalPreprocessedEntity( - SourceLocation Loc) const { +unsigned +PreprocessingRecord::findEndLocalPreprocessedEntity(SourceLocation Loc) const { if (SourceMgr.isLoadedSourceLocation(Loc)) return 0; - std::vector::const_iterator - I = std::upper_bound(PreprocessedEntities.begin(), - PreprocessedEntities.end(), - Loc, - PPEntityComp<&SourceRange::getBegin>(SourceMgr)); + auto I = llvm::upper_bound(PreprocessedEntities, Loc, + PPEntityComp<&SourceRange::getBegin>(SourceMgr)); return I - PreprocessedEntities.begin(); } @@ -305,10 +302,9 @@ PreprocessingRecord::addPreprocessedEntity(PreprocessedEntity *Entity) { } // Linear search unsuccessful. Do a binary search. - pp_iter I = std::upper_bound(PreprocessedEntities.begin(), - PreprocessedEntities.end(), - BeginLoc, - PPEntityComp<&SourceRange::getBegin>(SourceMgr)); + pp_iter I = + llvm::upper_bound(PreprocessedEntities, BeginLoc, + PPEntityComp<&SourceRange::getBegin>(SourceMgr)); pp_iter insertI = PreprocessedEntities.insert(I, Entity); return getPPEntityID(insertI - PreprocessedEntities.begin(), /*isLoaded=*/false); diff --git a/lib/Parse/ParseStmtAsm.cpp b/lib/Parse/ParseStmtAsm.cpp index 75f3ac396e..1153c2510b 100644 --- a/lib/Parse/ParseStmtAsm.cpp +++ b/lib/Parse/ParseStmtAsm.cpp @@ -144,8 +144,8 @@ void ClangAsmParserCallback::findTokensForString( // Try to find a token whose offset matches the first token. unsigned FirstCharOffset = Str.begin() - AsmString.begin(); - const unsigned *FirstTokOffset = std::lower_bound( - AsmTokOffsets.begin(), AsmTokOffsets.end(), FirstCharOffset); + const unsigned *FirstTokOffset = + llvm::lower_bound(AsmTokOffsets, FirstCharOffset); // For now, assert that the start of the string exactly // corresponds to the start of a token. @@ -174,8 +174,7 @@ ClangAsmParserCallback::translateLocation(const llvm::SourceMgr &LSM, unsigned Offset = SMLoc.getPointer() - LBuf->getBufferStart(); // Figure out which token that offset points into. - const unsigned *TokOffsetPtr = - std::lower_bound(AsmTokOffsets.begin(), AsmTokOffsets.end(), Offset); + const unsigned *TokOffsetPtr = llvm::lower_bound(AsmTokOffsets, Offset); unsigned TokIndex = TokOffsetPtr - AsmTokOffsets.begin(); unsigned TokOffset = *TokOffsetPtr; diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index e8bcc83e76..92951a8e3b 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -2701,8 +2701,7 @@ bool Sema::CheckHexagonBuiltinCpu(unsigned BuiltinID, CallExpr *TheCall) { const TargetInfo &TI = Context.getTargetInfo(); const BuiltinAndString *FC = - std::lower_bound(std::begin(ValidCPU), std::end(ValidCPU), BuiltinID, - LowerBoundCmp); + llvm::lower_bound(ValidCPU, BuiltinID, LowerBoundCmp); if (FC != std::end(ValidCPU) && FC->BuiltinID == BuiltinID) { const TargetOptions &Opts = TI.getTargetOpts(); StringRef CPU = Opts.CPU; @@ -2718,8 +2717,7 @@ bool Sema::CheckHexagonBuiltinCpu(unsigned BuiltinID, CallExpr *TheCall) { } const BuiltinAndString *FH = - std::lower_bound(std::begin(ValidHVX), std::end(ValidHVX), BuiltinID, - LowerBoundCmp); + llvm::lower_bound(ValidHVX, BuiltinID, LowerBoundCmp); if (FH != std::end(ValidHVX) && FH->BuiltinID == BuiltinID) { if (!TI.hasFeature("hvx")) return Diag(TheCall->getBeginLoc(), @@ -2948,11 +2946,8 @@ bool Sema::CheckHexagonBuiltinArgument(unsigned BuiltinID, CallExpr *TheCall) { true); (void)SortOnce; - const BuiltinInfo *F = - std::lower_bound(std::begin(Infos), std::end(Infos), BuiltinID, - [](const BuiltinInfo &BI, unsigned BuiltinID) { - return BI.BuiltinID < BuiltinID; - }); + const BuiltinInfo *F = llvm::partition_point( + Infos, [=](const BuiltinInfo &BI) { return BI.BuiltinID < BuiltinID; }); if (F == std::end(Infos) || F->BuiltinID != BuiltinID) return false; diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 3b149e6fdb..0e5881e327 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -1041,9 +1041,8 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, // Find the smallest value >= the lower bound. If I is in the // case range, then we have overlap. - CaseValsTy::iterator I = std::lower_bound(CaseVals.begin(), - CaseVals.end(), CRLo, - CaseCompareFunctor()); + CaseValsTy::iterator I = + llvm::lower_bound(CaseVals, CRLo, CaseCompareFunctor()); if (I != CaseVals.end() && I->first < CRHi) { OverlapVal = I->first; // Found overlap with scalar. OverlapStmt = I->second; diff --git a/lib/Serialization/ASTReader.cpp b/lib/Serialization/ASTReader.cpp index d04db59f35..0d8209c01c 100644 --- a/lib/Serialization/ASTReader.cpp +++ b/lib/Serialization/ASTReader.cpp @@ -7948,9 +7948,8 @@ void ASTReader::FindFileRegionDecls(FileID File, SourceLocation EndLoc = BeginLoc.getLocWithOffset(Length); DeclIDComp DIDComp(*this, *DInfo.Mod); - ArrayRef::iterator - BeginIt = std::lower_bound(DInfo.Decls.begin(), DInfo.Decls.end(), - BeginLoc, DIDComp); + ArrayRef::iterator BeginIt = + llvm::lower_bound(DInfo.Decls, BeginLoc, DIDComp); if (BeginIt != DInfo.Decls.begin()) --BeginIt; @@ -7962,9 +7961,8 @@ void ASTReader::FindFileRegionDecls(FileID File, ->isTopLevelDeclInObjCContainer()) --BeginIt; - ArrayRef::iterator - EndIt = std::upper_bound(DInfo.Decls.begin(), DInfo.Decls.end(), - EndLoc, DIDComp); + ArrayRef::iterator EndIt = + llvm::upper_bound(DInfo.Decls, EndLoc, DIDComp); if (EndIt != DInfo.Decls.end()) ++EndIt; diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 60187379bf..c60e2da20f 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -5707,7 +5707,7 @@ void ASTWriter::associateDeclWithFile(const Decl *D, DeclID ID) { } LocDeclIDsTy::iterator I = - std::upper_bound(Decls.begin(), Decls.end(), LocDecl, llvm::less_first()); + llvm::upper_bound(Decls, LocDecl, llvm::less_first()); Decls.insert(I, LocDecl); } diff --git a/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp b/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp index 09f2fd635b..0aa410de15 100644 --- a/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp @@ -274,15 +274,13 @@ public: long long CurAlignmentBits = 1ull << (std::min)(TrailingZeros, 62u); CharUnits CurAlignment = CharUnits::fromQuantity(CurAlignmentBits); FieldInfo InsertPoint = {CurAlignment, CharUnits::Zero(), nullptr}; - auto CurBegin = Fields.begin(); - auto CurEnd = Fields.end(); // In the typical case, this will find the last element // of the vector. We won't find a middle element unless // we started on a poorly aligned address or have an overly // aligned field. - auto Iter = std::upper_bound(CurBegin, CurEnd, InsertPoint); - if (Iter != CurBegin) { + auto Iter = llvm::upper_bound(Fields, InsertPoint); + if (Iter != Fields.begin()) { // We found a field that we can layout with the current alignment. --Iter; NewOffset += Iter->Size; diff --git a/lib/Tooling/InterpolatingCompilationDatabase.cpp b/lib/Tooling/InterpolatingCompilationDatabase.cpp index a467d1318e..53c8dd448f 100644 --- a/lib/Tooling/InterpolatingCompilationDatabase.cpp +++ b/lib/Tooling/InterpolatingCompilationDatabase.cpp @@ -478,8 +478,7 @@ private: ArrayRef Idx) const { assert(!Idx.empty()); // Longest substring match will be adjacent to a direct lookup. - auto It = - std::lower_bound(Idx.begin(), Idx.end(), SubstringAndIndex{Key, 0}); + auto It = llvm::lower_bound(Idx, SubstringAndIndex{Key, 0}); if (It == Idx.begin()) return *It; if (It == Idx.end()) diff --git a/tools/diagtool/DiagnosticNames.cpp b/tools/diagtool/DiagnosticNames.cpp index cc7385a11a..eddb99d1f5 100644 --- a/tools/diagtool/DiagnosticNames.cpp +++ b/tools/diagtool/DiagnosticNames.cpp @@ -54,9 +54,7 @@ const DiagnosticRecord &diagtool::getDiagnosticForID(short DiagID) { DiagnosticRecord Key = {nullptr, DiagID, 0}; const DiagnosticRecord *Result = - std::lower_bound(std::begin(BuiltinDiagnosticsByID), - std::end(BuiltinDiagnosticsByID), - Key, orderByID); + llvm::lower_bound(BuiltinDiagnosticsByID, Key, orderByID); assert(Result && "diagnostic not found; table may be out of date"); return *Result; } diff --git a/tools/diagtool/TreeView.cpp b/tools/diagtool/TreeView.cpp index c3c4d5f6d2..154c52a485 100644 --- a/tools/diagtool/TreeView.cpp +++ b/tools/diagtool/TreeView.cpp @@ -102,9 +102,7 @@ public: return 1; } - const GroupRecord *Found = - std::lower_bound(AllGroups.begin(), AllGroups.end(), RootGroup); - + const GroupRecord *Found = llvm::lower_bound(AllGroups, RootGroup); if (Found == AllGroups.end() || Found->getName() != RootGroup) { llvm::errs() << "No such diagnostic group exists\n"; return 1;