diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp --- a/clang-tools-extra/clangd/CodeComplete.cpp +++ b/clang-tools-extra/clangd/CodeComplete.cpp @@ -1104,7 +1104,7 @@ // overriding the preamble will break sema completion. Fortunately we can just // skip all includes in this case; these completions are really simple. PreambleBounds PreambleRegion = - ComputePreambleBounds(*CI->getLangOpts(), ContentsBuffer.get(), 0); + ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0); bool CompletingInPreamble = PreambleRegion.Size > Input.Offset; if (Input.Patch) Input.Patch->apply(*CI); diff --git a/clang-tools-extra/clangd/Preamble.cpp b/clang-tools-extra/clangd/Preamble.cpp --- a/clang-tools-extra/clangd/Preamble.cpp +++ b/clang-tools-extra/clangd/Preamble.cpp @@ -249,8 +249,7 @@ // This means we're scanning (though not preprocessing) the preamble section // twice. However, it's important to precisely follow the preamble bounds used // elsewhere. - auto Bounds = - ComputePreambleBounds(*CI->getLangOpts(), ContentsBuffer.get(), 0); + auto Bounds = ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0); auto PreambleContents = llvm::MemoryBuffer::getMemBufferCopy(Contents.substr(0, Bounds.Size)); auto Clang = prepareCompilerInstance( @@ -322,8 +321,7 @@ // without those. auto ContentsBuffer = llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName); - auto Bounds = - ComputePreambleBounds(*CI.getLangOpts(), ContentsBuffer.get(), 0); + auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0); trace::Span Tracer("BuildPreamble"); SPAN_ATTACH(Tracer, "File", FileName); @@ -376,8 +374,7 @@ const CompilerInvocation &CI) { auto ContentsBuffer = llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName); - auto Bounds = - ComputePreambleBounds(*CI.getLangOpts(), ContentsBuffer.get(), 0); + auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0); auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory); return compileCommandsAreEqual(Inputs.CompileCommand, Preamble.CompileCommand) && diff --git a/clang/include/clang/Frontend/PrecompiledPreamble.h b/clang/include/clang/Frontend/PrecompiledPreamble.h --- a/clang/include/clang/Frontend/PrecompiledPreamble.h +++ b/clang/include/clang/Frontend/PrecompiledPreamble.h @@ -41,7 +41,7 @@ /// Runs lexer to compute suggested preamble bounds. PreambleBounds ComputePreambleBounds(const LangOptions &LangOpts, - const llvm::MemoryBuffer *Buffer, + const llvm::MemoryBufferRef &Buffer, unsigned MaxLines); class PreambleCallbacks; diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -1317,9 +1317,8 @@ if (!MainFileBuffer) return nullptr; - PreambleBounds Bounds = - ComputePreambleBounds(*PreambleInvocationIn.getLangOpts(), - MainFileBuffer.get(), MaxLines); + PreambleBounds Bounds = ComputePreambleBounds( + *PreambleInvocationIn.getLangOpts(), *MainFileBuffer, MaxLines); if (!Bounds.Size) return nullptr; diff --git a/clang/lib/Frontend/PrecompiledPreamble.cpp b/clang/lib/Frontend/PrecompiledPreamble.cpp --- a/clang/lib/Frontend/PrecompiledPreamble.cpp +++ b/clang/lib/Frontend/PrecompiledPreamble.cpp @@ -303,9 +303,9 @@ } // namespace PreambleBounds clang::ComputePreambleBounds(const LangOptions &LangOpts, - const llvm::MemoryBuffer *Buffer, + const llvm::MemoryBufferRef &Buffer, unsigned MaxLines) { - return Lexer::ComputePreamble(Buffer->getBuffer(), LangOpts, MaxLines); + return Lexer::ComputePreamble(Buffer.getBuffer(), LangOpts, MaxLines); } llvm::ErrorOr PrecompiledPreamble::Build( @@ -621,7 +621,7 @@ void PrecompiledPreamble::OverridePreamble( CompilerInvocation &CI, IntrusiveRefCntPtr &VFS, llvm::MemoryBuffer *MainFileBuffer) const { - auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), MainFileBuffer, 0); + auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *MainFileBuffer, 0); configurePreamble(Bounds, CI, VFS, MainFileBuffer); }