diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-23 21:53:12 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-06-23 21:53:12 +0000 |
commit | c3f9b5a53458bb66899d6e90e9e032dfdfa5ba2b (patch) | |
tree | da0146a72b490ea2f0dfd25e6f1415e70b094058 /llvm/lib/IR/Module.cpp | |
parent | d81c48392888bcc62ed8628ee3005a34d151ea96 (diff) | |
download | llvm-c3f9b5a53458bb66899d6e90e9e032dfdfa5ba2b.zip llvm-c3f9b5a53458bb66899d6e90e9e032dfdfa5ba2b.tar.gz llvm-c3f9b5a53458bb66899d6e90e9e032dfdfa5ba2b.tar.bz2 |
Make ObjectFile and BitcodeReader always own the MemoryBuffer.
This allows us to just use a std::unique_ptr to store the pointer to the buffer.
The flip side is that they have to support releasing the buffer back to the
caller.
Overall this looks like a more efficient and less brittle api.
llvm-svn: 211542
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
-rw-r--r-- | llvm/lib/IR/Module.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/IR/Module.cpp b/llvm/lib/IR/Module.cpp index 6a5b386..eea14df 100644 --- a/llvm/lib/IR/Module.cpp +++ b/llvm/lib/IR/Module.cpp @@ -400,10 +400,13 @@ std::error_code Module::materializeAll() { return Materializer->MaterializeModule(this); } -std::error_code Module::materializeAllPermanently() { +std::error_code Module::materializeAllPermanently(bool ReleaseBuffer) { if (std::error_code EC = materializeAll()) return EC; + if (ReleaseBuffer) + Materializer->releaseBuffer(); + Materializer.reset(); return std::error_code(); } |