summaryrefslogtreecommitdiff
path: root/lib/AsmParser/Parser.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
commit2292996e1a2c10bb62e1ebf8b0e658291bc7724d (patch)
tree6fc06cfea0fbdfb5f777c83301b016d5c19ca895 /lib/AsmParser/Parser.cpp
parentaf07403c3e22c0a89a98d0ab97359d7f561c1f1c (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.cpp23
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);
}