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

CompilerInstance - Helper class for managing a single instance of the Clang compiler. More...

#include "clang/Frontend/CompilerInstance.h"

Inheritance diagram for clang::CompilerInstance:
Inheritance graph
[legend]
Collaboration diagram for clang::CompilerInstance:
Collaboration graph
[legend]

Public Member Functions

 CompilerInstance (std::shared_ptr< PCHContainerOperations > PCHContainerOps=std::make_shared< PCHContainerOperations >(), MemoryBufferCache *SharedPCMCache=nullptr)
 
 ~CompilerInstance () override
 
High-Level Operations

{

bool ExecuteAction (FrontendAction &Act)
 ExecuteAction - Execute the provided action against the compiler's CompilerInvocation object. More...
 
Compiler Invocation and Options

}

{

bool hasInvocation () const
 
CompilerInvocationgetInvocation ()
 
void setInvocation (std::shared_ptr< CompilerInvocation > Value)
 setInvocation - Replace the current invocation. More...
 
bool shouldBuildGlobalModuleIndex () const
 Indicates whether we should (re)build the global module index. More...
 
void setBuildGlobalModuleIndex (bool Build)
 Set the flag indicating whether we should (re)build the global module index. More...
 
Forwarding Methods

}

{

AnalyzerOptionsRef getAnalyzerOpts ()
 
CodeGenOptionsgetCodeGenOpts ()
 
const CodeGenOptionsgetCodeGenOpts () const
 
DependencyOutputOptionsgetDependencyOutputOpts ()
 
const DependencyOutputOptionsgetDependencyOutputOpts () const
 
DiagnosticOptionsgetDiagnosticOpts ()
 
const DiagnosticOptionsgetDiagnosticOpts () const
 
FileSystemOptionsgetFileSystemOpts ()
 
const FileSystemOptionsgetFileSystemOpts () const
 
FrontendOptionsgetFrontendOpts ()
 
const FrontendOptionsgetFrontendOpts () const
 
HeaderSearchOptionsgetHeaderSearchOpts ()
 
const HeaderSearchOptionsgetHeaderSearchOpts () const
 
std::shared_ptr< HeaderSearchOptionsgetHeaderSearchOptsPtr () const
 
LangOptionsgetLangOpts ()
 
const LangOptionsgetLangOpts () const
 
PreprocessorOptionsgetPreprocessorOpts ()
 
const PreprocessorOptionsgetPreprocessorOpts () const
 
PreprocessorOutputOptionsgetPreprocessorOutputOpts ()
 
const PreprocessorOutputOptionsgetPreprocessorOutputOpts () const
 
TargetOptionsgetTargetOpts ()
 
const TargetOptionsgetTargetOpts () const
 
Diagnostics Engine

}

{

bool hasDiagnostics () const
 
DiagnosticsEnginegetDiagnostics () const
 Get the current diagnostics engine. More...
 
void setDiagnostics (DiagnosticsEngine *Value)
 setDiagnostics - Replace the current diagnostics engine. More...
 
DiagnosticConsumergetDiagnosticClient () const
 
Target Info

}

{

bool hasTarget () const
 
TargetInfogetTarget () const
 
void setTarget (TargetInfo *Value)
 Replace the current Target. More...
 
AuxTarget Info

}

{

TargetInfogetAuxTarget () const
 
void setAuxTarget (TargetInfo *Value)
 Replace the current AuxTarget. More...
 
Virtual File System

}

{

bool hasVirtualFileSystem () const
 
vfs::FileSystemgetVirtualFileSystem () const
 
void setVirtualFileSystem (IntrusiveRefCntPtr< vfs::FileSystem > FS)
 Replace the current virtual file system. More...
 
File Manager

}

{

bool hasFileManager () const
 
FileManagergetFileManager () const
 Return the current file manager to the caller. More...
 
void resetAndLeakFileManager ()
 
void setFileManager (FileManager *Value)
 Replace the current file manager and virtual file system. More...
 
Source Manager

}

{

bool hasSourceManager () const
 
SourceManagergetSourceManager () const
 Return the current source manager. More...
 
void resetAndLeakSourceManager ()
 
void setSourceManager (SourceManager *Value)
 setSourceManager - Replace the current source manager. More...
 
Preprocessor

}

{

bool hasPreprocessor () const
 
PreprocessorgetPreprocessor () const
 Return the current preprocessor. More...
 
std::shared_ptr< PreprocessorgetPreprocessorPtr ()
 
void resetAndLeakPreprocessor ()
 
void setPreprocessor (std::shared_ptr< Preprocessor > Value)
 Replace the current preprocessor. More...
 
ASTContext

}

{

bool hasASTContext () const
 
ASTContextgetASTContext () const
 
void resetAndLeakASTContext ()
 
void setASTContext (ASTContext *Value)
 setASTContext - Replace the current AST context. More...
 
void setSema (Sema *S)
 Replace the current Sema; the compiler instance takes ownership of S. More...
 
ASTConsumer

}

{

bool hasASTConsumer () const
 
ASTConsumergetASTConsumer () const
 
std::unique_ptr< ASTConsumertakeASTConsumer ()
 takeASTConsumer - Remove the current AST consumer and give ownership to the caller. More...
 
void setASTConsumer (std::unique_ptr< ASTConsumer > Value)
 setASTConsumer - Replace the current AST consumer; the compiler instance takes ownership of Value. More...
 
Semantic analysis

}

{

bool hasSema () const
 
SemagetSema () const
 
std::unique_ptr< SematakeSema ()
 
void resetAndLeakSema ()
 
Module Management

}

{

IntrusiveRefCntPtr< ASTReadergetModuleManager () const
 
void setModuleManager (IntrusiveRefCntPtr< ASTReader > Reader)
 
std::shared_ptr< ModuleDependencyCollectorgetModuleDepCollector () const
 
void setModuleDepCollector (std::shared_ptr< ModuleDependencyCollector > Collector)
 
std::shared_ptr< PCHContainerOperationsgetPCHContainerOperations () const
 
const PCHContainerWritergetPCHContainerWriter () const
 Return the appropriate PCHContainerWriter depending on the current CodeGenOptions. More...
 
const PCHContainerReadergetPCHContainerReader () const
 Return the appropriate PCHContainerReader depending on the current CodeGenOptions. More...
 
Code Completion

}

