summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IRReader/IRReader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IRReader/IRReader.cpp')
-rw-r--r--llvm/lib/IRReader/IRReader.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/llvm/lib/IRReader/IRReader.cpp b/llvm/lib/IRReader/IRReader.cpp
index 999f11deb15..36bbf719bb6 100644
--- a/llvm/lib/IRReader/IRReader.cpp
+++ b/llvm/lib/IRReader/IRReader.cpp
@@ -68,7 +68,8 @@ std::unique_ptr<Module> llvm::getLazyIRFileModule(StringRef Filename,
std::unique_ptr<Module> llvm::parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
LLVMContext &Context,
- bool UpgradeDebugInfo) {
+ bool UpgradeDebugInfo,
+ StringRef DataLayoutString) {
NamedRegionTimer T(TimeIRParsingName, TimeIRParsingDescription,
TimeIRParsingGroupName, TimeIRParsingGroupDescription,
TimePassesIsEnabled);
@@ -83,15 +84,19 @@ std::unique_ptr<Module> llvm::parseIR(MemoryBufferRef Buffer, SMDiagnostic &Err,
});
return nullptr;
}
+ if (!DataLayoutString.empty())
+ ModuleOrErr.get()->setDataLayout(DataLayoutString);
return std::move(ModuleOrErr.get());
}
- return parseAssembly(Buffer, Err, Context, nullptr, UpgradeDebugInfo);
+ return parseAssembly(Buffer, Err, Context, nullptr, UpgradeDebugInfo,
+ DataLayoutString);
}
std::unique_ptr<Module> llvm::parseIRFile(StringRef Filename, SMDiagnostic &Err,
LLVMContext &Context,
- bool UpgradeDebugInfo) {
+ bool UpgradeDebugInfo,
+ StringRef DataLayoutString) {
ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr =
MemoryBuffer::getFileOrSTDIN(Filename);
if (std::error_code EC = FileOrErr.getError()) {
@@ -101,7 +106,7 @@ std::unique_ptr<Module> llvm::parseIRFile(StringRef Filename, SMDiagnostic &Err,
}
return parseIR(FileOrErr.get()->getMemBufferRef(), Err, Context,
- UpgradeDebugInfo);
+ UpgradeDebugInfo, DataLayoutString);
}
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud