forked from OSchip/llvm-project
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
This commit is contained in:
parent
3c09103291
commit
4c55c3b66d
|
@ -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);
|
||||
|
|
|
@ -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(
|
||||
|
@ -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);
|
||||
|
@ -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) &&
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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(
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue