Skip to content

Commit 4c55c3b

Browse files
committed
Frontend: Change ComputePreambleBounds to take MemoryBufferRef, NFC
Avoid requiring an actual MemoryBuffer in ComputePreambleBounds, when a MemoryBufferRef will do just fine. Differential Revision: https://reviews.llvm.org/D90890
1 parent 3c09103 commit 4c55c3b

File tree

5 files changed

+10
-14
lines changed

5 files changed

+10
-14
lines changed

clang-tools-extra/clangd/CodeComplete.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,7 @@ bool semaCodeComplete(std::unique_ptr<CodeCompleteConsumer> Consumer,
11041104
// overriding the preamble will break sema completion. Fortunately we can just
11051105
// skip all includes in this case; these completions are really simple.
11061106
PreambleBounds PreambleRegion =
1107-
ComputePreambleBounds(*CI->getLangOpts(), ContentsBuffer.get(), 0);
1107+
ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0);
11081108
bool CompletingInPreamble = PreambleRegion.Size > Input.Offset;
11091109
if (Input.Patch)
11101110
Input.Patch->apply(*CI);

clang-tools-extra/clangd/Preamble.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,7 @@ scanPreamble(llvm::StringRef Contents, const tooling::CompileCommand &Cmd) {
249249
// This means we're scanning (though not preprocessing) the preamble section
250250
// twice. However, it's important to precisely follow the preamble bounds used
251251
// elsewhere.
252-
auto Bounds =
253-
ComputePreambleBounds(*CI->getLangOpts(), ContentsBuffer.get(), 0);
252+
auto Bounds = ComputePreambleBounds(*CI->getLangOpts(), *ContentsBuffer, 0);
254253
auto PreambleContents =
255254
llvm::MemoryBuffer::getMemBufferCopy(Contents.substr(0, Bounds.Size));
256255
auto Clang = prepareCompilerInstance(
@@ -322,8 +321,7 @@ buildPreamble(PathRef FileName, CompilerInvocation CI,
322321
// without those.
323322
auto ContentsBuffer =
324323
llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName);
325-
auto Bounds =
326-
ComputePreambleBounds(*CI.getLangOpts(), ContentsBuffer.get(), 0);
324+
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0);
327325

328326
trace::Span Tracer("BuildPreamble");
329327
SPAN_ATTACH(Tracer, "File", FileName);
@@ -376,8 +374,7 @@ bool isPreambleCompatible(const PreambleData &Preamble,
376374
const CompilerInvocation &CI) {
377375
auto ContentsBuffer =
378376
llvm::MemoryBuffer::getMemBuffer(Inputs.Contents, FileName);
379-
auto Bounds =
380-
ComputePreambleBounds(*CI.getLangOpts(), ContentsBuffer.get(), 0);
377+
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *ContentsBuffer, 0);
381378
auto VFS = Inputs.TFS->view(Inputs.CompileCommand.Directory);
382379
return compileCommandsAreEqual(Inputs.CompileCommand,
383380
Preamble.CompileCommand) &&

clang/include/clang/Frontend/PrecompiledPreamble.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class PCHContainerOperations;
4141

4242
/// Runs lexer to compute suggested preamble bounds.
4343
PreambleBounds ComputePreambleBounds(const LangOptions &LangOpts,
44-
const llvm::MemoryBuffer *Buffer,
44+
const llvm::MemoryBufferRef &Buffer,
4545
unsigned MaxLines);
4646

4747
class PreambleCallbacks;

clang/lib/Frontend/ASTUnit.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,9 +1317,8 @@ ASTUnit::getMainBufferWithPrecompiledPreamble(
13171317
if (!MainFileBuffer)
13181318
return nullptr;
13191319

1320-
PreambleBounds Bounds =
1321-
ComputePreambleBounds(*PreambleInvocationIn.getLangOpts(),
1322-
MainFileBuffer.get(), MaxLines);
1320+
PreambleBounds Bounds = ComputePreambleBounds(
1321+
*PreambleInvocationIn.getLangOpts(), *MainFileBuffer, MaxLines);
13231322
if (!Bounds.Size)
13241323
return nullptr;
13251324

clang/lib/Frontend/PrecompiledPreamble.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,9 +303,9 @@ template <class T> bool moveOnNoError(llvm::ErrorOr<T> Val, T &Output) {
303303
} // namespace
304304

305305
PreambleBounds clang::ComputePreambleBounds(const LangOptions &LangOpts,
306-
const llvm::MemoryBuffer *Buffer,
306+
const llvm::MemoryBufferRef &Buffer,
307307
unsigned MaxLines) {
308-
return Lexer::ComputePreamble(Buffer->getBuffer(), LangOpts, MaxLines);
308+
return Lexer::ComputePreamble(Buffer.getBuffer(), LangOpts, MaxLines);
309309
}
310310

311311
llvm::ErrorOr<PrecompiledPreamble> PrecompiledPreamble::Build(
@@ -621,7 +621,7 @@ void PrecompiledPreamble::AddImplicitPreamble(
621621
void PrecompiledPreamble::OverridePreamble(
622622
CompilerInvocation &CI, IntrusiveRefCntPtr<llvm::vfs::FileSystem> &VFS,
623623
llvm::MemoryBuffer *MainFileBuffer) const {
624-
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), MainFileBuffer, 0);
624+
auto Bounds = ComputePreambleBounds(*CI.getLangOpts(), *MainFileBuffer, 0);
625625
configurePreamble(Bounds, CI, VFS, MainFileBuffer);
626626
}
627627

0 commit comments

Comments
 (0)