mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-04 09:54:09 +00:00
Return an error_code from materializeAllPermanently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199275 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
06a3bddb36
commit
1dc66089e6
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user