diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-26 21:49:01 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-26 21:49:01 +0000 |
commit | d96d553d76b56496e73aa30910d81f0d692f36fc (patch) | |
tree | e88f2eeb131aca32e87c1a37891c47e89106a361 /llvm/lib/LTO/LTOModule.cpp | |
parent | 59953f0dbea2678f1ad59ac75c871a888e3a9875 (diff) | |
download | bcm5719-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.cpp | 12 |
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; |