summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/IR/Module.h8
-rw-r--r--lib/IR/Module.cpp16
2 files changed, 10 insertions, 14 deletions
diff --git a/include/llvm/IR/Module.h b/include/llvm/IR/Module.h
index 822b8a4565..4bfa9e68aa 100644
--- a/include/llvm/IR/Module.h
+++ b/include/llvm/IR/Module.h
@@ -22,6 +22,7 @@
#include "llvm/IR/Metadata.h"
#include "llvm/Support/CBindingWrapping.h"
#include "llvm/Support/DataTypes.h"
+#include "llvm/Support/system_error.h"
namespace llvm {
@@ -450,11 +451,8 @@ public:
/// materialized lazily. If !isDematerializable(), this method is a noop.
void Dematerialize(GlobalValue *GV);
- /// MaterializeAll - Make sure all GlobalValues in this Module are fully read.
- /// If the module is corrupt, this returns true and fills in the optional
- /// string with information about the problem. If successful, this returns
- /// false.
- bool MaterializeAll(std::string *ErrInfo = 0);
+ /// 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
diff --git a/lib/IR/Module.cpp b/lib/IR/Module.cpp
index 996c5b67a4..06eea7e388 100644
--- a/lib/IR/Module.cpp
+++ b/lib/IR/Module.cpp
@@ -377,20 +377,18 @@ void Module::Dematerialize(GlobalValue *GV) {
return Materializer->Dematerialize(GV);
}
-bool Module::MaterializeAll(std::string *ErrInfo) {
+error_code Module::materializeAll() {
if (!Materializer)
- return false;
- error_code EC = Materializer->MaterializeModule(this);
- if (!EC)
- return false;
- if (ErrInfo)
- *ErrInfo = EC.message();
- return true;
+ return error_code::success();
+ return Materializer->MaterializeModule(this);
}
bool Module::MaterializeAllPermanently(std::string *ErrInfo) {
- if (MaterializeAll(ErrInfo))
+ if (error_code EC = materializeAll()) {
+ if (ErrInfo)
+ *ErrInfo = EC.message();
return true;
+ }
Materializer.reset();
return false;
}