summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/IR/Module.h10
-rw-r--r--lib/Bitcode/Reader/BitcodeReader.cpp4
-rw-r--r--lib/ExecutionEngine/Interpreter/Interpreter.cpp5
-rw-r--r--lib/IR/Module.cpp12
-rw-r--r--lib/LTO/LTOModule.cpp2
-rw-r--r--tools/lli/lli.cpp6
-rw-r--r--tools/llvm-dis/llvm-dis.cpp7
7 files changed, 25 insertions, 21 deletions
diff --git a/include/llvm/IR/Module.h b/include/llvm/IR/Module.h
index 4bfa9e68aa..b965c9ee56 100644
--- a/include/llvm/IR/Module.h
+++ b/include/llvm/IR/Module.h
@@ -454,12 +454,10 @@ public:
/// Make sure all GlobalValues in this Module are fully read.
error_code materializeAll();
- /// MaterializeAllPermanently - Make sure all GlobalValues in this Module are
- /// fully read and clear the Materializer. If the module is corrupt, this
- /// returns true, fills in the optional string with information about the
- /// problem, and DOES NOT clear the old Materializer. If successful, this
- /// returns false.
- bool MaterializeAllPermanently(std::string *ErrInfo = 0);
+ /// Make sure all GlobalValues in this Module are fully read and clear the
+ /// Materializer. If the module is corrupt, this DOES NOT clear the old
+ /// Materializer.
+ error_code materializeAllPermanently();
/// @}
/// @name Direct access to the globals list, functions list, and symbol table
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp
index 81ed803ba0..c36dae892c 100644
--- a/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -3359,7 +3359,9 @@ Module *llvm::ParseBitcodeFile(MemoryBuffer *Buffer, LLVMContext& Context,
static_cast<BitcodeReader*>(M->getMaterializer())->setBufferOwned(false);
// Read in the entire module, and destroy the BitcodeReader.
- if (M->MaterializeAllPermanently(ErrMsg)) {
+ if (error_code EC = M->materializeAllPermanently()) {
+ if (ErrMsg)
+ *ErrMsg = EC.message();
delete M;
return 0;
}
diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.cpp b/lib/ExecutionEngine/Interpreter/Interpreter.cpp
index 9ee9d9456d..6d4f6f716f 100644
--- a/lib/ExecutionEngine/Interpreter/Interpreter.cpp
+++ b/lib/ExecutionEngine/Interpreter/Interpreter.cpp
@@ -34,9 +34,12 @@ extern "C" void LLVMLinkInInterpreter() { }
///
ExecutionEngine *Interpreter::create(Module *M, std::string* ErrStr) {
// Tell this Module to materialize everything and release the GVMaterializer.
- if (M->MaterializeAllPermanently(ErrStr))
+ if (error_code EC = M->materializeAllPermanently()) {
+ if (ErrStr)
+ *ErrStr = EC.message();
// We got an error, just return 0
return 0;
+ }
return new Interpreter(M);
}
diff --git a/lib/IR/Module.cpp b/lib/IR/Module.cpp
index 06eea7e388..d911c7e2b5 100644
--- a/lib/IR/Module.cpp
+++ b/lib/IR/Module.cpp
@@ -383,14 +383,12 @@ error_code Module::materializeAll() {
return Materializer->MaterializeModule(this);
}
-bool Module::MaterializeAllPermanently(std::string *ErrInfo) {
- if (error_code EC = materializeAll()) {
- if (ErrInfo)
- *ErrInfo = EC.message();
- return true;
- }
+error_code Module::materializeAllPermanently() {
+ if (error_code EC = materializeAll())
+ return EC;
+
Materializer.reset();
- return false;
+ return error_code::success();
}
//===----------------------------------------------------------------------===//
diff --git a/lib/LTO/LTOModule.cpp b/lib/LTO/LTOModule.cpp
index dcfd59e752..79cff1f68f 100644
--- a/lib/LTO/LTOModule.cpp
+++ b/lib/LTO/LTOModule.cpp
@@ -169,7 +169,7 @@ LTOModule *LTOModule::makeLTOModule(MemoryBuffer *buffer,
TargetMachine *target = march->createTargetMachine(TripleStr, CPU, FeatureStr,
options);
- m->MaterializeAllPermanently();
+ m->materializeAllPermanently();
LTOModule *Ret = new LTOModule(m.take(), target);
if (Ret->parseSymbols(errMsg)) {
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp
index c6db51a2b0..8e6669221b 100644
--- a/tools/lli/lli.cpp
+++ b/tools/lli/lli.cpp
@@ -413,11 +413,10 @@ int main(int argc, char **argv, char * const *envp) {
}
// If not jitting lazily, load the whole bitcode file eagerly too.
- std::string ErrorMsg;
if (NoLazyCompilation) {
- if (Mod->MaterializeAllPermanently(&ErrorMsg)) {
+ if (error_code EC = Mod->materializeAllPermanently()) {
errs() << argv[0] << ": bitcode didn't read correctly.\n";
- errs() << "Reason: " << ErrorMsg << "\n";
+ errs() << "Reason: " << EC.message() << "\n";
exit(1);
}
}
@@ -433,6 +432,7 @@ int main(int argc, char **argv, char * const *envp) {
DebugIRPass->runOnModule(*Mod);
}
+ std::string ErrorMsg;
EngineBuilder builder(Mod);
builder.setMArch(MArch);
builder.setMCPU(MCPU);
diff --git a/tools/llvm-dis/llvm-dis.cpp b/tools/llvm-dis/llvm-dis.cpp
index 6d471efcc0..9fb056510c 100644
--- a/tools/llvm-dis/llvm-dis.cpp
+++ b/tools/llvm-dis/llvm-dis.cpp
@@ -135,8 +135,11 @@ int main(int argc, char **argv) {
DisplayFilename = InputFilename;
M.reset(getStreamedBitcodeModule(DisplayFilename, streamer, Context,
&ErrorMessage));
- if(M.get() != 0 && M->MaterializeAllPermanently(&ErrorMessage)) {
- M.reset();
+ if(M.get() != 0) {
+ if (error_code EC = M->materializeAllPermanently()) {
+ ErrorMessage = EC.message();
+ M.reset();
+ }
}
}