diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/ARCMigrate')
6 files changed, 57 insertions, 50 deletions
diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/ARCMT.cpp b/contrib/llvm-project/clang/lib/ARCMigrate/ARCMT.cpp index e18def8a0b19..36fbe90e1e3a 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/ARCMT.cpp +++ b/contrib/llvm-project/clang/lib/ARCMigrate/ARCMT.cpp @@ -416,9 +416,11 @@ bool arcmt::getFileRemappings(std::vector<std::pair<std::string,std::string> > & if (err) return true; - PreprocessorOptions PPOpts; - remapper.applyMappings(PPOpts); - remap = PPOpts.RemappedFiles; + remapper.forEachMapping( + [&](StringRef From, StringRef To) { + remap.push_back(std::make_pair(From.str(), To.str())); + }, + [](StringRef, const llvm::MemoryBufferRef &) {}); return false; } diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/FileRemapper.cpp b/contrib/llvm-project/clang/lib/ARCMigrate/FileRemapper.cpp index 0222583c015b..f536af1795ed 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/FileRemapper.cpp +++ b/contrib/llvm-project/clang/lib/ARCMigrate/FileRemapper.cpp @@ -190,6 +190,21 @@ bool FileRemapper::overwriteOriginal(DiagnosticsEngine &Diag, return false; } +void FileRemapper::forEachMapping( + llvm::function_ref<void(StringRef, StringRef)> CaptureFile, + llvm::function_ref<void(StringRef, const llvm::MemoryBufferRef &)> + CaptureBuffer) const { + for (auto &Mapping : FromToMappings) { + if (const FileEntry *FE = Mapping.second.dyn_cast<const FileEntry *>()) { + CaptureFile(Mapping.first->getName(), FE->getName()); + continue; + } + CaptureBuffer( + Mapping.first->getName(), + Mapping.second.get<llvm::MemoryBuffer *>()->getMemBufferRef()); + } +} + void FileRemapper::applyMappings(PreprocessorOptions &PPOpts) const { for (MappingsTy::const_iterator I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I) { diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/ObjCMT.cpp b/contrib/llvm-project/clang/lib/ARCMigrate/ObjCMT.cpp index 51c4a460cc25..68a51a49c718 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/contrib/llvm-project/clang/lib/ARCMigrate/ObjCMT.cpp @@ -156,7 +156,7 @@ protected: return WhiteListFilenames.find(llvm::sys::path::filename(Path)) != WhiteListFilenames.end(); } - bool canModifyFile(const FileEntry *FE) { + bool canModifyFile(Optional<FileEntryRef> FE) { if (!FE) return false; return canModifyFile(FE->getName()); @@ -164,7 +164,7 @@ protected: bool canModifyFile(FileID FID) { if (FID.isInvalid()) return false; - return canModifyFile(PP.getSourceManager().getFileEntryForID(FID)); + return canModifyFile(PP.getSourceManager().getFileEntryRefForID(FID)); } bool canModify(const Decl *D) { @@ -1964,7 +1964,7 @@ void ObjCMigrateASTConsumer::HandleTranslationUnit(ASTContext &Ctx) { I = rewriter.buffer_begin(), E = rewriter.buffer_end(); I != E; ++I) { FileID FID = I->first; RewriteBuffer &buf = I->second; - const FileEntry *file = Ctx.getSourceManager().getFileEntryForID(FID); + Optional<FileEntryRef> file = Ctx.getSourceManager().getFileEntryRefForID(FID); assert(file); SmallString<512> newText; llvm::raw_svector_ostream vecOS(newText); @@ -2034,12 +2034,10 @@ MigrateSourceAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { namespace { struct EditEntry { - const FileEntry *File; - unsigned Offset; - unsigned RemoveLen; + Optional<FileEntryRef> File; + unsigned Offset = 0; + unsigned RemoveLen = 0; std::string Text; - - EditEntry() : File(), Offset(), RemoveLen() {} }; } // end anonymous namespace @@ -2056,12 +2054,8 @@ template<> struct DenseMapInfo<EditEntry> { return Entry; } static unsigned getHashValue(const EditEntry& Val) { - llvm::FoldingSetNodeID ID; - ID.AddPointer(Val.File); - ID.AddInteger(Val.Offset); - ID.AddInteger(Val.RemoveLen); - ID.AddString(Val.Text); - return ID.ComputeHash(); + return (unsigned)llvm::hash_combine(Val.File, Val.Offset, Val.RemoveLen, + Val.Text); } static bool isEqual(const EditEntry &LHS, const EditEntry &RHS) { return LHS.File == RHS.File && @@ -2133,9 +2127,8 @@ private: StringRef Val = ValueString->getValue(ValueStorage); if (Key == "file") { - auto FE = FileMgr.getFile(Val); - if (FE) - Entry.File = *FE; + if (auto File = FileMgr.getOptionalFileRef(Val)) + Entry.File = File; else Ignore = true; } else if (Key == "offset") { @@ -2161,7 +2154,7 @@ static bool reportDiag(const Twine &Err, DiagnosticsEngine &Diag) { return true; } -static std::string applyEditsToTemp(const FileEntry *FE, +static std::string applyEditsToTemp(FileEntryRef FE, ArrayRef<EditEntry> Edits, FileManager &FileMgr, DiagnosticsEngine &Diag) { @@ -2205,8 +2198,8 @@ static std::string applyEditsToTemp(const FileEntry *FE, SmallString<64> TempPath; int FD; - if (fs::createTemporaryFile(path::filename(FE->getName()), - path::extension(FE->getName()).drop_front(), FD, + if (fs::createTemporaryFile(path::filename(FE.getName()), + path::extension(FE.getName()).drop_front(), FD, TempPath)) { reportDiag("Could not create file: " + TempPath.str(), Diag); return std::string(); @@ -2234,7 +2227,7 @@ bool arcmt::getFileRemappingsFromFileList( new DiagnosticsEngine(DiagID, new DiagnosticOptions, DiagClient, /*ShouldOwnClient=*/false)); - typedef llvm::DenseMap<const FileEntry *, std::vector<EditEntry> > + typedef llvm::DenseMap<FileEntryRef, std::vector<EditEntry> > FileEditEntriesTy; FileEditEntriesTy FileEditEntries; @@ -2256,7 +2249,7 @@ bool arcmt::getFileRemappingsFromFileList( if (!Insert.second) continue; - FileEditEntries[Entry.File].push_back(Entry); + FileEditEntries[*Entry.File].push_back(Entry); } } @@ -2269,7 +2262,7 @@ bool arcmt::getFileRemappingsFromFileList( continue; } - remap.emplace_back(std::string(I->first->getName()), TempFile); + remap.emplace_back(std::string(I->first.getName()), TempFile); } return hasErrorOccurred; diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/TransGCAttrs.cpp b/contrib/llvm-project/clang/lib/ARCMigrate/TransGCAttrs.cpp index 8f5f3cff17cb..99a61e0842a7 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/TransGCAttrs.cpp +++ b/contrib/llvm-project/clang/lib/ARCMigrate/TransGCAttrs.cpp @@ -88,8 +88,8 @@ public: return false; SourceLocation Loc = OwnershipAttr->getLocation(); - unsigned RawLoc = Loc.getRawEncoding(); - if (MigrateCtx.AttrSet.count(RawLoc)) + SourceLocation OrigLoc = Loc; + if (MigrateCtx.AttrSet.count(OrigLoc)) return true; ASTContext &Ctx = MigrateCtx.Pass.Ctx; @@ -105,7 +105,7 @@ public: else return false; - MigrateCtx.AttrSet.insert(RawLoc); + MigrateCtx.AttrSet.insert(OrigLoc); MigrateCtx.GCAttrs.push_back(MigrationContext::GCAttrOccurrence()); MigrationContext::GCAttrOccurrence &Attr = MigrateCtx.GCAttrs.back(); @@ -204,7 +204,7 @@ static void checkWeakGCAttrs(MigrationContext &MigrateCtx) { if (!canApplyWeak(MigrateCtx.Pass.Ctx, Attr.ModifiedType, /*AllowOnUnknownClass=*/true)) { Transaction Trans(TA); - if (!MigrateCtx.RemovedAttrSet.count(Attr.Loc.getRawEncoding())) + if (!MigrateCtx.RemovedAttrSet.count(Attr.Loc)) TA.replaceText(Attr.Loc, "__weak", "__unsafe_unretained"); TA.clearDiagnostic(diag::err_arc_weak_no_runtime, diag::err_arc_unsupported_weak_class, @@ -262,7 +262,7 @@ static void checkAllAtProps(MigrationContext &MigrateCtx, if (GCAttrsCollector::hasObjCImpl( cast<Decl>(IndProps.front()->getDeclContext()))) { if (hasWeak) - MigrateCtx.AtPropsWeak.insert(AtLoc.getRawEncoding()); + MigrateCtx.AtPropsWeak.insert(AtLoc); } else { StringRef toAttr = "strong"; @@ -289,14 +289,14 @@ static void checkAllAtProps(MigrationContext &MigrateCtx, TA.clearDiagnostic(diag::err_objc_property_attr_mutually_exclusive, AtLoc); TA.clearDiagnostic(diag::err_arc_inconsistent_property_ownership, ATLs[i].second->getLocation()); - MigrateCtx.RemovedAttrSet.insert(Loc.getRawEncoding()); + MigrateCtx.RemovedAttrSet.insert(Loc); } } static void checkAllProps(MigrationContext &MigrateCtx, std::vector<ObjCPropertyDecl *> &AllProps) { typedef llvm::TinyPtrVector<ObjCPropertyDecl *> IndivPropsTy; - llvm::DenseMap<unsigned, IndivPropsTy> AtProps; + llvm::DenseMap<SourceLocation, IndivPropsTy> AtProps; for (unsigned i = 0, e = AllProps.size(); i != e; ++i) { ObjCPropertyDecl *PD = AllProps[i]; @@ -306,14 +306,12 @@ static void checkAllProps(MigrationContext &MigrateCtx, SourceLocation AtLoc = PD->getAtLoc(); if (AtLoc.isInvalid()) continue; - unsigned RawAt = AtLoc.getRawEncoding(); - AtProps[RawAt].push_back(PD); + AtProps[AtLoc].push_back(PD); } } - for (llvm::DenseMap<unsigned, IndivPropsTy>::iterator - I = AtProps.begin(), E = AtProps.end(); I != E; ++I) { - SourceLocation AtLoc = SourceLocation::getFromRawEncoding(I->first); + for (auto I = AtProps.begin(), E = AtProps.end(); I != E; ++I) { + SourceLocation AtLoc = I->first; IndivPropsTy &IndProps = I->second; checkAllAtProps(MigrateCtx, AtLoc, IndProps); } diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/TransProperties.cpp b/contrib/llvm-project/clang/lib/ARCMigrate/TransProperties.cpp index cba2256ef97b..e5ccf1cf79b1 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/TransProperties.cpp +++ b/contrib/llvm-project/clang/lib/ARCMigrate/TransProperties.cpp @@ -65,7 +65,7 @@ class PropertiesRewriter { }; typedef SmallVector<PropData, 2> PropsTy; - typedef std::map<unsigned, PropsTy> AtPropDeclsTy; + typedef std::map<SourceLocation, PropsTy> AtPropDeclsTy; AtPropDeclsTy AtProps; llvm::DenseMap<IdentifierInfo *, PropActionKind> 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; @@ -338,7 +337,7 @@ private: return false; if (props.empty()) return false; - return MigrateCtx.AtPropsWeak.count(atLoc.getRawEncoding()); + return MigrateCtx.AtPropsWeak.count(atLoc); } bool isUserDeclared(ObjCIvarDecl *ivarD) const { diff --git a/contrib/llvm-project/clang/lib/ARCMigrate/Transforms.h b/contrib/llvm-project/clang/lib/ARCMigrate/Transforms.h index e087136f0e2c..37e2d6b2a7e1 100644 --- a/contrib/llvm-project/clang/lib/ARCMigrate/Transforms.h +++ b/contrib/llvm-project/clang/lib/ARCMigrate/Transforms.h @@ -93,12 +93,12 @@ public: bool FullyMigratable; }; std::vector<GCAttrOccurrence> GCAttrs; - llvm::DenseSet<unsigned> AttrSet; - llvm::DenseSet<unsigned> RemovedAttrSet; + llvm::DenseSet<SourceLocation> AttrSet; + llvm::DenseSet<SourceLocation> RemovedAttrSet; /// Set of raw '@' locations for 'assign' properties group that contain /// GC __weak. - llvm::DenseSet<unsigned> AtPropsWeak; + llvm::DenseSet<SourceLocation> AtPropsWeak; explicit MigrationContext(MigrationPass &pass) : Pass(pass) {} ~MigrationContext(); |