diff options
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); } |