aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/Module.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-23 21:53:12 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-23 21:53:12 +0000
commitc3f9b5a53458bb66899d6e90e9e032dfdfa5ba2b (patch)
treeda0146a72b490ea2f0dfd25e6f1415e70b094058 /llvm/lib/IR/Module.cpp
parentd81c48392888bcc62ed8628ee3005a34d151ea96 (diff)
downloadllvm-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.cpp5
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();
}