Revert a C API difference that I incorrectly introduced.

LLVMGetBitcodeModuleInContext should not take ownership on error. I will
try to localize this odd api requirement, but this should get the bots green.

llvm-svn: 211213
This commit is contained in:
Rafael Espindola 2014-06-18 20:07:35 +00:00
parent 9e42e92e43
commit 8fb3111248
2 changed files with 5 additions and 0 deletions

View File

@ -3380,6 +3380,7 @@ ErrorOr<Module *> llvm::getLazyBitcodeModule(MemoryBuffer *Buffer,
BitcodeReader *R = new BitcodeReader(Buffer, Context, BufferOwned);
M->setMaterializer(R);
if (std::error_code EC = R->ParseBitcodeInto(M)) {
R->releaseBuffer(); // Never take ownership on error.
delete M; // Also deletes R.
return EC;
}

View File

@ -239,6 +239,10 @@ public:
void FreeState();
void releaseBuffer() {
Buffer = nullptr;
}
bool isMaterializable(const GlobalValue *GV) const override;
bool isDematerializable(const GlobalValue *GV) const override;
std::error_code Materialize(GlobalValue *GV) override;