clang: clang::FrontendAction Class Reference (original) (raw)
Abstract base class for actions which can be performed by the frontend. More...
#include "[clang/Frontend/FrontendAction.h](FrontendAction%5F8h%5Fsource.html)"
Public Member Functions | |
---|---|
FrontendAction () | |
virtual | ~FrontendAction () |
Compiler Instance Access | |
CompilerInstance & | getCompilerInstance () const |
void | setCompilerInstance (CompilerInstance *Value) |
Current File Information | |
bool | isCurrentFileAST () const |
const FrontendInputFile & | getCurrentInput () const |
StringRef | getCurrentFile () const |
StringRef | getCurrentFileOrBufferName () const |
InputKind | getCurrentFileKind () const |
ASTUnit & | getCurrentASTUnit () const |
Module * | getCurrentModule () const |
std::unique_ptr< ASTUnit > | takeCurrentASTUnit () |
void | setCurrentInput (const FrontendInputFile &CurrentInput, std::unique_ptr< ASTUnit > AST=nullptr) |
Supported Modes | |
virtual bool | isModelParsingAction () const |
Is this action invoked on a model file? | |
virtual bool | usesPreprocessorOnly () const =0 |
Does this action only use the preprocessor? | |
virtual TranslationUnitKind | getTranslationUnitKind () |
For AST-based actions, the kind of translation unit we're handling. | |
virtual bool | hasPCHSupport () const |
Does this action support use with PCH? | |
virtual bool | hasASTFileSupport () const |
Does this action support use with AST files? | |
virtual bool | hasIRSupport () const |
Does this action support use with IR files? | |
virtual bool | hasCodeCompletionSupport () const |
Does this action support use with code completion? | |
Public Action Interface | |
bool | PrepareToExecute (CompilerInstance &CI) |
Prepare the action to execute on the given compiler instance. | |
bool | BeginSourceFile (CompilerInstance &CI, const FrontendInputFile &Input) |
Prepare the action for processing the input file Input. | |
llvm::Error | Execute () |
Set the source manager's main input file, and run the action. | |
virtual void | EndSourceFile () |
Perform any per-file post processing, deallocate per-file objects, and run statistics and output file cleanup code. | |
Protected Member Functions | |
---|---|
Implementation Action Interface | |
virtual bool | PrepareToExecuteAction (CompilerInstance &CI) |
Prepare to execute the action on the given CompilerInstance. | |
virtual std::unique_ptr< ASTConsumer > | CreateASTConsumer (CompilerInstance &CI, StringRef InFile)=0 |
Create the AST consumer object for this action, if supported. | |
virtual bool | BeginInvocation (CompilerInstance &CI) |
Callback before starting processing a single input, giving the opportunity to modify the CompilerInvocation or do some other action before BeginSourceFileAction is called. | |
virtual bool | BeginSourceFileAction (CompilerInstance &CI) |
Callback at the start of processing a single input. | |
virtual void | ExecuteAction ()=0 |
Callback to run the program action, using the initialized compiler instance. | |
virtual void | EndSourceFileAction () |
Callback at the end of processing a single input. | |
virtual bool | shouldEraseOutputFiles () |
Callback at the end of processing a single input, to determine if the output files should be erased or not. | |
Abstract base class for actions which can be performed by the frontend.
Definition at line 37 of file FrontendAction.h.
FrontendAction::FrontendAction | ( | ) |
---|
◆ ~FrontendAction()
FrontendAction::~FrontendAction ( ) | virtual |
---|
◆ BeginInvocation()
◆ BeginSourceFile()
Prepare the action for processing the input file Input
.
This is run after the options and frontend have been initialized, but prior to executing any per-file processing.
Parameters
CI | - The compiler instance this action is being run from. The action may store and use this object up until the matching EndSourceFile action. |
---|---|
Input | - The input filename and kind. Some input kinds are handled specially, for example AST inputs, since the AST file itself contains several objects which would normally be owned by the CompilerInstance. When processing AST input files, these objects should generally not be initialized in the CompilerInstance – they will automatically be shared with the AST file in between BeginSourceFile() and EndSourceFile(). |
Returns
True on success; on failure the compilation of this file should be aborted and neither Execute() nor EndSourceFile() should be called.
Definition at line 585 of file FrontendAction.cpp.
References clang::PreprocessorOptions::AllowPCHWithCompilerErrors, BeginInvocation(), clang::DiagnosticConsumer::BeginSourceFile(), BeginSourceFileAction(), clang::SrcMgr::C_System, clang::SrcMgr::C_User, clang::PreprocessorOptions::ChainedIncludes, clang::CompilerInstance::clearOutputFiles(), clang::LangOptionsBase::CMK_ModuleMap, clang::LangOptionsBase::CMK_None, clang::CompilerInstance::createASTContext(), clang::CompilerInstance::createASTReader(), clang::createChainedIncludesSource(), clang::SourceManager::createFileID(), clang::CompilerInstance::createFileManager(), clang::CompilerInstance::createPCHExternalASTSource(), clang::CompilerInstance::createPreprocessor(), clang::CompilerInstance::createSourceManager(), clang::LangOptions::CurrentModule, clang::PreprocessorOptions::DeserializedPCHDeclsToErrorOn, clang::PreprocessorOptions::DisablePCHOrModuleValidation, clang::PreprocessorOptions::DumpDeserializedPCHDecls, clang::DiagnosticConsumer::EndSourceFile(), clang::File, clang::FileName, Filename, clang::ModuleMap::finishModuleDeclarationScope(), clang::Found, clang::CompilerInstance::getASTContext(), clang::CompilerInstance::getASTReader(), clang::Preprocessor::getBuiltinInfo(), getCurrentFileOrBufferName(), clang::Preprocessor::getCurrentModuleImplementation(), clang::CompilerInstance::getDiagnosticClient(), clang::CompilerInstance::getDiagnosticOpts(), clang::CompilerInstance::getDiagnostics(), clang::ASTContext::getExternalSource(), clang::FrontendInputFile::getFile(), clang::CompilerInstance::getFileManager(), clang::CompilerInstance::getFileSystemOpts(), clang::InputKind::getFormat(), clang::CompilerInstance::getFrontendOpts(), clang::Preprocessor::getHeaderSearchInfo(), clang::CompilerInstance::getHeaderSearchOpts(), clang::CompilerInstance::getHeaderSearchOptsPtr(), clang::InputKind::getHeaderUnitKind(), clang::Preprocessor::getIdentifierTable(), getInputBufferForModule(), clang::FrontendInputFile::getKind(), clang::CompilerInstance::getLangOpts(), clang::Preprocessor::getLangOpts(), clang::CompilerInstance::getLangOptsPtr(), clang::InputKind::getLanguage(), clang::CompilerInstance::getModuleCache(), clang::ASTReader::getModuleManager(), clang::HeaderSearch::getModuleMap(), clang::FileEntryRef::getName(), clang::FileManager::getOptionalDirectoryRef(), clang::FileManager::getOptionalFileRef(), clang::CompilerInstance::getPCHContainerReader(), clang::CompilerInstance::getPreprocessor(), clang::CompilerInstance::getPreprocessorOpts(), clang::serialization::ModuleManager::getPrimaryModule(), clang::CompilerInstance::getSourceManager(), clang::CompilerInstance::getSpecificModuleCachePath(), clang::CompilerInstance::getTargetOpts(), getTranslationUnitKind(), clang::FileManager::getVirtualFileSystem(), clang::CompilerInstance::hasASTConsumer(), clang::CompilerInstance::hasASTContext(), hasASTFileSupport(), clang::CompilerInstance::hasFileManager(), hasIRSupport(), hasPCHSupport(), clang::CompilerInstance::hasPreprocessor(), clang::CompilerInstance::hasSourceManager(), clang::InputKind::HeaderUnit_Abs, clang::InputKind::HeaderUnit_System, clang::PreprocessorOptions::ImplicitPCHInclude, clang::Builtin::Context::initializeBuiltins(), clang::SourceManager::initializeForReplay(), clang::CompilerInstance::InitializeSourceManager(), clang::ASTReader::isAcceptableASTFile(), clang::FrontendInputFile::isEmpty(), clang::InputKind::isHeaderUnit(), isModelParsingAction(), clang::InputKind::isPreprocessed(), clang::FrontendInputFile::isPreprocessed(), clang::FrontendInputFile::isSystem(), clang::LLVM_IR, clang::ASTUnit::LoadEverything, clang::ASTUnit::LoadFromASTFile(), clang::CompilerInstance::loadModuleFile(), clang::HeaderSearch::loadModuleMapFile(), loadModuleMapForModuleBuild(), clang::ASTUnit::LoadPreprocessorOnly, clang::HeaderSearch::LookupFile(), clang::FrontendOptions::ModuleFiles, clang::InputKind::ModuleMap, clang::FrontendOptions::ModuleMapFiles, clang::LangOptions::ModuleName, clang::FrontendOptions::ModulesEmbedAllFiles, clang::FrontendOptions::ModulesEmbedFiles, clang::FrontendOptions::OverrideRecordLayoutsFile, clang::InputKind::Precompiled, prepareToBuildModule(), clang::Module::PresumedModuleMapFile, ReadOriginalFileName(), clang::DiagnosticsEngine::Report(), clang::DiagnosticOptions::SARIF, clang::SourceManager::setAllFilesAreTransient(), clang::CompilerInstance::setASTConsumer(), clang::CompilerInstance::setASTContext(), clang::ASTContext::setASTMutationListener(), clang::CompilerInstance::setASTReader(), setCompilerInstance(), setCurrentInput(), clang::ASTContext::setExternalSource(), clang::SourceManager::setFileIsTransient(), clang::CompilerInstance::setFileManager(), clang::CompilerInstance::setPreprocessor(), clang::Preprocessor::setSkipMainFilePreamble(), clang::CompilerInstance::setSourceManager(), clang::serialization::ModuleFile::StandardCXXModule, usesPreprocessorOnly(), clang::ASTReader::visitTopLevelModuleMaps(), and clang::InputKind::withHeaderUnit().
Referenced by clang::CompilerInstance::ExecuteAction(), and clang::ASTUnit::LoadFromCompilerInvocationAction().
◆ BeginSourceFileAction()
virtual bool clang::FrontendAction::BeginSourceFileAction ( CompilerInstance & CI) | inlineprotectedvirtual |
---|
◆ CreateASTConsumer()
virtual std::unique_ptr< ASTConsumer > clang::FrontendAction::CreateASTConsumer ( CompilerInstance & CI, StringRef InFile ) | protectedpure virtual |
---|
Create the AST consumer object for this action, if supported.
This routine is called as part of BeginSourceFile(), which will fail if the AST consumer cannot be created. This will not be called if the action has indicated that it only uses the preprocessor.
Parameters
Returns
The new AST consumer, or null on failure.
Implemented in clang::PrintPreambleAction, clang::PrintDependencyDirectivesSourceMinimizerAction, clang::arcmt::MigrateSourceAction, clang::arcmt::ObjCMigrateAction, clang::CodeGenAction, clang::ExtractAPIAction, clang::WrappingExtractAPIAction, clang::PreprocessorFrontendAction, clang::WrapperFrontendAction, clang::ASTPrintAction, clang::ASTDumpAction, clang::ASTDeclListAction, clang::ASTViewAction, clang::GeneratePCHAction, clang::GenerateModuleAction, clang::GenerateInterfaceStubsAction, clang::GenerateModuleInterfaceAction, clang::SyntaxOnlyAction, clang::DumpModuleInfoAction, clang::VerifyPCHAction, clang::TemplightDumpAction, clang::ASTMergeAction, clang::installapi::InstallAPIAction, clang::HTMLPrintAction, clang::FixItAction, clang::RewriteObjCAction, clang::ento::AnalysisAction, clang::ento::ParseModelFileAction, clang::IncrementalAction, and clang::PluginASTAction.
◆ EndSourceFile()
void FrontendAction::EndSourceFile ( ) | virtual |
---|
Perform any per-file post processing, deallocate per-file objects, and run statistics and output file cleanup code.
Reimplemented in clang::WrapperFrontendAction, and clang::IncrementalAction.
Definition at line 1094 of file FrontendAction.cpp.
References clang::CompilerInstance::clearOutputFiles(), clang::LangOptionsBase::CMK_None, clang::FrontendOptions::DisableFree, clang::DiagnosticConsumer::EndSourceFile(), clang::Preprocessor::EndSourceFile(), EndSourceFileAction(), getCompilerInstance(), getCurrentFileOrBufferName(), clang::CompilerInstance::getDiagnosticClient(), clang::CompilerInstance::getFrontendOpts(), clang::Preprocessor::getHeaderSearchInfo(), clang::Preprocessor::getIdentifierTable(), clang::CompilerInstance::getLangOpts(), clang::CompilerInstance::getPreprocessor(), clang::CompilerInstance::getSourceManager(), clang::CompilerInstance::hasPreprocessor(), isCurrentFileAST(), clang::HeaderSearch::PrintStats(), clang::Preprocessor::PrintStats(), clang::IdentifierTable::PrintStats(), clang::SourceManager::PrintStats(), clang::CompilerInstance::resetAndLeakASTContext(), clang::CompilerInstance::resetAndLeakFileManager(), clang::CompilerInstance::resetAndLeakPreprocessor(), clang::CompilerInstance::resetAndLeakSema(), clang::CompilerInstance::resetAndLeakSourceManager(), clang::CompilerInstance::setASTConsumer(), clang::CompilerInstance::setASTContext(), setCompilerInstance(), setCurrentInput(), clang::CompilerInstance::setFileManager(), clang::CompilerInstance::setPreprocessor(), clang::CompilerInstance::setSema(), clang::CompilerInstance::setSourceManager(), shouldEraseOutputFiles(), clang::FrontendOptions::ShowStats, and clang::CompilerInstance::takeASTConsumer().
Referenced by clang::CompilerInstance::ExecuteAction(), and clang::ASTUnit::LoadFromCompilerInvocationAction().
◆ EndSourceFileAction()
virtual void clang::FrontendAction::EndSourceFileAction ( ) | inlineprotectedvirtual |
---|
◆ Execute()
llvm::Error FrontendAction::Execute | ( | ) |
---|
Set the source manager's main input file, and run the action.
Definition at line 1070 of file FrontendAction.cpp.
References ExecuteAction(), getCompilerInstance(), clang::CompilerInstance::getFileManager(), clang::Preprocessor::getHeaderSearchInfo(), clang::HeaderSearch::getModuleCachePath(), clang::CompilerInstance::getPCHContainerReader(), clang::CompilerInstance::getPreprocessor(), clang::CompilerInstance::hasFileManager(), clang::CompilerInstance::hasPreprocessor(), clang::CompilerInstance::shouldBuildGlobalModuleIndex(), and clang::GlobalModuleIndex::writeIndex().
Referenced by clang::CompilerInstance::ExecuteAction(), and clang::ASTUnit::LoadFromCompilerInvocationAction().
◆ ExecuteAction()
virtual void clang::FrontendAction::ExecuteAction ( ) | protectedpure virtual |
---|
Callback to run the program action, using the initialized compiler instance.
This is guaranteed to only be called between BeginSourceFileAction() and EndSourceFileAction().
Implemented in clang::CodeGenAction, clang::ASTFrontendAction, clang::WrapperFrontendAction, clang::DumpModuleInfoAction, clang::VerifyPCHAction, clang::TemplightDumpAction, clang::ASTMergeAction, clang::PrintPreambleAction, clang::PrintDependencyDirectivesSourceMinimizerAction, clang::DumpRawTokensAction, clang::DumpTokensAction, clang::PreprocessOnlyAction, clang::PrintPreprocessedAction, clang::RewriteMacrosAction, clang::RewriteTestAction, clang::RewriteIncludesAction, clang::IncrementalSyntaxOnlyAction, and clang::IncrementalAction.
Referenced by Execute(), and clang::IncrementalSyntaxOnlyAction::ExecuteAction().
◆ getCompilerInstance()
Definition at line 120 of file FrontendAction.h.
Referenced by clang::FixItAction::BeginSourceFileAction(), EndSourceFile(), clang::CodeGenAction::EndSourceFileAction(), Execute(), clang::CodeGenAction::ExecuteAction(), clang::ASTFrontendAction::ExecuteAction(), clang::DumpModuleInfoAction::ExecuteAction(), clang::VerifyPCHAction::ExecuteAction(), clang::TemplightDumpAction::ExecuteAction(), clang::ASTMergeAction::ExecuteAction(), clang::PrintPreambleAction::ExecuteAction(), clang::PrintDependencyDirectivesSourceMinimizerAction::ExecuteAction(), clang::DumpRawTokensAction::ExecuteAction(), clang::DumpTokensAction::ExecuteAction(), clang::PreprocessOnlyAction::ExecuteAction(), clang::PrintPreprocessedAction::ExecuteAction(), clang::RewriteMacrosAction::ExecuteAction(), clang::RewriteTestAction::ExecuteAction(), clang::RewriteIncludesAction::ExecuteAction(), clang::IncrementalSyntaxOnlyAction::ExecuteAction(), clang::IncrementalAction::ExecuteAction(), getCurrentModule(), shouldEraseOutputFiles(), clang::GeneratePCHAction::shouldEraseOutputFiles(), and clang::GenerateModuleAction::shouldEraseOutputFiles().
◆ getCurrentASTUnit()
ASTUnit & clang::FrontendAction::getCurrentASTUnit ( ) const | inline |
---|
◆ getCurrentFile()
StringRef clang::FrontendAction::getCurrentFile ( ) const | inline |
---|
◆ getCurrentFileKind()
InputKind clang::FrontendAction::getCurrentFileKind ( ) const | inline |
---|
◆ getCurrentFileOrBufferName()
StringRef clang::FrontendAction::getCurrentFileOrBufferName ( ) const | inline |
---|
◆ getCurrentInput()
◆ getCurrentModule()
Module * FrontendAction::getCurrentModule | ( | ) | const |
---|
◆ getTranslationUnitKind()
◆ hasASTFileSupport()
virtual bool clang::FrontendAction::hasASTFileSupport ( ) const | inlinevirtual |
---|
◆ hasCodeCompletionSupport()
virtual bool clang::FrontendAction::hasCodeCompletionSupport ( ) const | inlinevirtual |
---|
◆ hasIRSupport()
virtual bool clang::FrontendAction::hasIRSupport ( ) const | inlinevirtual |
---|
◆ hasPCHSupport()
virtual bool clang::FrontendAction::hasPCHSupport ( ) const | inlinevirtual |
---|
◆ isCurrentFileAST()
bool clang::FrontendAction::isCurrentFileAST ( ) const | inline |
---|
◆ isModelParsingAction()
virtual bool clang::FrontendAction::isModelParsingAction ( ) const | inlinevirtual |
---|
◆ PrepareToExecute()
◆ PrepareToExecuteAction()
virtual bool clang::FrontendAction::PrepareToExecuteAction ( CompilerInstance & CI) | inlineprotectedvirtual |
---|
◆ setCompilerInstance()
void clang::FrontendAction::setCompilerInstance ( CompilerInstance * Value) | inline |
---|
◆ setCurrentInput()
void FrontendAction::setCurrentInput | ( | const FrontendInputFile & | CurrentInput, |
---|---|---|---|
std::unique_ptr< ASTUnit > | AST = nullptr | ||
) |
◆ shouldEraseOutputFiles()
bool FrontendAction::shouldEraseOutputFiles ( ) | protectedvirtual |
---|
◆ takeCurrentASTUnit()
std::unique_ptr< ASTUnit > clang::FrontendAction::takeCurrentASTUnit ( ) | inline |
---|
◆ usesPreprocessorOnly()
virtual bool clang::FrontendAction::usesPreprocessorOnly ( ) const | pure virtual |
---|
◆ ASTMergeAction
◆ WrapperFrontendAction
The documentation for this class was generated from the following files:
- include/clang/Frontend/FrontendAction.h
- lib/Frontend/FrontendAction.cpp