summaryrefslogtreecommitdiffstats
path: root/llvm/lib/LTO/LTOModule.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-08-26 21:49:01 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-08-26 21:49:01 +0000
commitd96d553d76b56496e73aa30910d81f0d692f36fc (patch)
treee88f2eeb131aca32e87c1a37891c47e89106a361 /llvm/lib/LTO/LTOModule.cpp
parent59953f0dbea2678f1ad59ac75c871a888e3a9875 (diff)
downloadbcm5719-llvm-d96d553d76b56496e73aa30910d81f0d692f36fc.tar.gz
bcm5719-llvm-d96d553d76b56496e73aa30910d81f0d692f36fc.zip
Pass a MemoryBufferRef when we can avoid taking ownership.
The attached patch simplifies a few interfaces that don't need to take ownership of a buffer. For example, both parseAssembly and parseBitcodeFile will parse the entire buffer before returning. There is no need to take ownership. Using a MemoryBufferRef makes it obvious in the type signature that there is no ownership transfer. llvm-svn: 216488
Diffstat (limited to 'llvm/lib/LTO/LTOModule.cpp')
-rw-r--r--llvm/lib/LTO/LTOModule.cpp12
1 files changed, 3 insertions, 9 deletions
diff --git a/llvm/lib/LTO/LTOModule.cpp b/llvm/lib/LTO/LTOModule.cpp
index f9d270d3207..76b5e197a62 100644
--- a/llvm/lib/LTO/LTOModule.cpp
+++ b/llvm/lib/LTO/LTOModule.cpp
@@ -65,7 +65,8 @@ bool LTOModule::isBitcodeFile(const char *path) {
bool LTOModule::isBitcodeForTarget(MemoryBuffer *buffer,
StringRef triplePrefix) {
- std::string Triple = getBitcodeTargetTriple(buffer, getGlobalContext());
+ std::string Triple =
+ getBitcodeTargetTriple(buffer->getMemBufferRef(), getGlobalContext());
return StringRef(Triple).startswith(triplePrefix);
}
@@ -112,14 +113,7 @@ LTOModule *LTOModule::createFromBuffer(const void *mem, size_t length,
LTOModule *LTOModule::makeLTOModule(MemoryBufferRef Buffer,
TargetOptions options,
std::string &errMsg) {
- StringRef Data = Buffer.getBuffer();
- StringRef FileName = Buffer.getBufferIdentifier();
- std::unique_ptr<MemoryBuffer> MemBuf(
- makeBuffer(Data.begin(), Data.size(), FileName));
- if (!MemBuf)
- return nullptr;
-
- ErrorOr<Module *> MOrErr = parseBitcodeFile(MemBuf.get(), getGlobalContext());
+ ErrorOr<Module *> MOrErr = parseBitcodeFile(Buffer, getGlobalContext());
if (std::error_code EC = MOrErr.getError()) {
errMsg = EC.message();
return nullptr;
OpenPOWER on IntegriCloud