{

bool hasCodeCompletionConsumer () const
 
CodeCompleteConsumergetCodeCompletionConsumer () const
 
void setCodeCompletionConsumer (CodeCompleteConsumer *Value)
 setCodeCompletionConsumer - Replace the current code completion consumer; the compiler instance takes ownership of Value. More...
 
Frontend timer

}

{

bool hasFrontendTimer () const
 
llvm::Timer & getFrontendTimer () const
 
Output Files

}

{

void addOutputFile (OutputFile &&OutFile)
 addOutputFile - Add an output file onto the list of tracked output files. More...
 
void clearOutputFiles (bool EraseFiles)
 clearOutputFiles - Clear the output file list. More...
 
- Public Member Functions inherited from clang::ModuleLoader
 ModuleLoader (bool BuildingModule=false)
 
virtual ~ModuleLoader ()
 
bool buildingModule () const
 Returns true if this instance is building a module. More...
 
void setBuildingModule (bool BuildingModuleFlag)
 Flag indicating whether this instance is building a module. More...
 

Construction Utility Methods

}

{

void createDiagnostics (DiagnosticConsumer *Client=nullptr, bool ShouldOwnClient=true)
 Create the diagnostics engine using the invocation's diagnostic options and replace any existing one with it. More...
 
FileManagercreateFileManager ()
 Create the file manager and replace any existing one with it. More...
 
void createSourceManager (FileManager &FileMgr)
 Create the source manager and replace any existing one with it. More...
 
void createPreprocessor (TranslationUnitKind TUKind)
 Create the preprocessor, using the invocation, file, and source managers, and replace any existing one with it. More...
 
std::string getSpecificModuleCachePath ()
 
void createASTContext ()
 Create the AST context. More...
 
void createPCHExternalASTSource (StringRef Path, bool DisablePCHValidation, bool AllowPCHWithCompilerErrors, void *DeserializationListener, bool OwnDeserializationListener)
 Create an external AST source to read a PCH file and attach it to the AST context. More...
 
void createCodeCompletionConsumer ()
 Create a code completion consumer using the invocation; note that this will cause the source manager to truncate the input source file at the completion point. More...
 
void createSema (TranslationUnitKind TUKind, CodeCompleteConsumer *CompletionConsumer)
 Create the Sema object to be used for parsing. More...
 
void createFrontendTimer ()
 Create the frontend timer and replace any existing one with it. More...
 
std::unique_ptr< raw_pwrite_stream > createDefaultOutputFile (bool Binary=true, StringRef BaseInput="", StringRef Extension="")
 Create the default output file (from the invocation's options) and add it to the list of tracked output files. More...
 
std::unique_ptr< raw_pwrite_stream > createOutputFile (StringRef OutputPath, bool Binary, bool RemoveFileOnSignal, StringRef BaseInput, StringRef Extension, bool UseTemporary, bool CreateMissingDirectories=false)
 Create a new output file and add it to the list of tracked output files, optionally deriving the output path name. More...
 
std::unique_ptr< raw_pwrite_stream > createOutputFile (StringRef OutputPath, std::error_code &Error, bool Binary, bool RemoveFileOnSignal, StringRef BaseInput, StringRef Extension, bool UseTemporary, bool CreateMissingDirectories, std::string *ResultPathName, std::string *TempPathName)
 Create a new output file, optionally deriving the output path name. More...
 
std::unique_ptr< raw_pwrite_stream > createNullOutputFile ()
 
static IntrusiveRefCntPtr< DiagnosticsEnginecreateDiagnostics (DiagnosticOptions *Opts, DiagnosticConsumer *Client=nullptr, bool ShouldOwnClient=true, const CodeGenOptions *CodeGenOpts=nullptr)
 Create a DiagnosticsEngine object with a the TextDiagnosticPrinter. More...
 
static IntrusiveRefCntPtr< ASTReadercreatePCHExternalASTSource (StringRef Path, StringRef Sysroot, bool DisablePCHValidation, bool AllowPCHWithCompilerErrors, Preprocessor &PP, ASTContext &Context, const PCHContainerReader &PCHContainerRdr, ArrayRef< std::shared_ptr< ModuleFileExtension >> Extensions, DependencyFileGenerator *DependencyFile, ArrayRef< std::shared_ptr< DependencyCollector >> DependencyCollectors, void *DeserializationListener, bool OwnDeserializationListener, bool Preamble, bool UseGlobalModuleIndex)
 Create an external AST source to read a PCH file. More...
 
static CodeCompleteConsumercreateCodeCompletionConsumer (Preprocessor &PP, StringRef Filename, unsigned Line, unsigned Column, const CodeCompleteOptions &Opts, raw_ostream &OS)
 Create a code completion consumer to print code completion results, at Filename, Line, and Column, to the given output stream OS. More...
 

Initialization Utility Methods

}

{

bool InitializeSourceManager (const FrontendInputFile &Input)
 InitializeSourceManager - Initialize the source manager to set InputFile as the main file. More...
 
void createModuleManager ()
 } More...
 
bool loadModuleFile (StringRef FileName)
 
ModuleLoadResult loadModule (SourceLocation ImportLoc, ModuleIdPath Path, Module::NameVisibilityKind Visibility, bool IsInclusionDirective) override
 Attempt to load the given module. More...
 
void loadModuleFromSource (SourceLocation ImportLoc, StringRef ModuleName, StringRef Source) override
 Attempt to load the given module from the specified source buffer. More...
 
void makeModuleVisible (Module *Mod, Module::NameVisibilityKind Visibility, SourceLocation ImportLoc) override
 Make the given module visible. More...
 
bool hadModuleLoaderFatalFailure () const
 
GlobalModuleIndexloadGlobalModuleIndex (SourceLocation TriggerLoc) override
 Load, create, or return global module. More...
 
bool lookupMissingImports (StringRef Name, SourceLocation TriggerLoc) override
 Check global module index for missing imports. More...
 
void addDependencyCollector (std::shared_ptr< DependencyCollector > Listener)
 
void setExternalSemaSource (IntrusiveRefCntPtr< ExternalSemaSource > ESS)
 
MemoryBufferCachegetPCMCache () const
 
static bool InitializeSourceManager (const FrontendInputFile &Input, DiagnosticsEngine &Diags, FileManager &FileMgr, SourceManager &SourceMgr, HeaderSearch *HS, DependencyOutputOptions &DepOpts, const FrontendOptions &Opts)
 InitializeSourceManager - Initialize the source manager to set InputFile as the main file. More...
 

Additional Inherited Members

- Public Attributes inherited from clang::ModuleLoader
bool HadFatalFailure = false
 

Detailed Description

CompilerInstance - Helper class for managing a single instance of the Clang compiler.

The CompilerInstance serves two purposes: (1) It manages the various objects which are necessary to run the compiler, for example the preprocessor, the target information, and the AST context. (2) It provides utility routines for constructing and manipulating the common Clang objects.

The compiler instance generally owns the instance of all the objects that it manages. However, clients can still share objects by manually setting the object and retaking ownership prior to destroying the CompilerInstance.

The compiler instance is intended to simplify clients, but not to lock them in to the compiler instance for everything. When possible, utility functions come in two forms; a short form that reuses the CompilerInstance objects, and a long form that takes explicit instances of any required objects.

Definition at line 72 of file CompilerInstance.h.

Constructor & Destructor Documentation

◆ CompilerInstance()

CompilerInstance::CompilerInstance ( std::shared_ptr< PCHContainerOperations PCHContainerOps = std::make_shared<PCHContainerOperations>(),
MemoryBufferCache SharedPCMCache = nullptr 
)
explicit

◆ ~CompilerInstance()

CompilerInstance::~CompilerInstance ( )
override

Definition at line 70 of file CompilerInstance.cpp.

Member Function Documentation

◆ addDependencyCollector()

void clang::CompilerInstance::addDependencyCollector ( std::shared_ptr< DependencyCollector Listener)
inline

Definition at line 799 of file CompilerInstance.h.

Referenced by createPreprocessor().

◆ addOutputFile()

void CompilerInstance::addOutputFile ( OutputFile &&  OutFile)

addOutputFile - Add an output file onto the list of tracked output files.

Parameters
OutFile- The output file info.

Definition at line 649 of file CompilerInstance.cpp.

Referenced by createOutputFile().

◆ clearOutputFiles()

void CompilerInstance::clearOutputFiles ( bool  EraseFiles)

clearOutputFiles - Clear the output file list.

The underlying output streams must have been closed beforehand.

Parameters
EraseFiles- If true, attempt to erase the files from disk.

Definition at line 653 of file CompilerInstance.cpp.

References getDiagnostics(), and clang::DiagnosticsEngine::Report().

Referenced by clang::FrontendAction::EndSourceFile().

◆ createASTContext()

void CompilerInstance::createASTContext ( )

◆ createCodeCompletionConsumer() [1/2]

void CompilerInstance::createCodeCompletionConsumer ( )

Create a code completion consumer using the invocation; note that this will cause the source manager to truncate the input source file at the completion point.

Definition at line 591 of file CompilerInstance.cpp.

References clang::FrontendOptions::CodeCompletionAt, clang::ParsedSourceLocation::Column, EnableCodeCompletion(), clang::ParsedSourceLocation::FileName, clang::Preprocessor::getDiagnostics(), getFrontendOpts(), getPreprocessor(), clang::ParsedSourceLocation::Line, clang::DiagnosticsEngine::Report(), and setCodeCompletionConsumer().

Referenced by clang::ASTFrontendAction::ExecuteAction().

◆ createCodeCompletionConsumer() [2/2]

CodeCompleteConsumer * CompilerInstance::createCodeCompletionConsumer ( Preprocessor PP,
StringRef  Filename,
unsigned  Line,
unsigned  Column,
const CodeCompleteOptions Opts,
raw_ostream &  OS 
)
static

Create a code completion consumer to print code completion results, at Filename, Line, and Column, to the given output stream OS.

Definition at line 623 of file CompilerInstance.cpp.

References EnableCodeCompletion().

◆ createDefaultOutputFile()

std::unique_ptr< raw_pwrite_stream > CompilerInstance::createDefaultOutputFile ( bool  Binary = true,
StringRef  BaseInput = "",
StringRef  Extension = "" 
)

Create the default output file (from the invocation's options) and add it to the list of tracked output files.

The files created by this function always use temporary files to write to their result (that is, the data is written to a temporary file which will atomically replace the target output on success).

Returns
- Null on error.

Definition at line 685 of file CompilerInstance.cpp.

References createOutputFile(), and getFrontendOpts().

Referenced by clang::RewriteIncludesAction::BeginSourceFileAction(), clang::HTMLPrintAction::CreateASTConsumer(), clang::ASTPrintAction::CreateASTConsumer(), clang::RewriteObjCAction::CreateASTConsumer(), clang::RewriteMacrosAction::ExecuteAction(), clang::RewriteTestAction::ExecuteAction(), and clang::GeneratePTHAction::ExecuteAction().

◆ createDiagnostics() [1/2]

void CompilerInstance::createDiagnostics ( DiagnosticConsumer Client = nullptr,
bool  ShouldOwnClient = true 
)

Create the diagnostics engine using the invocation's diagnostic options and replace any existing one with it.

Note that this routine also replaces the diagnostic client, allocating one if one is not provided.

Parameters
ClientIf non-NULL, a diagnostic client that will be attached to (and, then, owned by) the DiagnosticsEngine inside this AST unit.
ShouldOwnClientIf Client is non-NULL, specifies whether the diagnostic object should take ownership of the client.

Definition at line 261 of file CompilerInstance.cpp.

References getCodeGenOpts(), and getDiagnosticOpts().

Referenced by clang::createInvocationFromCommandLine(), and clang::tooling::FrontendActionFactory::runInvocation().

◆ createDiagnostics() [2/2]

IntrusiveRefCntPtr< DiagnosticsEngine > CompilerInstance::createDiagnostics ( DiagnosticOptions Opts,
DiagnosticConsumer Client = nullptr,
bool  ShouldOwnClient = true,
const CodeGenOptions CodeGenOpts = nullptr 
)
static

Create a DiagnosticsEngine object with a the TextDiagnosticPrinter.

If no diagnostic client is provided, this creates a DiagnosticConsumer that is owned by the returned diagnostic object, if using directly the caller is responsible for releasing the returned DiagnosticsEngine's client eventually.

Parameters
Opts- The diagnostic options; note that the created text diagnostic object contains a reference to these options.
ClientIf non-NULL, a diagnostic client that will be attached to (and, then, owned by) the returned DiagnosticsEngine object.
CodeGenOptsIf non-NULL, the code gen options in use, which may be used by some diagnostics printers (for logging purposes only).
Returns
The new object on success, or null on failure.

Definition at line 268 of file CompilerInstance.cpp.

References clang::DiagnosticOptions::DiagnosticLogFile, clang::DiagnosticOptions::DiagnosticSerializationFile, clang::ProcessWarningOptions(), SetUpDiagnosticLog(), and SetupSerializedDiagnostics().

◆ createFileManager()

FileManager * CompilerInstance::createFileManager ( )

Create the file manager and replace any existing one with it.

Returns
The new file manager on success, or null on failure.

Definition at line 303 of file CompilerInstance.cpp.

References clang::createVFSFromCompilerInvocation(), getDiagnostics(), getFileSystemOpts(), getInvocation(), hasVirtualFileSystem(), and setVirtualFileSystem().

◆ createFrontendTimer()

void CompilerInstance::createFrontendTimer ( )

Create the frontend timer and replace any existing one with it.

Definition at line 614 of file CompilerInstance.cpp.

◆ createModuleManager()

void CompilerInstance::createModuleManager ( )

◆ createNullOutputFile()

std::unique_ptr< raw_pwrite_stream > CompilerInstance::createNullOutputFile ( )

Definition at line 692 of file CompilerInstance.cpp.

◆ createOutputFile() [1/2]

std::unique_ptr< raw_pwrite_stream > CompilerInstance::createOutputFile ( StringRef  OutputPath,
bool  Binary,
bool  RemoveFileOnSignal,
StringRef  BaseInput,
StringRef  Extension,
bool  UseTemporary,
bool  CreateMissingDirectories = false 
)

Create a new output file and add it to the list of tracked output files, optionally deriving the output path name.

Returns
- Null on error.

Definition at line 697 of file CompilerInstance.cpp.

References addOutputFile(), getDiagnostics(), and clang::DiagnosticsEngine::Report().

Referenced by createDefaultOutputFile(), and clang::GeneratePCHAction::CreateOutputFile().

◆ createOutputFile() [2/2]

std::unique_ptr< llvm::raw_pwrite_stream > CompilerInstance::createOutputFile ( StringRef  OutputPath,
std::error_code &  Error,
bool  Binary,
bool  RemoveFileOnSignal,
StringRef  BaseInput,
StringRef  Extension,
bool  UseTemporary,
bool  CreateMissingDirectories,
std::string *  ResultPathName,
std::string *  TempPathName 
)

Create a new output file, optionally deriving the output path name.

If OutputPath is empty, then createOutputFile will derive an output path location as BaseInput, with any suffix removed, and Extension appended. If OutputPath is not stdout and UseTemporary is true, createOutputFile will create a new temporary file that must be renamed to OutputPath in the end.

Parameters
OutputPath- If given, the path to the output file.
Error[out] - On failure, the error.
BaseInput- If OutputPath is empty, the input path name to use for deriving the output path.
Extension- The extension to use for derived output names.
Binary- The mode to open the file in.
RemoveFileOnSignal- Whether the file should be registered with llvm::sys::RemoveFileOnSignal. Note that this is not safe for multithreaded use, as the underlying signal mechanism is not reentrant
UseTemporary- Create a new temporary file that must be renamed to OutputPath in the end.
CreateMissingDirectories- When UseTemporary is true, create missing directories in the output path.
ResultPathName[out] - If given, the result path name will be stored here on success.
TempPathName[out] - If given, the temporary file path name will be stored here on success.

Definition at line 720 of file CompilerInstance.cpp.

◆ createPCHExternalASTSource() [1/2]

void CompilerInstance::createPCHExternalASTSource ( StringRef  Path,
bool  DisablePCHValidation,
bool  AllowPCHWithCompilerErrors,
void *  DeserializationListener,
bool  OwnDeserializationListener 
)

◆ createPCHExternalASTSource() [2/2]

IntrusiveRefCntPtr< ASTReader > CompilerInstance::createPCHExternalASTSource ( StringRef  Path,
StringRef  Sysroot,
bool  DisablePCHValidation,
bool  AllowPCHWithCompilerErrors,
Preprocessor PP,
ASTContext Context,
const PCHContainerReader PCHContainerRdr,
ArrayRef< std::shared_ptr< ModuleFileExtension >>  Extensions,
DependencyFileGenerator DependencyFile,
ArrayRef< std::shared_ptr< DependencyCollector >>  DependencyCollectors,
void *  DeserializationListener,
bool  OwnDeserializationListener,
bool  Preamble,
bool  UseGlobalModuleIndex 
)
static

◆ createPreprocessor()

void CompilerInstance::createPreprocessor ( TranslationUnitKind  TUKind)

◆ createSema()

void CompilerInstance::createSema ( TranslationUnitKind  TUKind,
CodeCompleteConsumer CompletionConsumer 
)

Create the Sema object to be used for parsing.

Definition at line 636 of file CompilerInstance.cpp.

References getASTConsumer(), getASTContext(), and getPreprocessor().

Referenced by clang::ASTFrontendAction::ExecuteAction().

◆ createSourceManager()

void CompilerInstance::createSourceManager ( FileManager FileMgr)

Create the source manager and replace any existing one with it.

Definition at line 317 of file CompilerInstance.cpp.

References getDiagnostics().

Referenced by clang::tooling::FrontendActionFactory::runInvocation().

◆ ExecuteAction()

bool CompilerInstance::ExecuteAction ( FrontendAction Act)

ExecuteAction - Execute the provided action against the compiler's CompilerInvocation object.

This function makes the following assumptions:

  • The invocation options should be initialized. This function does not handle the '-help' or '-version' options, clients should handle those directly.
  • The diagnostics engine should have already been created by the client.
  • No other CompilerInstance state should have been initialized (this is an unchecked error).
  • Clients should have initialized any LLVM target features that may be required.
  • Clients should eventually call llvm_shutdown() upon the completion of this routine to ensure that any managed objects are properly destroyed.

Note that this routine may write output to 'stderr'.

Parameters
Act- The action to execute.
Returns
- True on success.

Definition at line 935 of file CompilerInstance.cpp.

References clang::TargetInfo::adjust(), clang::TargetInfo::adjustTargetOptions(), clang::FrontendOptions::AuxTriple, clang::TargetInfo::CreateTargetInfo(), getCodeGenOpts(), getDiagnostics(), getFrontendOpts(), getHeaderSearchOpts(), getInvocation(), getLangOpts(), getTarget(), getTargetOpts(), clang::TargetInfo::getTriple(), hasDiagnostics(), hasTarget(), clang::TargetInfo::noSignedCharForObjCBool(), clang::frontend::RewriteObjC, setAuxTarget(), and setTarget().

Referenced by clang::ExecuteCompilerInvocation(), and clang::tooling::FrontendActionFactory::runInvocation().

◆ getAnalyzerOpts()

AnalyzerOptionsRef clang::CompilerInstance::getAnalyzerOpts ( )
inline

◆ getASTConsumer()

ASTConsumer& clang::CompilerInstance::getASTConsumer ( ) const
inline

Definition at line 488 of file CompilerInstance.h.

Referenced by createModuleManager(), createSema(), setASTConsumer(), and setASTContext().

◆ getASTContext()

ASTContext& clang::CompilerInstance::getASTContext ( ) const
inline

◆ getAuxTarget()

TargetInfo* clang::CompilerInstance::getAuxTarget ( ) const
inline

Definition at line 373 of file CompilerInstance.h.

Referenced by createASTContext(), and createPreprocessor().

◆ getCodeCompletionConsumer()

CodeCompleteConsumer& clang::CompilerInstance::getCodeCompletionConsumer ( ) const
inline

Definition at line 563 of file CompilerInstance.h.

Referenced by clang::ASTFrontendAction::ExecuteAction().

◆ getCodeGenOpts() [1/2]

CodeGenOptions& clang::CompilerInstance::getCodeGenOpts ( )
inline

◆ getCodeGenOpts() [2/2]

const CodeGenOptions& clang::CompilerInstance::getCodeGenOpts ( ) const
inline

Definition at line 264 of file CompilerInstance.h.

◆ getDependencyOutputOpts() [1/2]

DependencyOutputOptions& clang::CompilerInstance::getDependencyOutputOpts ( )
inline

Definition at line 268 of file CompilerInstance.h.

Referenced by createPreprocessor().

◆ getDependencyOutputOpts() [2/2]

const DependencyOutputOptions& clang::CompilerInstance::getDependencyOutputOpts ( ) const
inline

Definition at line 271 of file CompilerInstance.h.

◆ getDiagnosticClient()

DiagnosticConsumer& clang::CompilerInstance::getDiagnosticClient ( ) const
inline

◆ getDiagnosticOpts() [1/2]

DiagnosticOptions& clang::CompilerInstance::getDiagnosticOpts ( )
inline

◆ getDiagnosticOpts() [2/2]

const DiagnosticOptions& clang::CompilerInstance::getDiagnosticOpts ( ) const
inline

Definition at line 278 of file CompilerInstance.h.

◆ getDiagnostics()

DiagnosticsEngine& clang::CompilerInstance::getDiagnostics ( ) const
inline

◆ getFileManager()

FileManager& clang::CompilerInstance::getFileManager ( ) const
inline

◆ getFileSystemOpts() [1/2]

FileSystemOptions& clang::CompilerInstance::getFileSystemOpts ( )
inline

◆ getFileSystemOpts() [2/2]

const FileSystemOptions& clang::CompilerInstance::getFileSystemOpts ( ) const
inline

Definition at line 285 of file CompilerInstance.h.

◆ getFrontendOpts() [1/2]

FrontendOptions& clang::CompilerInstance::getFrontendOpts ( )
inline

◆ getFrontendOpts() [2/2]

const FrontendOptions& clang::CompilerInstance::getFrontendOpts ( ) const
inline

Definition at line 292 of file CompilerInstance.h.

◆ getFrontendTimer()

llvm::Timer& clang::CompilerInstance::getFrontendTimer ( ) const
inline

Definition at line 579 of file CompilerInstance.h.

References Filename, and Line.

Referenced by clang::FrontendAction::Execute().

◆ getHeaderSearchOpts() [1/2]

HeaderSearchOptions& clang::CompilerInstance::getHeaderSearchOpts ( )
inline

◆ getHeaderSearchOpts() [2/2]

const HeaderSearchOptions& clang::CompilerInstance::getHeaderSearchOpts ( ) const
inline

Definition at line 299 of file CompilerInstance.h.

◆ getHeaderSearchOptsPtr()

std::shared_ptr<HeaderSearchOptions> clang::CompilerInstance::getHeaderSearchOptsPtr ( ) const
inline

Definition at line 302 of file CompilerInstance.h.

Referenced by createPreprocessor().

◆ getInvocation()

CompilerInvocation& clang::CompilerInstance::getInvocation ( )
inline

◆ getLangOpts() [1/2]

LangOptions& clang::CompilerInstance::getLangOpts ( )
inline

◆ getLangOpts() [2/2]

const LangOptions& clang::CompilerInstance::getLangOpts ( ) const
inline

Definition at line 309 of file CompilerInstance.h.

◆ getModuleDepCollector()

std::shared_ptr< ModuleDependencyCollector > CompilerInstance::getModuleDepCollector ( ) const

Definition at line 145 of file CompilerInstance.cpp.

◆ getModuleManager()

IntrusiveRefCntPtr< ASTReader > CompilerInstance::getModuleManager ( ) const

◆ getPCHContainerOperations()

std::shared_ptr<PCHContainerOperations> clang::CompilerInstance::getPCHContainerOperations ( ) const
inline

◆ getPCHContainerReader()

const PCHContainerReader& clang::CompilerInstance::getPCHContainerReader ( ) const
inline

◆ getPCHContainerWriter()

const PCHContainerWriter& clang::CompilerInstance::getPCHContainerWriter ( ) const
inline

Return the appropriate PCHContainerWriter depending on the current CodeGenOptions.

Definition at line 531 of file CompilerInstance.h.

◆ getPCMCache()

MemoryBufferCache& clang::CompilerInstance::getPCMCache ( ) const
inline

Definition at line 805 of file CompilerInstance.h.

Referenced by CompilerInstance(), and createPreprocessor().

◆ getPreprocessor()

Preprocessor& clang::CompilerInstance::getPreprocessor ( ) const
inline

◆ getPreprocessorOpts() [1/2]

PreprocessorOptions& clang::CompilerInstance::getPreprocessorOpts ( )
inline

◆ getPreprocessorOpts() [2/2]

const PreprocessorOptions& clang::CompilerInstance::getPreprocessorOpts ( ) const
inline

Definition at line 316 of file CompilerInstance.h.

◆ getPreprocessorOutputOpts() [1/2]

PreprocessorOutputOptions& clang::CompilerInstance::getPreprocessorOutputOpts ( )
inline

◆ getPreprocessorOutputOpts() [2/2]

const PreprocessorOutputOptions& clang::CompilerInstance::getPreprocessorOutputOpts ( ) const
inline

Definition at line 323 of file CompilerInstance.h.

◆ getPreprocessorPtr()

std::shared_ptr<Preprocessor> clang::CompilerInstance::getPreprocessorPtr ( )
inline

◆ getSema()

Sema& clang::CompilerInstance::getSema ( ) const
inline

◆ getSourceManager()

SourceManager& clang::CompilerInstance::getSourceManager ( ) const
inline

◆ getSpecificModuleCachePath()

std::string CompilerInstance::getSpecificModuleCachePath ( )

◆ getTarget()

TargetInfo& clang::CompilerInstance::getTarget ( ) const
inline

◆ getTargetOpts() [1/2]

TargetOptions& clang::CompilerInstance::getTargetOpts ( )
inline

◆ getTargetOpts() [2/2]

const TargetOptions& clang::CompilerInstance::getTargetOpts ( ) const
inline

Definition at line 330 of file CompilerInstance.h.

◆ getVirtualFileSystem()

vfs::FileSystem& clang::CompilerInstance::getVirtualFileSystem ( ) const
inline

Definition at line 384 of file CompilerInstance.h.

Referenced by clang::ento::ModelInjector::getBody().

◆ hadModuleLoaderFatalFailure()

bool clang::CompilerInstance::hadModuleLoaderFatalFailure ( ) const
inline

Definition at line 791 of file CompilerInstance.h.

Referenced by makeStandaloneDiagnostic().

◆ hasASTConsumer()

bool clang::CompilerInstance::hasASTConsumer ( ) const
inline

Definition at line 486 of file CompilerInstance.h.

Referenced by createModuleManager().

◆ hasASTContext()

bool clang::CompilerInstance::hasASTContext ( ) const
inline

Definition at line 463 of file CompilerInstance.h.

Referenced by createModuleManager(), and makeStandaloneDiagnostic().

◆ hasCodeCompletionConsumer()

bool clang::CompilerInstance::hasCodeCompletionConsumer ( ) const
inline

Definition at line 561 of file CompilerInstance.h.

Referenced by clang::ASTFrontendAction::ExecuteAction().

◆ hasDiagnostics()

bool clang::CompilerInstance::hasDiagnostics ( ) const
inline

◆ hasFileManager()

bool clang::CompilerInstance::hasFileManager ( ) const
inline

Definition at line 402 of file CompilerInstance.h.

Referenced by clang::FrontendAction::Execute(), and loadGlobalModuleIndex().

◆ hasFrontendTimer()

bool clang::CompilerInstance::hasFrontendTimer ( ) const
inline

Definition at line 577 of file CompilerInstance.h.

Referenced by clang::FrontendAction::Execute().

◆ hasInvocation()

bool clang::CompilerInstance::hasInvocation ( ) const
inline

Definition at line 234 of file CompilerInstance.h.

Referenced by makeStandaloneDiagnostic().

◆ hasPreprocessor()

bool clang::CompilerInstance::hasPreprocessor ( ) const
inline

◆ hasSema()

bool clang::CompilerInstance::hasSema ( ) const
inline

◆ hasSourceManager()

bool clang::CompilerInstance::hasSourceManager ( ) const
inline

Definition at line 422 of file CompilerInstance.h.

◆ hasTarget()

bool clang::CompilerInstance::hasTarget ( ) const
inline

Definition at line 359 of file CompilerInstance.h.

Referenced by ExecuteAction(), and makeStandaloneDiagnostic().

◆ hasVirtualFileSystem()

bool clang::CompilerInstance::hasVirtualFileSystem ( ) const
inline

Definition at line 382 of file CompilerInstance.h.

Referenced by createFileManager().

◆ InitializeSourceManager() [1/2]

bool CompilerInstance::InitializeSourceManager ( const FrontendInputFile Input)

InitializeSourceManager - Initialize the source manager to set InputFile as the main file.

Returns
True on success.

Definition at line 827 of file CompilerInstance.cpp.

◆ InitializeSourceManager() [2/2]

bool CompilerInstance::InitializeSourceManager ( const FrontendInputFile Input,
DiagnosticsEngine Diags,
FileManager FileMgr,
SourceManager SourceMgr,
HeaderSearch HS,
DependencyOutputOptions DepOpts,
const FrontendOptions Opts 
)
static

InitializeSourceManager - Initialize the source manager to set InputFile as the main file.

Returns
True on success.

Definition at line 835 of file CompilerInstance.cpp.

◆ loadGlobalModuleIndex()

GlobalModuleIndex * CompilerInstance::loadGlobalModuleIndex ( SourceLocation  TriggerLoc)
overridevirtual

Load, create, or return global module.

This function returns an existing global module index, if one had already been loaded or created, or loads one if it exists, or creates one if it doesn't exist. Also, importantly, if the index doesn't cover all the modules in the module map, it will be update to do so here, because of its use in searching for needed module imports and associated fixit messages.

Parameters
TriggerLocThe location for what triggered the load.
Returns
Returns null if load failed.

Implements clang::ModuleLoader.

Definition at line 2015 of file CompilerInstance.cpp.

References clang::ModuleLoader::buildingModule(), createModuleManager(), getFileManager(), clang::Preprocessor::getHeaderSearchInfo(), clang::HeaderSearch::getModuleMap(), getPCHContainerReader(), getPreprocessor(), hasFileManager(), hasPreprocessor(), shouldBuildGlobalModuleIndex(), and clang::GlobalModuleIndex::writeIndex().

◆ loadModule()

ModuleLoadResult CompilerInstance::loadModule ( SourceLocation  ImportLoc,
ModuleIdPath  Path,
Module::NameVisibilityKind  Visibility,
bool  IsInclusionDirective 
)
overridevirtual

Attempt to load the given module.

This routine attempts to load the module described by the given parameters.

Parameters
ImportLocThe location of the 'import' keyword.
PathThe identifiers (and their locations) of the module "path", e.g., "std.vector" would be split into "std" and "vector".
VisibilityThe visibility provided for the names in the loaded module.
IsInclusionDirectiveIndicates that this module is being loaded implicitly, due to the presence of an inclusion directive. Otherwise, it is being loaded due to an import declaration.
Returns
If successful, returns the loaded module. Otherwise, returns NULL to indicate that the module could not be loaded.

FIXME: perhaps we should (a) look for a module using the module name

Implements clang::ModuleLoader.

Definition at line 1613 of file CompilerInstance.cpp.

References clang::ASTReader::ARR_ConfigurationMismatch, clang::ASTReader::ARR_Missing, clang::ASTReader::ARR_OutOfDate, compileAndLoadModule(), clang::ModuleLoadResult::ConfigMismatch, clang::ASTReader::ConfigurationMismatch, createModuleManager(), clang::LangOptions::CurrentModule, clang::PreprocessorOptions::FailedModules, clang::ASTReader::Failure, clang::Module::getASTFile(), getDiagnostics(), getLangOpts(), clang::SourceManager::getModuleBuildStack(), getPreprocessorOpts(), getSourceManager(), clang::ASTReader::HadErrors, clang::ModuleLoader::HadFatalFailure, clang::Module::HasIncompatibleModuleFile, clang::SourceLocation::isValid(), clang::ASTReader::Missing, clang::serialization::MK_ExplicitModule, clang::serialization::MK_ImplicitModule, clang::serialization::MK_PrebuiltModule, clang::ASTReader::OutOfDate, clang::HeaderSearchOptions::PrebuiltModuleFiles, clang::HeaderSearchOptions::PrebuiltModulePaths, clang::DiagnosticsEngine::Report(), clang::ASTReader::Success, and clang::ASTReader::VersionMismatch.

◆ loadModuleFile()

bool CompilerInstance::loadModuleFile ( StringRef  FileName)

Definition at line 1523 of file CompilerInstance.cpp.

◆ loadModuleFromSource()

void CompilerInstance::loadModuleFromSource ( SourceLocation  Loc,
StringRef  ModuleName,
StringRef  Source 
)
overridevirtual

Attempt to load the given module from the specified source buffer.

Does not make any submodule visible; for that, use loadModule or makeModuleVisible.

Parameters
LocThe location at which the module was loaded.
ModuleNameThe name of the module to build.
SourceThe source of the module: a (preprocessed) module map.

Implements clang::ModuleLoader.

Definition at line 1951 of file CompilerInstance.cpp.

References clang::C, getDiagnostics(), clang::isAlphanumeric(), and clang::DiagnosticsEngine::Report().

◆ lookupMissingImports()

bool CompilerInstance::lookupMissingImports ( StringRef  Name,
SourceLocation  TriggerLoc 
)
overridevirtual

Check global module index for missing imports.

Parameters
NameThe symbol name to look for.
TriggerLocThe location for what triggered the load.
Returns
Returns true if any modules with that symbol found.

Implements clang::ModuleLoader.

Definition at line 2074 of file CompilerInstance.cpp.

◆ makeModuleVisible()

void CompilerInstance::makeModuleVisible ( Module Mod,
Module::NameVisibilityKind  Visibility,
SourceLocation  ImportLoc 
)
overridevirtual

Make the given module visible.

Implements clang::ModuleLoader.

Definition at line 2004 of file CompilerInstance.cpp.

References createModuleManager().

◆ resetAndLeakASTContext()

void clang::CompilerInstance::resetAndLeakASTContext ( )
inline

Definition at line 470 of file CompilerInstance.h.

References clang::BuryPointer().

Referenced by clang::FrontendAction::EndSourceFile().

◆ resetAndLeakFileManager()

void clang::CompilerInstance::resetAndLeakFileManager ( )
inline

Definition at line 410 of file CompilerInstance.h.

References clang::BuryPointer().

Referenced by clang::FrontendAction::EndSourceFile().

◆ resetAndLeakPreprocessor()

void clang::CompilerInstance::resetAndLeakPreprocessor ( )
inline

Definition at line 452 of file CompilerInstance.h.

References clang::BuryPointer().

Referenced by clang::FrontendAction::EndSourceFile().

◆ resetAndLeakSema()

void CompilerInstance::resetAndLeakSema ( )

Definition at line 2097 of file CompilerInstance.cpp.

References clang::BuryPointer(), and takeSema().

Referenced by clang::FrontendAction::EndSourceFile().

◆ resetAndLeakSourceManager()

void clang::CompilerInstance::resetAndLeakSourceManager ( )
inline

Definition at line 430 of file CompilerInstance.h.

References clang::BuryPointer().

Referenced by clang::FrontendAction::EndSourceFile().

◆ setASTConsumer()

void CompilerInstance::setASTConsumer ( std::unique_ptr< ASTConsumer Value)

setASTConsumer - Replace the current AST consumer; the compiler instance takes ownership of Value.

Definition at line 120 of file CompilerInstance.cpp.

References getASTConsumer(), getASTContext(), and clang::ASTConsumer::Initialize().

Referenced by clang::FrontendAction::EndSourceFile().

◆ setASTContext()

void CompilerInstance::setASTContext ( ASTContext Value)

setASTContext - Replace the current AST context.

Definition at line 109 of file CompilerInstance.cpp.

References getASTConsumer(), getASTContext(), and clang::ASTConsumer::Initialize().

Referenced by createASTContext(), and clang::FrontendAction::EndSourceFile().

◆ setAuxTarget()

void CompilerInstance::setAuxTarget ( TargetInfo Value)

Replace the current AuxTarget.

Definition at line 91 of file CompilerInstance.cpp.

Referenced by ExecuteAction().

◆ setBuildGlobalModuleIndex()

void clang::CompilerInstance::setBuildGlobalModuleIndex ( bool  Build)
inline

Set the flag indicating whether we should (re)build the global module index.

Definition at line 249 of file CompilerInstance.h.

Referenced by compileModuleImpl().

◆ setCodeCompletionConsumer()

void CompilerInstance::setCodeCompletionConsumer ( CodeCompleteConsumer Value)

setCodeCompletionConsumer - Replace the current code completion consumer; the compiler instance takes ownership of Value.

Definition at line 127 of file CompilerInstance.cpp.

Referenced by createCodeCompletionConsumer().

◆ setDiagnostics()

void CompilerInstance::setDiagnostics ( DiagnosticsEngine Value)

setDiagnostics - Replace the current diagnostics engine.

Definition at line 86 of file CompilerInstance.cpp.

◆ setExternalSemaSource()

void CompilerInstance::setExternalSemaSource ( IntrusiveRefCntPtr< ExternalSemaSource ESS)

Definition at line 2099 of file CompilerInstance.cpp.

◆ setFileManager()

void CompilerInstance::setFileManager ( FileManager Value)

◆ setInvocation()

void CompilerInstance::setInvocation ( std::shared_ptr< CompilerInvocation Value)

◆ setModuleDepCollector()

void CompilerInstance::setModuleDepCollector ( std::shared_ptr< ModuleDependencyCollector Collector)

Definition at line 149 of file CompilerInstance.cpp.

◆ setModuleManager()

void CompilerInstance::setModuleManager ( IntrusiveRefCntPtr< ASTReader Reader)

Definition at line 138 of file CompilerInstance.cpp.

◆ setPreprocessor()

void CompilerInstance::setPreprocessor ( std::shared_ptr< Preprocessor Value)

Replace the current preprocessor.

Definition at line 105 of file CompilerInstance.cpp.

Referenced by clang::FrontendAction::EndSourceFile().

◆ setSema()

void CompilerInstance::setSema ( Sema S)

Replace the current Sema; the compiler instance takes ownership of S.

Definition at line 116 of file CompilerInstance.cpp.

Referenced by clang::FrontendAction::EndSourceFile().

◆ setSourceManager()

void CompilerInstance::setSourceManager ( SourceManager Value)

setSourceManager - Replace the current source manager.

Definition at line 101 of file CompilerInstance.cpp.

Referenced by clang::FixItRecompile::BeginInvocation(), clang::FrontendAction::EndSourceFile(), and makeStandaloneDiagnostic().

◆ setTarget()

void CompilerInstance::setTarget ( TargetInfo Value)

Replace the current Target.

Definition at line 90 of file CompilerInstance.cpp.

Referenced by ExecuteAction().

◆ setVirtualFileSystem()

void clang::CompilerInstance::setVirtualFileSystem ( IntrusiveRefCntPtr< vfs::FileSystem FS)
inline

Replace the current virtual file system.

Note
Most clients should use setFileManager, which will implicitly reset the virtual file system to the one contained in the file manager.

Definition at line 394 of file CompilerInstance.h.

Referenced by createFileManager().

◆ shouldBuildGlobalModuleIndex()

bool CompilerInstance::shouldBuildGlobalModuleIndex ( ) const

Indicates whether we should (re)build the global module index.

Definition at line 79 of file CompilerInstance.cpp.

References clang::FrontendOptions::GenerateGlobalModuleIndex, and getFrontendOpts().

Referenced by clang::FrontendAction::Execute(), and loadGlobalModuleIndex().

◆ takeASTConsumer()

std::unique_ptr<ASTConsumer> clang::CompilerInstance::takeASTConsumer ( )
inline

takeASTConsumer - Remove the current AST consumer and give ownership to the caller.

Definition at line 495 of file CompilerInstance.h.

Referenced by clang::FrontendAction::EndSourceFile(), and makeStandaloneDiagnostic().

◆ takeSema()

std::unique_ptr< Sema > CompilerInstance::takeSema ( )

Definition at line 131 of file CompilerInstance.cpp.

Referenced by makeStandaloneDiagnostic(), and resetAndLeakSema().


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