summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/Driver/DarwinLdDriver.cpp20
-rw-r--r--lld/lib/ReaderWriter/FileArchive.cpp5
-rw-r--r--lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp10
3 files changed, 15 insertions, 20 deletions
diff --git a/lld/lib/Driver/DarwinLdDriver.cpp b/lld/lib/Driver/DarwinLdDriver.cpp
index db097da9b61..86df20a4b79 100644
--- a/lld/lib/Driver/DarwinLdDriver.cpp
+++ b/lld/lib/Driver/DarwinLdDriver.cpp
@@ -84,17 +84,17 @@ loadFile(MachOLinkingContext &ctx, StringRef path,
ctx.registry().loadFile(std::move(mbOrErr.get()));
if (std::error_code ec = fileOrErr.getError())
return makeErrorFile(path, ec);
- std::vector<std::unique_ptr<File>> files;
- files.push_back(std::move(fileOrErr.get()));
- for (std::unique_ptr<File> &pf : files) {
- // If file is a dylib, inform LinkingContext about it.
- if (SharedLibraryFile *shl = dyn_cast<SharedLibraryFile>(pf.get())) {
- if (std::error_code ec = shl->parse())
- return makeErrorFile(path, ec);
- ctx.registerDylib(reinterpret_cast<mach_o::MachODylibFile*>(shl),
- upwardDylib);
- }
+ std::unique_ptr<File> &file = fileOrErr.get();
+
+ // If file is a dylib, inform LinkingContext about it.
+ if (SharedLibraryFile *shl = dyn_cast<SharedLibraryFile>(file.get())) {
+ if (std::error_code ec = shl->parse())
+ return makeErrorFile(path, ec);
+ ctx.registerDylib(reinterpret_cast<mach_o::MachODylibFile *>(shl),
+ upwardDylib);
}
+ std::vector<std::unique_ptr<File>> files;
+ files.push_back(std::move(file));
if (wholeArchive)
return parseMemberFiles(files);
return files;
diff --git a/lld/lib/ReaderWriter/FileArchive.cpp b/lld/lib/ReaderWriter/FileArchive.cpp
index 2128d8586b4..b1ff13d98e4 100644
--- a/lld/lib/ReaderWriter/FileArchive.cpp
+++ b/lld/lib/ReaderWriter/FileArchive.cpp
@@ -177,10 +177,7 @@ private:
_registry.loadFile(std::move(memberMB));
if (std::error_code ec = fileOrErr.getError())
return ec;
- std::vector<std::unique_ptr<File>> files;
- files.push_back(std::move(fileOrErr.get()));
- assert(files.size() == 1);
- result = std::move(files[0]);
+ result = std::move(fileOrErr.get());
if (std::error_code ec = result->parse())
return ec;
result->setArchivePath(_archive->getFileName());
diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
index 4408bea81de..c071f80d723 100644
--- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
@@ -627,13 +627,11 @@ MachODylibFile* MachOLinkingContext::loadIndirectDylib(StringRef path) {
registry().loadFile(std::move(mbOrErr.get()));
if (!fileOrErr)
return nullptr;
- std::vector<std::unique_ptr<File>> files;
- files.push_back(std::move(fileOrErr.get()));
- assert(files.size() == 1 && "expected one file in dylib");
- files[0]->parse();
- MachODylibFile* result = reinterpret_cast<MachODylibFile*>(files[0].get());
+ std::unique_ptr<File> &file = fileOrErr.get();
+ file->parse();
+ MachODylibFile *result = reinterpret_cast<MachODylibFile *>(file.get());
// Node object now owned by _indirectDylibs vector.
- _indirectDylibs.push_back(std::move(files[0]));
+ _indirectDylibs.push_back(std::move(file));
return result;
}
OpenPOWER on IntegriCloud