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/AsmParser/Parser.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/AsmParser/Parser.cpp')
-rw-r--r-- | llvm/lib/AsmParser/Parser.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/llvm/lib/AsmParser/Parser.cpp b/llvm/lib/AsmParser/Parser.cpp index d2384bd978d..08159075ff6 100644 --- a/llvm/lib/AsmParser/Parser.cpp +++ b/llvm/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); } |