aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/clang/lib/ARCMigrate
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/clang/lib/ARCMigrate')
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/ARCMT.cpp8
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/FileRemapper.cpp15
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/ObjCMT.cpp39
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/TransGCAttrs.cpp22
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/TransProperties.cpp17
-rw-r--r--contrib/llvm-project/clang/lib/ARCMigrate/Transforms.h6
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();