clang  6.0.0svn
Classes | Public Member Functions | Static Public Member Functions | List of all members
clang::PrecompiledPreamble Class Reference

A class holding a PCH and all information to check whether it is valid to reuse the PCH for the subsequent runs. More...

#include "clang/Frontend/PrecompiledPreamble.h"

Public Member Functions

 PrecompiledPreamble (PrecompiledPreamble &&)=default
 
PrecompiledPreambleoperator= (PrecompiledPreamble &&)=default
 
PreambleBounds getBounds () const
 PreambleBounds used to build the preamble. More...
 
StringRef GetPCHPath () const
 The temporary file path at which the preamble PCH was placed. More...
 
bool CanReuse (const CompilerInvocation &Invocation, const llvm::MemoryBuffer *MainFileBuffer, PreambleBounds Bounds, vfs::FileSystem *VFS) const
 Check whether PrecompiledPreamble can be reused for the new contents(MainFileBuffer) of the main file. More...
 
void AddImplicitPreamble (CompilerInvocation &CI, llvm::MemoryBuffer *MainFileBuffer) const
 Changes options inside CI to use PCH from this preamble. More...
 

Static Public Member Functions

static llvm::ErrorOr< PrecompiledPreambleBuild (const CompilerInvocation &Invocation, const llvm::MemoryBuffer *MainFileBuffer, PreambleBounds Bounds, DiagnosticsEngine &Diagnostics, IntrusiveRefCntPtr< vfs::FileSystem > VFS, std::shared_ptr< PCHContainerOperations > PCHContainerOps, PreambleCallbacks &Callbacks)
 Try to build PrecompiledPreamble for Invocation. More...
 

Detailed Description

A class holding a PCH and all information to check whether it is valid to reuse the PCH for the subsequent runs.

Use BuildPreamble to create PCH and CanReusePreamble + AddImplicitPreamble to make use of it.

Definition at line 49 of file PrecompiledPreamble.h.

Constructor & Destructor Documentation

◆ PrecompiledPreamble()

clang::PrecompiledPreamble::PrecompiledPreamble ( PrecompiledPreamble &&  )
default

Referenced by AddImplicitPreamble().

Member Function Documentation

◆ AddImplicitPreamble()

void PrecompiledPreamble::AddImplicitPreamble ( CompilerInvocation CI,
llvm::MemoryBuffer *  MainFileBuffer 
) const

Changes options inside CI to use PCH from this preamble.

Also remaps main file to MainFileBuffer.

Definition at line 429 of file PrecompiledPreamble.cpp.

References clang::CompilerInvocation::getFrontendOpts(), clang::CompilerInvocationBase::getPreprocessorOpts(), clang::FrontendOptions::Inputs, PrecompiledPreamble(), and clang::PreprocessorOptions::PrecompiledPreambleBytes.

◆ Build()

llvm::ErrorOr< PrecompiledPreamble > PrecompiledPreamble::Build ( const CompilerInvocation Invocation,
const llvm::MemoryBuffer *  MainFileBuffer,
PreambleBounds  Bounds,
DiagnosticsEngine Diagnostics,
IntrusiveRefCntPtr< vfs::FileSystem VFS,
std::shared_ptr< PCHContainerOperations PCHContainerOps,
PreambleCallbacks Callbacks 
)
static

Try to build PrecompiledPreamble for Invocation.

See BuildPreambleError for possible error codes.

Parameters
InvocationOriginal CompilerInvocation with options to compile the file.
MainFileBufferBuffer with the contents of the main file.
BoundsBounds of the preamble, result of calling ComputePreambleBounds.
DiagnosticsDiagnostics engine to be used while building the preamble.
VFSAn instance of vfs::FileSystem to be used for file accesses.
PCHContainerOpsAn instance of PCHContainerOperations.
CallbacksA set of callbacks to be executed when building the preamble.

Definition at line 201 of file PrecompiledPreamble.cpp.

References clang::PreprocessorOptions::addRemappedFile(), clang::PreambleCallbacks::AfterExecute(), clang::BeginSourceFileFailed, clang::CouldntCreateTargetInfo, clang::CouldntCreateTempFile, clang::CouldntCreateVFSOverlay, clang::CouldntEmitPCH, clang::TargetInfo::CreateTargetInfo(), clang::createVFSFromCompilerInvocation(), Filename, clang::frontend::GeneratePCH, clang::PreprocessorOptions::GeneratePreamble, clang::SourceManager::getFileEntryForID(), clang::SourceManager::getMainFileID(), clang::FileEntry::getModificationTime(), clang::FileEntry::getName(), clang::FileEntry::getSize(), clang::InputKind::LLVM_IR, clang::PreambleBounds::PreambleEndsAtStartOfLine, clang::PreambleIsEmpty, clang::PreprocessorOptions::PrecompiledPreambleBytes, clang::ProcessWarningOptions(), clang::DiagnosticsEngine::Reset(), clang::PreprocessorOptions::RetainRemappedFileBuffers, clang::PreambleBounds::Size, and clang::InputKind::Source.

Referenced by makeStandaloneDiagnostic().

◆ CanReuse()

bool PrecompiledPreamble::CanReuse ( const CompilerInvocation Invocation,
const llvm::MemoryBuffer *  MainFileBuffer,
PreambleBounds  Bounds,
vfs::FileSystem VFS 
) const

Check whether PrecompiledPreamble can be reused for the new contents(MainFileBuffer) of the main file.

Definition at line 349 of file PrecompiledPreamble.cpp.

References clang::PreambleBounds::PreambleEndsAtStartOfLine, and clang::PreambleBounds::Size.

◆ getBounds()

PreambleBounds PrecompiledPreamble::getBounds ( ) const

PreambleBounds used to build the preamble.

Definition at line 345 of file PrecompiledPreamble.cpp.

◆ GetPCHPath()

StringRef clang::PrecompiledPreamble::GetPCHPath ( ) const
inline

The temporary file path at which the preamble PCH was placed.

Definition at line 89 of file PrecompiledPreamble.h.

◆ operator=()

PrecompiledPreamble& clang::PrecompiledPreamble::operator= ( PrecompiledPreamble &&  )
default

The documentation for this class was generated from the following files: