From a3c16039b3f119cd83d872f256c45599ae6ac60c Mon Sep 17 00:00:00 2001 From: Mikhail Maltsev Date: Mon, 19 Oct 2020 18:30:51 +0100 Subject: [PATCH] [clang] Use SourceLocation as key in std::map, NFCI SourceLocation implements `operator<`, so `SourceLocation`-s can be used as keys in `std::map` directly, there is no need to extract the internal representation. Since the `operator<` simply compares the internal representations of its operands, this patch does not introduce any functional changes. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D89705 --- clang/lib/ARCMigrate/TransProperties.cpp | 15 +++++---- .../Frontend/Rewrite/InclusionRewriter.cpp | 31 +++++++++---------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/clang/lib/ARCMigrate/TransProperties.cpp b/clang/lib/ARCMigrate/TransProperties.cpp index cba2256ef97b..db0e6acafc66 100644 --- a/clang/lib/ARCMigrate/TransProperties.cpp +++ b/clang/lib/ARCMigrate/TransProperties.cpp @@ -65,7 +65,7 @@ class PropertiesRewriter { }; typedef SmallVector PropsTy; - typedef std::map AtPropDeclsTy; + typedef std::map AtPropDeclsTy; AtPropDeclsTy AtProps; llvm::DenseMap ActionOnProp; @@ -76,13 +76,13 @@ public: static void collectProperties(ObjCContainerDecl *D, AtPropDeclsTy &AtProps, AtPropDeclsTy *PrevAtProps = nullptr) { for (auto *Prop : D->instance_properties()) { - if (Prop->getAtLoc().isInvalid()) + SourceLocation Loc = Prop->getAtLoc(); + if (Loc.isInvalid()) continue; - unsigned RawLoc = Prop->getAtLoc().getRawEncoding(); if (PrevAtProps) - if (PrevAtProps->find(RawLoc) != PrevAtProps->end()) + if (PrevAtProps->find(Loc) != PrevAtProps->end()) continue; - PropsTy &props = AtProps[RawLoc]; + PropsTy &props = AtProps[Loc]; props.push_back(Prop); } } @@ -113,8 +113,7 @@ public: ObjCIvarDecl *ivarD = implD->getPropertyIvarDecl(); if (!ivarD || ivarD->isInvalidDecl()) continue; - unsigned rawAtLoc = propD->getAtLoc().getRawEncoding(); - AtPropDeclsTy::iterator findAtLoc = AtProps.find(rawAtLoc); + AtPropDeclsTy::iterator findAtLoc = AtProps.find(propD->getAtLoc()); if (findAtLoc == AtProps.end()) continue; @@ -130,7 +129,7 @@ public: for (AtPropDeclsTy::iterator I = AtProps.begin(), E = AtProps.end(); I != E; ++I) { - SourceLocation atLoc = SourceLocation::getFromRawEncoding(I->first); + SourceLocation atLoc = I->first; PropsTy &props = I->second; if (!getPropertyType(props)->isObjCRetainableType()) continue; diff --git a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp index dcf645f67f2f..4b5447ccda89 100644 --- a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp +++ b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp @@ -44,13 +44,13 @@ class InclusionRewriter : public PPCallbacks { bool ShowLineMarkers; ///< Show #line markers. bool UseLineDirectives; ///< Use of line directives or line markers. /// Tracks where inclusions that change the file are found. - std::map FileIncludes; + std::map FileIncludes; /// Tracks where inclusions that import modules are found. - std::map ModuleIncludes; + std::map ModuleIncludes; /// Tracks where inclusions that enter modules (in a module build) are found. - std::map ModuleEntryIncludes; + std::map ModuleEntryIncludes; /// Tracks where #if and #elif directives get evaluated and whether to true. - std::map IfConditions; + std::map IfConditions; /// Used transitively for building up the FileIncludes mapping over the /// various \c PPCallbacks callbacks. SourceLocation LastInclusionLocation; @@ -65,8 +65,8 @@ public: void detectMainFileEOL(); void handleModuleBegin(Token &Tok) { assert(Tok.getKind() == tok::annot_module_begin); - ModuleEntryIncludes.insert({Tok.getLocation().getRawEncoding(), - (Module *)Tok.getAnnotationValue()}); + ModuleEntryIncludes.insert( + {Tok.getLocation(), (Module *)Tok.getAnnotationValue()}); } private: void FileChanged(SourceLocation Loc, FileChangeReason Reason, @@ -164,7 +164,7 @@ void InclusionRewriter::FileChanged(SourceLocation Loc, return; FileID Id = FullSourceLoc(Loc, SM).getFileID(); auto P = FileIncludes.insert( - std::make_pair(LastInclusionLocation.getRawEncoding(), + std::make_pair(LastInclusionLocation, IncludedFile(Id, NewFileType, PP.GetCurDirLookup()))); (void)P; assert(P.second && "Unexpected revisitation of the same include directive"); @@ -199,8 +199,7 @@ void InclusionRewriter::InclusionDirective(SourceLocation HashLoc, const Module *Imported, SrcMgr::CharacteristicKind FileType){ if (Imported) { - auto P = ModuleIncludes.insert( - std::make_pair(HashLoc.getRawEncoding(), Imported)); + auto P = ModuleIncludes.insert(std::make_pair(HashLoc, Imported)); (void)P; assert(P.second && "Unexpected revisitation of the same include directive"); } else @@ -209,8 +208,7 @@ void InclusionRewriter::InclusionDirective(SourceLocation HashLoc, void InclusionRewriter::If(SourceLocation Loc, SourceRange ConditionRange, ConditionValueKind ConditionValue) { - auto P = IfConditions.insert( - std::make_pair(Loc.getRawEncoding(), ConditionValue == CVK_True)); + auto P = IfConditions.insert(std::make_pair(Loc, ConditionValue == CVK_True)); (void)P; assert(P.second && "Unexpected revisitation of the same if directive"); } @@ -218,8 +216,7 @@ void InclusionRewriter::If(SourceLocation Loc, SourceRange ConditionRange, void InclusionRewriter::Elif(SourceLocation Loc, SourceRange ConditionRange, ConditionValueKind ConditionValue, SourceLocation IfLoc) { - auto P = IfConditions.insert( - std::make_pair(Loc.getRawEncoding(), ConditionValue == CVK_True)); + auto P = IfConditions.insert(std::make_pair(Loc, ConditionValue == CVK_True)); (void)P; assert(P.second && "Unexpected revisitation of the same elif directive"); } @@ -228,7 +225,7 @@ void InclusionRewriter::Elif(SourceLocation Loc, SourceRange ConditionRange, /// an inclusion directive) in the map of inclusion information, FileChanges. const InclusionRewriter::IncludedFile * InclusionRewriter::FindIncludeAtLocation(SourceLocation Loc) const { - const auto I = FileIncludes.find(Loc.getRawEncoding()); + const auto I = FileIncludes.find(Loc); if (I != FileIncludes.end()) return &I->second; return nullptr; @@ -238,7 +235,7 @@ InclusionRewriter::FindIncludeAtLocation(SourceLocation Loc) const { /// an inclusion directive) in the map of module inclusion information. const Module * InclusionRewriter::FindModuleAtLocation(SourceLocation Loc) const { - const auto I = ModuleIncludes.find(Loc.getRawEncoding()); + const auto I = ModuleIncludes.find(Loc); if (I != ModuleIncludes.end()) return I->second; return nullptr; @@ -248,14 +245,14 @@ InclusionRewriter::FindModuleAtLocation(SourceLocation Loc) const { /// an inclusion directive) in the map of module entry information. const Module * InclusionRewriter::FindEnteredModule(SourceLocation Loc) const { - const auto I = ModuleEntryIncludes.find(Loc.getRawEncoding()); + const auto I = ModuleEntryIncludes.find(Loc); if (I != ModuleEntryIncludes.end()) return I->second; return nullptr; } bool InclusionRewriter::IsIfAtLocationTrue(SourceLocation Loc) const { - const auto I = IfConditions.find(Loc.getRawEncoding()); + const auto I = IfConditions.find(Loc); if (I != IfConditions.end()) return I->second; return false;