mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Bitcode: Change getModuleSummaryIndex() to return an llvm::Expected.
Differential Revision: https://reviews.llvm.org/D26539 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286624 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -70,44 +70,37 @@ ModuleSummaryIndexObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Object) {
|
||||
// Parse module summary index in the given memory buffer.
|
||||
// Return new ModuleSummaryIndexObjectFile instance containing parsed
|
||||
// module summary/index.
|
||||
ErrorOr<std::unique_ptr<ModuleSummaryIndexObjectFile>>
|
||||
ModuleSummaryIndexObjectFile::create(
|
||||
MemoryBufferRef Object,
|
||||
const DiagnosticHandlerFunction &DiagnosticHandler) {
|
||||
std::unique_ptr<ModuleSummaryIndex> Index;
|
||||
|
||||
Expected<std::unique_ptr<ModuleSummaryIndexObjectFile>>
|
||||
ModuleSummaryIndexObjectFile::create(MemoryBufferRef Object) {
|
||||
ErrorOr<MemoryBufferRef> BCOrErr = findBitcodeInMemBuffer(Object);
|
||||
if (!BCOrErr)
|
||||
return BCOrErr.getError();
|
||||
return errorCodeToError(BCOrErr.getError());
|
||||
|
||||
ErrorOr<std::unique_ptr<ModuleSummaryIndex>> IOrErr =
|
||||
getModuleSummaryIndex(BCOrErr.get(), DiagnosticHandler);
|
||||
Expected<std::unique_ptr<ModuleSummaryIndex>> IOrErr =
|
||||
getModuleSummaryIndex(BCOrErr.get());
|
||||
|
||||
if (std::error_code EC = IOrErr.getError())
|
||||
return EC;
|
||||
|
||||
Index = std::move(IOrErr.get());
|
||||
if (!IOrErr)
|
||||
return std::move(IOrErr.takeError());
|
||||
|
||||
std::unique_ptr<ModuleSummaryIndex> Index = std::move(IOrErr.get());
|
||||
return llvm::make_unique<ModuleSummaryIndexObjectFile>(Object,
|
||||
std::move(Index));
|
||||
}
|
||||
|
||||
// Parse the module summary index out of an IR file and return the summary
|
||||
// index object if found, or nullptr if not.
|
||||
ErrorOr<std::unique_ptr<ModuleSummaryIndex>> llvm::getModuleSummaryIndexForFile(
|
||||
StringRef Path, const DiagnosticHandlerFunction &DiagnosticHandler) {
|
||||
Expected<std::unique_ptr<ModuleSummaryIndex>>
|
||||
llvm::getModuleSummaryIndexForFile(StringRef Path) {
|
||||
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
|
||||
MemoryBuffer::getFileOrSTDIN(Path);
|
||||
std::error_code EC = FileOrErr.getError();
|
||||
if (EC)
|
||||
return EC;
|
||||
return errorCodeToError(EC);
|
||||
MemoryBufferRef BufferRef = (FileOrErr.get())->getMemBufferRef();
|
||||
ErrorOr<std::unique_ptr<object::ModuleSummaryIndexObjectFile>> ObjOrErr =
|
||||
object::ModuleSummaryIndexObjectFile::create(BufferRef,
|
||||
DiagnosticHandler);
|
||||
EC = ObjOrErr.getError();
|
||||
if (EC)
|
||||
return EC;
|
||||
Expected<std::unique_ptr<object::ModuleSummaryIndexObjectFile>> ObjOrErr =
|
||||
object::ModuleSummaryIndexObjectFile::create(BufferRef);
|
||||
if (!ObjOrErr)
|
||||
return ObjOrErr.takeError();
|
||||
|
||||
object::ModuleSummaryIndexObjectFile &Obj = **ObjOrErr;
|
||||
return Obj.takeIndex();
|
||||
|
||||
Reference in New Issue
Block a user