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 | 2292996e1a2c10bb62e1ebf8b0e658291bc7724d (patch) | |
tree | 6fc06cfea0fbdfb5f777c83301b016d5c19ca895 /lib/AsmParser/Parser.cpp | |
parent | af07403c3e22c0a89a98d0ab97359d7f561c1f1c (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216488 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AsmParser/Parser.cpp')
-rw-r--r-- | lib/AsmParser/Parser.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/lib/AsmParser/Parser.cpp b/lib/AsmParser/Parser.cpp index d2384bd978d..08159075ff6 100644 --- a/lib/AsmParser/Parser.cpp +++ b/lib/AsmParser/Parser.cpp @@ -21,22 +21,21 @@ #include <system_error> using namespace llvm; -bool llvm::parseAssemblyInto(std::unique_ptr<MemoryBuffer> F, Module &M, - SMDiagnostic &Err) { +bool llvm::parseAssemblyInto(MemoryBufferRef F, Module &M, SMDiagnostic &Err) { SourceMgr SM; - StringRef Buf = F->getBuffer(); - SM.AddNewSourceBuffer(std::move(F), SMLoc()); + std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(F, false); + SM.AddNewSourceBuffer(std::move(Buf), SMLoc()); - return LLParser(Buf, SM, Err, &M).Run(); + return LLParser(F.getBuffer(), SM, Err, &M).Run(); } -std::unique_ptr<Module> llvm::parseAssembly(std::unique_ptr<MemoryBuffer> F, +std::unique_ptr<Module> llvm::parseAssembly(MemoryBufferRef F, SMDiagnostic &Err, LLVMContext &Context) { std::unique_ptr<Module> M = - make_unique<Module>(F->getBufferIdentifier(), Context); + make_unique<Module>(F.getBufferIdentifier(), Context); - if (parseAssemblyInto(std::move(F), *M, Err)) + if (parseAssemblyInto(F, *M, Err)) return nullptr; return std::move(M); @@ -53,14 +52,12 @@ std::unique_ptr<Module> llvm::parseAssemblyFile(StringRef Filename, return nullptr; } - return parseAssembly(std::move(FileOrErr.get()), Err, Context); + return parseAssembly(FileOrErr.get()->getMemBufferRef(), Err, Context); } std::unique_ptr<Module> llvm::parseAssemblyString(StringRef AsmString, SMDiagnostic &Err, LLVMContext &Context) { - std::unique_ptr<MemoryBuffer> F( - MemoryBuffer::getMemBuffer(AsmString, "<string>")); - - return parseAssembly(std::move(F), Err, Context); + MemoryBufferRef F(AsmString, "<string>"); + return parseAssembly(F, Err, Context); } |