summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a36429f)
raw | patch | inline | side by side (parent: a36429f)
author | Rafael Espindola <rafael.espindola@gmail.com> | |
Fri, 1 Aug 2014 14:31:55 +0000 (14:31 +0000) | ||
committer | Rafael Espindola <rafael.espindola@gmail.com> | |
Fri, 1 Aug 2014 14:31:55 +0000 (14:31 +0000) |
Instead of moving out the data in a ErrorOr<std::unique_ptr<Foo>>, get
a reference to it.
Thanks to David Blaikie for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214516 91177308-0d34-0410-b5e6-96231b3b80d8
a reference to it.
Thanks to David Blaikie for the suggestion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214516 91177308-0d34-0410-b5e6-96231b3b80d8
19 files changed:
index 5025aa61278a412b81ba67025b2947881b522fda..a86f85c9f4c5f2352d90df0c6e1f71e42385f5c8 100644 (file)
ChildIt->getAsBinary();
if (ChildBinOrErr.getError())
continue;
- std::unique_ptr<object::Binary> ChildBin = std::move(ChildBinOrErr.get());
+ std::unique_ptr<object::Binary> &ChildBin = ChildBinOrErr.get();
if (ChildBin->isObject()) {
std::unique_ptr<object::ObjectFile> OF(
static_cast<object::ObjectFile *>(ChildBin.release()));
index 586eceae757fcba6fed16627248b2bc4f92af857..4c1df5c47dd544f497be52c3f6cc57d898eca9f6 100644 (file)
MemoryBuffer::getFile(FName);
if (!MemBufOrErr)
return false;
- std::unique_ptr<MemoryBuffer> MemBuf = std::move(MemBufOrErr.get());
- StringRef Str(MemBuf->getBufferStart(), MemBuf->getBufferSize());
+ MemoryBuffer &MemBuf = *MemBufOrErr.get();
+ StringRef Str(MemBuf.getBufferStart(), MemBuf.getBufferSize());
// If we have a UTF-16 byte order mark, convert to UTF-8 for parsing.
- ArrayRef<char> BufRef(MemBuf->getBufferStart(), MemBuf->getBufferEnd());
+ ArrayRef<char> BufRef(MemBuf.getBufferStart(), MemBuf.getBufferEnd());
std::string UTF8Buf;
if (hasUTF16ByteOrderMark(BufRef)) {
if (!convertUTF16ToUTF8String(BufRef, UTF8Buf))
index 8a234917827edc2657514d92a5d099be041ab36a..5316f049a38a5a41754c354f9385d91af332017d 100644 (file)
*Error = EC.message();
return 2;
}
- std::unique_ptr<MemoryBuffer> F1 = std::move(F1OrErr.get());
+ MemoryBuffer &F1 = *F1OrErr.get();
ErrorOr<std::unique_ptr<MemoryBuffer>> F2OrErr = MemoryBuffer::getFile(NameB);
if (std::error_code EC = F2OrErr.getError()) {
*Error = EC.message();
return 2;
}
- std::unique_ptr<MemoryBuffer> F2 = std::move(F2OrErr.get());
+ MemoryBuffer &F2 = *F2OrErr.get();
// Okay, now that we opened the files, scan them for the first difference.
- const char *File1Start = F1->getBufferStart();
- const char *File2Start = F2->getBufferStart();
- const char *File1End = F1->getBufferEnd();
- const char *File2End = F2->getBufferEnd();
+ const char *File1Start = F1.getBufferStart();
+ const char *File2Start = F2.getBufferStart();
+ const char *File1End = F1.getBufferEnd();
+ const char *File2End = F2.getBufferEnd();
const char *F1P = File1Start;
const char *F2P = File2Start;
- uint64_t A_size = F1->getBufferSize();
- uint64_t B_size = F2->getBufferSize();
+ uint64_t A_size = F1.getBufferSize();
+ uint64_t B_size = F2.getBufferSize();
// Are the buffers identical? Common case: Handle this efficiently.
if (A_size == B_size &&
index 3f224e0c588f77f7987cc230267d3630b4b4405c..8fc58017cb0f287f57045c28b79a6fe6dc8d95e0 100644 (file)
sys::fs::remove(LockFileName);
return None;
}
- std::unique_ptr<MemoryBuffer> MB = std::move(MBOrErr.get());
+ MemoryBuffer &MB = *MBOrErr.get();
StringRef Hostname;
StringRef PIDStr;
- std::tie(Hostname, PIDStr) = getToken(MB->getBuffer(), " ");
+ std::tie(Hostname, PIDStr) = getToken(MB.getBuffer(), " ");
PIDStr = PIDStr.substr(PIDStr.find_first_not_of(" "));
int PID;
if (!PIDStr.getAsInteger(10, PID)) {
index 73c97ffeef4f98fdf65558665f589fcaa8eb8b18..56c57373a7673f348c8f21cb9c8ff9f2c8c4b274 100644 (file)
M.getContext().diagnose(DiagnosticInfoSampleProfile(Filename.data(), Msg));
return false;
}
- std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOrErr.get());
- line_iterator LineIt(*Buffer, '#');
+ MemoryBuffer &Buffer = *BufferOrErr.get();
+ line_iterator LineIt(Buffer, '#');
// Read the profile of each function. Since each function may be
// mentioned more than once, and we are collecting flat profiles,
index 3d5482df9de85465a349bcb69c6af25aacafe260..3d87597f39bd7c003ae8207e35e2a090a7ecfd39 100644 (file)
MemberBuffer, sys::fs::file_magic::unknown, &Context);
if (!ObjOrErr)
continue; // FIXME: check only for "not an object file" errors.
- std::unique_ptr<object::SymbolicFile> Obj = std::move(ObjOrErr.get());
+ object::SymbolicFile &Obj = *ObjOrErr.get();
if (!StartOffset) {
printMemberHeader(Out, "", sys::TimeValue::now(), 0, 0, 0, 0);
print32BE(Out, 0);
}
- for (const object::BasicSymbolRef &S : Obj->symbols()) {
+ for (const object::BasicSymbolRef &S : Obj.symbols()) {
uint32_t Symflags = S.getFlags();
if (Symflags & object::SymbolRef::SF_FormatSpecific)
continue;
MemberOffsetRefs.push_back(std::make_pair(Out.tell(), MemberNum));
print32BE(Out, 0);
}
- MemberBuffer.reset(Obj->releaseBuffer());
+ MemberBuffer.reset(Obj.releaseBuffer());
}
Out << NameOS.str();
MemberBuffers.resize(NewMembers.size());
for (unsigned I = 0, N = NewMembers.size(); I < N; ++I) {
- std::unique_ptr<MemoryBuffer> MemberBuffer;
+ std::unique_ptr<MemoryBuffer> &MemberBuffer = MemberBuffers[I];
NewArchiveIterator &Member = NewMembers[I];
if (Member.isNewMember()) {
failIfError(MemberBufferOrErr.getError());
MemberBuffer = std::move(MemberBufferOrErr.get());
}
- MemberBuffers[I].reset(MemberBuffer.release());
}
if (Symtab) {
index 63145c087a69f24a42db303311cdc5f3cbc8ec32..24ebbc1cb806da8fc29c9d34e8d097c0c3dbbab3 100644 (file)
MemoryBuffer::getFileOrSTDIN(InputFilename);
if (std::error_code EC = MemBufOrErr.getError())
return Error("Error reading '" + InputFilename + "': " + EC.message());
- std::unique_ptr<MemoryBuffer> MemBuf = std::move(MemBufOrErr.get());
+ MemoryBuffer &MemBuf = *MemBufOrErr.get();
- if (MemBuf->getBufferSize() & 3)
+ if (MemBuf.getBufferSize() & 3)
return Error("Bitcode stream should be a multiple of 4 bytes in length");
- const unsigned char *BufPtr = (const unsigned char *)MemBuf->getBufferStart();
- const unsigned char *EndBufPtr = BufPtr+MemBuf->getBufferSize();
+ const unsigned char *BufPtr = (const unsigned char *)MemBuf.getBufferStart();
+ const unsigned char *EndBufPtr = BufPtr+MemBuf.getBufferSize();
// If we have a wrapper header, parse it and ignore the non-bc file contents.
// The magic number is 0x0B17C0DE stored in little endian.
index 33bb766f200f38f701a6ba68616af7e33aab0d23..4e65d444fc8d35522799dd39669d688e6626171b 100644 (file)
errs() << Filename << ": " << EC.message() << '\n';
return;
}
- std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+ ObjectFile &Obj = *ObjOrErr.get();
- std::unique_ptr<DIContext> DICtx(DIContext::getDWARFContext(*Obj));
+ std::unique_ptr<DIContext> DICtx(DIContext::getDWARFContext(Obj));
outs() << Filename
- << ":\tfile format " << Obj->getFileFormatName() << "\n\n";
+ << ":\tfile format " << Obj.getFileFormatName() << "\n\n";
// Dump the complete DWARF structure.
DICtx->dump(outs(), DumpType);
}
index a16135e0c7ffe0512f2a574d8b315d882b3e4dbe..d7014264086c956f282cf26390344a4fde2a55fc 100644 (file)
createBinary(std::move(*BufferOrErr), &Context);
if (error(BinaryOrErr.getError(), Filename))
return;
- std::unique_ptr<Binary> Bin = std::move(BinaryOrErr.get());
+ Binary &Bin = *BinaryOrErr.get();
- if (Archive *A = dyn_cast<Archive>(Bin.get())) {
+ if (Archive *A = dyn_cast<Archive>(&Bin)) {
if (ArchiveMap) {
Archive::symbol_iterator I = A->symbol_begin();
Archive::symbol_iterator E = A->symbol_end();
}
return;
}
- if (MachOUniversalBinary *UB = dyn_cast<MachOUniversalBinary>(Bin.get())) {
+ if (MachOUniversalBinary *UB = dyn_cast<MachOUniversalBinary>(&Bin)) {
// If we have a list of architecture flags specified dump only those.
if (!ArchAll && ArchFlags.size() != 0) {
// Look for a slice in the universal binary that matches each ArchFlag.
ArchiveName.clear();
ArchitectureName.clear();
if (ObjOrErr) {
- std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+ ObjectFile &Obj = *ObjOrErr.get();
if (ArchFlags.size() > 1) {
if (PrintFileName)
ArchitectureName = I->getArchTypeName();
else
- outs() << "\n" << Obj->getFileName() << " (for architecture "
+ outs() << "\n" << Obj.getFileName() << " (for architecture "
<< I->getArchTypeName() << ")"
<< ":\n";
}
- dumpSymbolNamesFromObject(*Obj, false, ArchiveName,
+ dumpSymbolNamesFromObject(Obj, false, ArchiveName,
ArchitectureName);
} else if (!I->getAsArchive(A)) {
for (Archive::child_iterator AI = A->child_begin(),
std::string ArchiveName;
ArchiveName.clear();
if (ObjOrErr) {
- std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
- dumpSymbolNamesFromObject(*Obj, false);
+ ObjectFile &Obj = *ObjOrErr.get();
+ dumpSymbolNamesFromObject(Obj, false);
} else if (!I->getAsArchive(A)) {
for (Archive::child_iterator AI = A->child_begin(),
AE = A->child_end();
ArchiveName.clear();
ArchitectureName.clear();
if (ObjOrErr) {
- std::unique_ptr<ObjectFile> Obj = std::move(ObjOrErr.get());
+ ObjectFile &Obj = *ObjOrErr.get();
if (PrintFileName) {
- if (isa<MachOObjectFile>(Obj.get()) && moreThanOneArch)
+ if (isa<MachOObjectFile>(Obj) && moreThanOneArch)
ArchitectureName = I->getArchTypeName();
} else {
if (moreThanOneArch)
outs() << "\n";
- outs() << Obj->getFileName();
- if (isa<MachOObjectFile>(Obj.get()) && moreThanOneArch)
+ outs() << Obj.getFileName();
+ if (isa<MachOObjectFile>(Obj) && moreThanOneArch)
outs() << " (for architecture " << I->getArchTypeName() << ")";
outs() << ":\n";
}
- dumpSymbolNamesFromObject(*Obj, false, ArchiveName, ArchitectureName);
+ dumpSymbolNamesFromObject(Obj, false, ArchiveName, ArchitectureName);
} else if (!I->getAsArchive(A)) {
for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end();
AI != AE; ++AI) {
}
return;
}
- if (SymbolicFile *O = dyn_cast<SymbolicFile>(Bin.get())) {
+ if (SymbolicFile *O = dyn_cast<SymbolicFile>(&Bin)) {
if (!checkMachOAndArchFlags(O, Filename))
return;
dumpSymbolNamesFromObject(*O, true);
index 8041a88396aa33dbcd1fa72b88e229f5c5aa865b..9e9526aa3cc675e22d475018da12c5199ddd310e 100644 (file)
errs() << ToolName << ": '" << file << "': " << EC.message() << ".\n";
return;
}
- std::unique_ptr<Binary> binary = std::move(BinaryOrErr.get());
+ Binary &Binary = *BinaryOrErr.get();
- if (Archive *a = dyn_cast<Archive>(binary.get()))
+ if (Archive *a = dyn_cast<Archive>(&Binary))
DumpArchive(a);
- else if (ObjectFile *o = dyn_cast<ObjectFile>(binary.get()))
+ else if (ObjectFile *o = dyn_cast<ObjectFile>(&Binary))
DumpObject(o);
else
errs() << ToolName << ": '" << file << "': " << "Unrecognized file type.\n";
index 837b71f05dc4762b528216dbf093b43a6002fd39..6e5b835f511c46e578c98c67d3878f303b87091e 100644 (file)
reportError(File, EC);
return;
}
- std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+ Binary &Binary = *BinaryOrErr.get();
- if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
+ if (Archive *Arc = dyn_cast<Archive>(&Binary))
dumpArchive(Arc);
- else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+ else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
dumpObject(Obj);
else
reportError(File, readobj_error::unrecognized_file_format);
index 0664d535b8b3877bf1af9368082432bc18cac2bf..24c9cd862feb7ec8f96ec979682fcd5c99a693f7 100644 (file)
errs() << ToolName << ": " << file << ": " << EC.message() << ".\n";
return;
}
- std::unique_ptr<Binary> binary = std::move(BinaryOrErr.get());
+ Binary &Bin = *BinaryOrErr.get();
- if (Archive *a = dyn_cast<Archive>(binary.get())) {
+ if (Archive *a = dyn_cast<Archive>(&Bin)) {
// This is an archive. Iterate over each member and display its sizes.
for (object::Archive::child_iterator i = a->child_begin(),
e = a->child_end();
}
}
} else if (MachOUniversalBinary *UB =
- dyn_cast<MachOUniversalBinary>(binary.get())) {
+ dyn_cast<MachOUniversalBinary>(&Bin)) {
// If we have a list of architecture flags specified dump only those.
if (!ArchAll && ArchFlags.size() != 0) {
// Look for a slice in the universal binary that matches each ArchFlag.
}
}
}
- } else if (ObjectFile *o = dyn_cast<ObjectFile>(binary.get())) {
+ } else if (ObjectFile *o = dyn_cast<ObjectFile>(&Bin)) {
if (!checkMachOAndArchFlags(o, file))
return;
if (OutputFormat == sysv)
index 7c4743b5dfb925a36e59ba4ee00274da969a14dc..14e193a53736848dd053353f571e393cc83dcf16 100644 (file)
Binary *DbgBin = nullptr;
ErrorOr<std::unique_ptr<Binary>> BinaryOrErr = createBinary(Path);
if (!error(BinaryOrErr.getError())) {
- std::unique_ptr<Binary> ParsedBinary = std::move(BinaryOrErr.get());
+ std::unique_ptr<Binary> &ParsedBinary = BinaryOrErr.get();
// Check if it's a universal binary.
Bin = ParsedBinary.get();
ParsedBinariesAndObjects.push_back(std::move(ParsedBinary));
index d1d8aa4082b6d78a1b0ef8d871df4c70db3f509e..2f6ccb0620acc1bf10785c21bd3657349df95312 100644 (file)
reportError(File, EC);
return;
}
- std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+ Binary &Binary = *BinaryOrErr.get();
- if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
+ if (Archive *Arc = dyn_cast<Archive>(&Binary))
dumpArchive(Arc);
- else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+ else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
dumpVTables(Obj);
else
reportError(File, vtabledump_error::unrecognized_file_format);
index bbc7aae9f44c2c48aba6cf8c2164883dc3e49552..787aebc058d483adf949c9fa0204c3c0b68bbba8 100644 (file)
ErrorOr<std::unique_ptr<Binary>> BinaryOrErr = createBinary(InputFile);
if (std::error_code EC = BinaryOrErr.getError())
return Error("unable to read input: '" + EC.message() + "'");
- std::unique_ptr<Binary> Binary = std::move((BinaryOrErr.get()));
+ Binary &Binary = *BinaryOrErr.get();
- const MachOObjectFile *InputObject = dyn_cast<MachOObjectFile>(Binary.get());
+ const MachOObjectFile *InputObject = dyn_cast<MachOObjectFile>(&Binary);
if (!InputObject)
return Error("Not a MachO object");
index 8d1c1409f1870e65b568a5ff2eb82c21475842cc..dbf5a4acd16e0de8caf549451a7f1f7f0f4a8944 100644 (file)
if (std::error_code EC = BinaryOrErr.getError())
return EC;
- std::unique_ptr<Binary> Binary = std::move(BinaryOrErr.get());
+ Binary &Binary = *BinaryOrErr.get();
// TODO: If this is an archive, then burst it and dump each entry
- if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+ if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
return dumpObject(*Obj);
return obj2yaml_error::unrecognized_file_format;
diff --git a/tools/verify-uselistorder/verify-uselistorder.cpp b/tools/verify-uselistorder/verify-uselistorder.cpp
index f5699e40c9b34cdf07dd0c4c48666c812697ec86..a9666ac528490fe5226a1f6a0c58ae00848800bb 100644 (file)
return nullptr;
}
- std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOr.get());
- ErrorOr<Module *> ModuleOr = parseBitcodeFile(Buffer.get(), Context);
+ MemoryBuffer *Buffer = BufferOr.get().get();
+ ErrorOr<Module *> ModuleOr = parseBitcodeFile(Buffer, Context);
if (!ModuleOr) {
DEBUG(dbgs() << "error: " << ModuleOr.getError().message() << "\n");
return nullptr;
index 9cd1fe75760b1f3deab6bfc1648fa9bd9672b457..8c62ae7f5d147f40f4ca8d6548af14418856f5de 100644 (file)
<< "': " << EC.message() << '\n';
return 2;
}
- std::unique_ptr<MemoryBuffer> File = std::move(FileOrErr.get());
+ std::unique_ptr<MemoryBuffer> &File = FileOrErr.get();
if (File->getBufferSize() == 0) {
errs() << "FileCheck error: '" << InputFilename << "' is empty.\n";
index e88ce5daeba7cd384f1e5d47a952251c42915509..8bd1ea17ea8e2d7e789180e2ea8289eb9cd41747 100644 (file)
MemoryBuffer::getFileOrSTDIN(Input);
if (!BufOrErr)
return 1;
- std::unique_ptr<MemoryBuffer> Buf = std::move(BufOrErr.get());
+ MemoryBuffer &Buf = *BufOrErr.get();
llvm::SourceMgr sm;
if (DumpTokens) {
- yaml::dumpTokens(Buf->getBuffer(), outs());
+ yaml::dumpTokens(Buf.getBuffer(), outs());
}
if (DumpCanonical) {
- yaml::Stream stream(Buf->getBuffer(), sm);
+ yaml::Stream stream(Buf.getBuffer(), sm);
dumpStream(stream);
}
}