From 3f3d7acbcfbeca95c98360a9c5170961d0f7ca3f Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 19 Aug 2014 22:05:47 +0000 Subject: Split parseAssembly into parseAssembly and parseAssemblyInto. This should restore the functionality of parsing new code into an existing module without the confusing interface. llvm-svn: 216031 --- llvm/lib/AsmParser/Parser.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'llvm/lib/AsmParser/Parser.cpp') diff --git a/llvm/lib/AsmParser/Parser.cpp b/llvm/lib/AsmParser/Parser.cpp index 7c6598106ec..9bc9b241666 100644 --- a/llvm/lib/AsmParser/Parser.cpp +++ b/llvm/lib/AsmParser/Parser.cpp @@ -21,17 +21,24 @@ #include using namespace llvm; -std::unique_ptr llvm::parseAssembly(std::unique_ptr F, - SMDiagnostic &Err, - LLVMContext &Context) { +bool llvm::parseAssemblyInto(std::unique_ptr F, Module &M, + SMDiagnostic &Err) { SourceMgr SM; - MemoryBuffer *Buf = F.get(); + StringRef Buf = F->getBuffer(); SM.AddNewSourceBuffer(F.release(), SMLoc()); + return LLParser(Buf, SM, Err, &M).Run(); +} + +std::unique_ptr llvm::parseAssembly(std::unique_ptr F, + SMDiagnostic &Err, + LLVMContext &Context) { std::unique_ptr M = - make_unique(Buf->getBufferIdentifier(), Context); - if (LLParser(Buf->getBuffer(), SM, Err, M.get()).Run()) + make_unique(F->getBufferIdentifier(), Context); + + if (parseAssemblyInto(std::move(F), *M, Err)) return nullptr; + return std::move(M); } -- cgit v1.2.3