Skip to content

Commit

Permalink
Frontend: Change ComputePreambleBounds to take MemoryBufferRef, NFC
Browse files Browse the repository at this point in the history
Avoid requiring an actual MemoryBuffer in ComputePreambleBounds, when
a MemoryBufferRef will do just fine.

Differential Revision: https://reviews.llvm.org/D90890
  • Loading branch information
dexonsmith committed Nov 11, 2020
1 parent 3c09103 commit 4c55c3b
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 14 deletions.
2 changes: 1 addition & 1 deletion clang-tools-extra/clangd/CodeComplete.cpp
Expand Up @@ -1104,7 +1104,7 @@ bool semaCodeComplete(std::unique_ptr<CodeCompleteConsumer> Consumer,
// 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);
Expand Down
9 changes: 3 additions & 6 deletions clang-tools-extra/clangd/Preamble.cpp
Expand Up @@ -249,8 +249,7 @@ scanPreamble(llvm::StringRef Contents, const tooling::CompileCommand &Cmd) {
// 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(
Expand Down Expand Up @@ -322,8 +321,7 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
// 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);
Expand Down Expand Up @@ -376,8 +374,7 @@ bool isPreambleCompatible(const PreambleData &Preamble,
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) &&
Expand Down
2 changes: 1 addition & 1 deletion clang/include/clang/Frontend/PrecompiledPreamble.h
Expand Up @@ -41,7 +41,7 @@ class PCHContainerOperations;

/// Runs lexer to compute suggested preamble bounds.
PreambleBounds ComputePreambleBounds(const LangOptions &LangOpts,
const llvm::MemoryBuffer *Buffer,
const llvm::MemoryBufferRef &Buffer,
unsigned MaxLines);

class PreambleCallbacks;
Expand Down
5 changes: 2 additions & 3 deletions clang/lib/Frontend/ASTUnit.cpp
Expand Up @@ -1317,9 +1317,8 @@ ASTUnit::getMainBufferWithPrecompiledPreamble(
if (!MainFileBuffer)
return nullptr;

PreambleBounds Bounds =
ComputePreambleBounds(*PreambleInvocationIn.getLangOpts(),
MainFileBuffer.get(), MaxLines);
PreambleBounds Bounds = ComputePreambleBounds(
*PreambleInvocationIn.getLangOpts(), *MainFileBuffer, MaxLines);
if (!Bounds.Size)
return nullptr;

Expand Down
6 changes: 3 additions & 3 deletions clang/lib/Frontend/PrecompiledPreamble.cpp
Expand Up @@ -303,9 +303,9 @@ template <class T> bool moveOnNoError(llvm::ErrorOr<T> Val, T &Output) {
} // 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> PrecompiledPreamble::Build(
Expand Down Expand Up @@ -621,7 +621,7 @@ void PrecompiledPreamble::AddImplicitPreamble(
void PrecompiledPreamble::OverridePreamble(
CompilerInvocation &CI, IntrusiveRefCntPtr<llvm::vfs::FileSystem> &VFS,
llvm::MemoryBuffer *MainFileBuffer) const {
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), MainFileBuffer, 0);
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *MainFileBuffer, 0);
configurePreamble(Bounds, CI, VFS, MainFileBuffer);
}

Expand Down

0 comments on commit 4c55c3b

Please sign in to comment.