clang 20.0.0git
Public Member Functions | List of all members
clang::BackendConsumer Class Reference

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/BackendConsumer.h"

Inheritance diagram for clang::BackendConsumer:
Inheritance graph
[legend]

Public Member Functions

 BackendConsumer (BackendAction Action, DiagnosticsEngine &Diags, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS, const HeaderSearchOptions &HeaderSearchOpts, const PreprocessorOptions &PPOpts, const CodeGenOptions &CodeGenOpts, const TargetOptions &TargetOpts, const LangOptions &LangOpts, const std::string &InFile, SmallVector< LinkModule, 4 > LinkModules, std::unique_ptr< raw_pwrite_stream > OS, llvm::LLVMContext &C, CoverageSourceInfo *CoverageInfo=nullptr)
 
 BackendConsumer (BackendAction Action, DiagnosticsEngine &Diags, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS, const HeaderSearchOptions &HeaderSearchOpts, const PreprocessorOptions &PPOpts, const CodeGenOptions &CodeGenOpts, const TargetOptions &TargetOpts, const LangOptions &LangOpts, llvm::Module *Module, SmallVector< LinkModule, 4 > LinkModules, llvm::LLVMContext &C, CoverageSourceInfo *CoverageInfo=nullptr)
 
llvm::Module * getModule () const
 
std::unique_ptr< llvm::Module > takeModule ()
 
CodeGeneratorgetCodeGenerator ()
 
void HandleCXXStaticMemberVarInstantiation (VarDecl *VD) override
 HandleCXXStaticMemberVarInstantiation - Tell the consumer that this.
 
void Initialize (ASTContext &Ctx) override
 Initialize - This is called to initialize the consumer, providing the ASTContext.
 
bool HandleTopLevelDecl (DeclGroupRef D) override
 HandleTopLevelDecl - Handle the specified top-level declaration.
 
void HandleInlineFunctionDefinition (FunctionDecl *D) override
 This callback is invoked each time an inline (method or friend) function definition in a class is completed.
 
void HandleInterestingDecl (DeclGroupRef D) override
 HandleInterestingDecl - Handle the specified interesting declaration.
 
void HandleTranslationUnit (ASTContext &C) override
 HandleTranslationUnit - This method is called when the ASTs for entire translation unit have been parsed.
 
void HandleTagDeclDefinition (TagDecl *D) override
 HandleTagDeclDefinition - This callback is invoked each time a TagDecl (e.g.
 
void HandleTagDeclRequiredDefinition (const TagDecl *D) override
 This callback is invoked the first time each TagDecl is required to be complete.
 
void CompleteTentativeDefinition (VarDecl *D) override
 CompleteTentativeDefinition - Callback invoked at the end of a translation unit to notify the consumer that the given tentative definition should be completed.
 
void CompleteExternalDeclaration (DeclaratorDecl *D) override
 CompleteExternalDeclaration - Callback invoked at the end of a translation unit to notify the consumer that the given external declaration should be completed.
 
void AssignInheritanceModel (CXXRecordDecl *RD) override
 Callback invoked when an MSInheritanceAttr has been attached to a CXXRecordDecl.
 
void HandleVTable (CXXRecordDecl *RD) override
 Callback involved at the end of a translation unit to notify the consumer that a vtable for the given C++ class is required.
 
bool LinkInModules (llvm::Module *M)
 
const FullSourceLoc getBestLocationFromDebugLoc (const llvm::DiagnosticInfoWithLocationBase &D, bool &BadDebugInfo, StringRef &Filename, unsigned &Line, unsigned &Column) const
 Get the best possible source location to represent a diagnostic that may have associated debug info.
 
std::optional< FullSourceLocgetFunctionSourceLocation (const llvm::Function &F) const
 
void DiagnosticHandlerImpl (const llvm::DiagnosticInfo &DI)
 This function is invoked when the backend needs to report something to the user.
 
bool InlineAsmDiagHandler (const llvm::DiagnosticInfoInlineAsm &D)
 Specialized handler for InlineAsm diagnostic.
 
void SrcMgrDiagHandler (const llvm::DiagnosticInfoSrcMgr &D)
 Specialized handler for diagnostics reported using SMDiagnostic.
 
bool StackSizeDiagHandler (const llvm::DiagnosticInfoStackSize &D)
 Specialized handler for StackSize diagnostic.
 
bool ResourceLimitDiagHandler (const llvm::DiagnosticInfoResourceLimit &D)
 Specialized handler for ResourceLimit diagnostic.
 
void UnsupportedDiagHandler (const llvm::DiagnosticInfoUnsupported &D)
 Specialized handler for unsupported backend feature diagnostic.
 
void EmitOptimizationMessage (const llvm::DiagnosticInfoOptimizationBase &D, unsigned DiagID)
 Specialized handlers for optimization remarks.
 
void OptimizationRemarkHandler (const llvm::DiagnosticInfoOptimizationBase &D)
 
void OptimizationRemarkHandler (const llvm::OptimizationRemarkAnalysisFPCommute &D)
 
void OptimizationRemarkHandler (const llvm::OptimizationRemarkAnalysisAliasing &D)
 
void OptimizationFailureHandler (const llvm::DiagnosticInfoOptimizationFailure &D)
 
void DontCallDiagHandler (const llvm::DiagnosticInfoDontCall &D)
 
void MisExpectDiagHandler (const llvm::DiagnosticInfoMisExpect &D)
 Specialized handler for misexpect warnings.
 
- Public Member Functions inherited from clang::ASTConsumer
 ASTConsumer ()=default
 
virtual ~ASTConsumer ()
 
virtual void Initialize (ASTContext &Context)
 Initialize - This is called to initialize the consumer, providing the ASTContext.
 
virtual bool HandleTopLevelDecl (DeclGroupRef D)
 HandleTopLevelDecl - Handle the specified top-level declaration.
 
virtual void HandleInlineFunctionDefinition (FunctionDecl *D)
 This callback is invoked each time an inline (method or friend) function definition in a class is completed.
 
virtual void HandleInterestingDecl (DeclGroupRef D)
 HandleInterestingDecl - Handle the specified interesting declaration.
 
virtual void HandleTranslationUnit (ASTContext &Ctx)
 HandleTranslationUnit - This method is called when the ASTs for entire translation unit have been parsed.
 
virtual void HandleTagDeclDefinition (TagDecl *D)
 HandleTagDeclDefinition - This callback is invoked each time a TagDecl (e.g.
 
virtual void HandleTagDeclRequiredDefinition (const TagDecl *D)
 This callback is invoked the first time each TagDecl is required to be complete.
 
virtual void HandleCXXImplicitFunctionInstantiation (FunctionDecl *D)
 Invoked when a function is implicitly instantiated.
 
virtual void HandleTopLevelDeclInObjCContainer (DeclGroupRef D)
 Handle the specified top-level declaration that occurred inside and ObjC container.
 
virtual void HandleImplicitImportDecl (ImportDecl *D)
 Handle an ImportDecl that was implicitly created due to an inclusion directive.
 
virtual void CompleteTentativeDefinition (VarDecl *D)
 CompleteTentativeDefinition - Callback invoked at the end of a translation unit to notify the consumer that the given tentative definition should be completed.
 
virtual void CompleteExternalDeclaration (DeclaratorDecl *D)
 CompleteExternalDeclaration - Callback invoked at the end of a translation unit to notify the consumer that the given external declaration should be completed.
 
virtual void AssignInheritanceModel (CXXRecordDecl *RD)
 Callback invoked when an MSInheritanceAttr has been attached to a CXXRecordDecl.
 
virtual void HandleCXXStaticMemberVarInstantiation (VarDecl *D)
 HandleCXXStaticMemberVarInstantiation - Tell the consumer that this.
 
virtual void HandleVTable (CXXRecordDecl *RD)
 Callback involved at the end of a translation unit to notify the consumer that a vtable for the given C++ class is required.
 
virtual ASTMutationListenerGetASTMutationListener ()
 If the consumer is interested in entities getting modified after their initial creation, it should return a pointer to an ASTMutationListener here.
 
virtual ASTDeserializationListenerGetASTDeserializationListener ()
 If the consumer is interested in entities being deserialized from AST files, it should return a pointer to a ASTDeserializationListener here.
 
virtual void PrintStats ()
 PrintStats - If desired, print any statistics.
 
virtual bool shouldSkipFunctionBody (Decl *D)
 This callback is called for each function if the Parser was initialized with SkipFunctionBodies set to true.
 

Detailed Description

Definition at line 27 of file BackendConsumer.h.

Constructor & Destructor Documentation

◆ BackendConsumer() [1/2]

clang::BackendConsumer::BackendConsumer ( BackendAction  Action,
DiagnosticsEngine Diags,
IntrusiveRefCntPtr< llvm::vfs::FileSystem >  VFS,
const HeaderSearchOptions HeaderSearchOpts,
const PreprocessorOptions PPOpts,
const CodeGenOptions CodeGenOpts,
const TargetOptions TargetOpts,
const LangOptions LangOpts,
const std::string &  InFile,
SmallVector< LinkModule, 4 >  LinkModules,
std::unique_ptr< raw_pwrite_stream >  OS,
llvm::LLVMContext &  C,
CoverageSourceInfo CoverageInfo = nullptr 
)

◆ BackendConsumer() [2/2]

clang::BackendConsumer::BackendConsumer ( BackendAction  Action,
DiagnosticsEngine Diags,
IntrusiveRefCntPtr< llvm::vfs::FileSystem >  VFS,
const HeaderSearchOptions HeaderSearchOpts,
const PreprocessorOptions PPOpts,
const CodeGenOptions CodeGenOpts,
const TargetOptions TargetOpts,
const LangOptions LangOpts,
llvm::Module *  Module,
SmallVector< LinkModule, 4 >  LinkModules,
llvm::LLVMContext &  C,
CoverageSourceInfo CoverageInfo = nullptr 
)

Member Function Documentation

◆ AssignInheritanceModel()

void clang::BackendConsumer::AssignInheritanceModel ( CXXRecordDecl RD)
overridevirtual

Callback invoked when an MSInheritanceAttr has been attached to a CXXRecordDecl.

Reimplemented from clang::ASTConsumer.

Definition at line 380 of file CodeGenAction.cpp.

◆ CompleteExternalDeclaration()

void clang::BackendConsumer::CompleteExternalDeclaration ( DeclaratorDecl D)
overridevirtual

CompleteExternalDeclaration - Callback invoked at the end of a translation unit to notify the consumer that the given external declaration should be completed.

Reimplemented from clang::ASTConsumer.

Definition at line 376 of file CodeGenAction.cpp.

References D.

◆ CompleteTentativeDefinition()

void clang::BackendConsumer::CompleteTentativeDefinition ( VarDecl D)
overridevirtual

CompleteTentativeDefinition - Callback invoked at the end of a translation unit to notify the consumer that the given tentative definition should be completed.

The variable declaration itself will be a tentative definition. If it had an incomplete array type, its type will have already been changed to an array of size 1. However, the declaration remains a tentative definition and has not been modified by the introduction of an implicit zero initializer.

Reimplemented from clang::ASTConsumer.

Definition at line 372 of file CodeGenAction.cpp.

References D.

◆ DiagnosticHandlerImpl()

void BackendConsumer::DiagnosticHandlerImpl ( const llvm::DiagnosticInfo &  DI)

◆ DontCallDiagHandler()

void BackendConsumer::DontCallDiagHandler ( const llvm::DiagnosticInfoDontCall &  D)

◆ EmitOptimizationMessage()

void BackendConsumer::EmitOptimizationMessage ( const llvm::DiagnosticInfoOptimizationBase &  D,
unsigned  DiagID 
)

Specialized handlers for optimization remarks.

Note that these handlers only accept remarks and they always handle them.

Definition at line 665 of file CodeGenAction.cpp.

References clang::Column, D, Filename, getBestLocationFromDebugLoc(), clang::Line, Loc, clang::Decl::print(), and clang::DiagnosticsEngine::Report().

Referenced by OptimizationFailureHandler(), and OptimizationRemarkHandler().

◆ getBestLocationFromDebugLoc()

const FullSourceLoc BackendConsumer::getBestLocationFromDebugLoc ( const llvm::DiagnosticInfoWithLocationBase &  D,
bool BadDebugInfo,
StringRef &  Filename,
unsigned Line,
unsigned Column 
) const

◆ getCodeGenerator()

CodeGenerator * clang::BackendConsumer::getCodeGenerator ( )

◆ getFunctionSourceLocation()

std::optional< FullSourceLoc > BackendConsumer::getFunctionSourceLocation ( const llvm::Function &  F) const

◆ getModule()

llvm::Module * clang::BackendConsumer::getModule ( ) const

Definition at line 154 of file CodeGenAction.cpp.

Referenced by HandleTranslationUnit().

◆ HandleCXXStaticMemberVarInstantiation()

void clang::BackendConsumer::HandleCXXStaticMemberVarInstantiation ( VarDecl D)
overridevirtual

HandleCXXStaticMemberVarInstantiation - Tell the consumer that this.

Reimplemented from clang::ASTConsumer.

Definition at line 166 of file CodeGenAction.cpp.

◆ HandleInlineFunctionDefinition()

void clang::BackendConsumer::HandleInlineFunctionDefinition ( FunctionDecl D)
overridevirtual

This callback is invoked each time an inline (method or friend) function definition in a class is completed.

Reimplemented from clang::ASTConsumer.

Definition at line 207 of file CodeGenAction.cpp.

References D, and clang::ASTContext::getSourceManager().

◆ HandleInterestingDecl()

void clang::BackendConsumer::HandleInterestingDecl ( DeclGroupRef  D)
overridevirtual

HandleInterestingDecl - Handle the specified interesting declaration.

This is called by the AST reader when deserializing things that might interest the consumer. The default implementation forwards to HandleTopLevelDecl.

Reimplemented from clang::ASTConsumer.

Definition at line 220 of file CodeGenAction.cpp.

References D, and HandleTopLevelDecl().

◆ HandleTagDeclDefinition()

void clang::BackendConsumer::HandleTagDeclDefinition ( TagDecl D)
overridevirtual

HandleTagDeclDefinition - This callback is invoked each time a TagDecl (e.g.

struct, union, enum, class) is completed. This allows the client to hack on the type, which can occur at any point in the file (because these can be defined in declspecs).

Reimplemented from clang::ASTConsumer.

Definition at line 361 of file CodeGenAction.cpp.

References D, and clang::ASTContext::getSourceManager().

◆ HandleTagDeclRequiredDefinition()

void clang::BackendConsumer::HandleTagDeclRequiredDefinition ( const TagDecl D)
overridevirtual

This callback is invoked the first time each TagDecl is required to be complete.

Reimplemented from clang::ASTConsumer.

Definition at line 368 of file CodeGenAction.cpp.

References D.

◆ HandleTopLevelDecl()

bool clang::BackendConsumer::HandleTopLevelDecl ( DeclGroupRef  D)
overridevirtual

HandleTopLevelDecl - Handle the specified top-level declaration.

This is called by the parser to process every top-level Decl*.

Returns
true to continue parsing, or false to abort parsing.

Reimplemented from clang::ASTConsumer.

Definition at line 184 of file CodeGenAction.cpp.

References D, and clang::ASTContext::getSourceManager().

Referenced by HandleInterestingDecl().

◆ HandleTranslationUnit()

void clang::BackendConsumer::HandleTranslationUnit ( ASTContext Ctx)
overridevirtual

◆ HandleVTable()

void clang::BackendConsumer::HandleVTable ( CXXRecordDecl RD)
overridevirtual

Callback involved at the end of a translation unit to notify the consumer that a vtable for the given C++ class is required.

Parameters
RDThe class whose vtable was used.

Reimplemented from clang::ASTConsumer.

Definition at line 384 of file CodeGenAction.cpp.

◆ Initialize()

void clang::BackendConsumer::Initialize ( ASTContext Context)
overridevirtual

Initialize - This is called to initialize the consumer, providing the ASTContext.

Reimplemented from clang::ASTConsumer.

Definition at line 170 of file CodeGenAction.cpp.

◆ InlineAsmDiagHandler()

bool BackendConsumer::InlineAsmDiagHandler ( const llvm::DiagnosticInfoInlineAsm &  D)

Specialized handler for InlineAsm diagnostic.

Returns
True if the diagnostic has been successfully reported, false otherwise.

Definition at line 521 of file CodeGenAction.cpp.

References clang::StreamingDiagnostic::AddString(), ComputeDiagID, D, clang::SourceLocation::getFromRawEncoding(), clang::SourceLocation::isValid(), Loc, and clang::DiagnosticsEngine::Report().

Referenced by DiagnosticHandlerImpl().

◆ LinkInModules()

bool clang::BackendConsumer::LinkInModules ( llvm::Module *  M)

◆ MisExpectDiagHandler()

void BackendConsumer::MisExpectDiagHandler ( const llvm::DiagnosticInfoMisExpect &  D)

Specialized handler for misexpect warnings.

Note that misexpect remarks are emitted through ORE

Definition at line 778 of file CodeGenAction.cpp.

References clang::Column, D, Filename, getBestLocationFromDebugLoc(), clang::Line, Loc, and clang::DiagnosticsEngine::Report().

Referenced by DiagnosticHandlerImpl().

◆ OptimizationFailureHandler()

void BackendConsumer::OptimizationFailureHandler ( const llvm::DiagnosticInfoOptimizationFailure &  D)

Definition at line 758 of file CodeGenAction.cpp.

References D, and EmitOptimizationMessage().

Referenced by DiagnosticHandlerImpl().

◆ OptimizationRemarkHandler() [1/3]

void BackendConsumer::OptimizationRemarkHandler ( const llvm::DiagnosticInfoOptimizationBase &  D)

◆ OptimizationRemarkHandler() [2/3]

void BackendConsumer::OptimizationRemarkHandler ( const llvm::OptimizationRemarkAnalysisAliasing &  D)

◆ OptimizationRemarkHandler() [3/3]

void BackendConsumer::OptimizationRemarkHandler ( const llvm::OptimizationRemarkAnalysisFPCommute &  D)

◆ ResourceLimitDiagHandler()

bool BackendConsumer::ResourceLimitDiagHandler ( const llvm::DiagnosticInfoResourceLimit &  D)

Specialized handler for ResourceLimit diagnostic.

Returns
True if the diagnostic has been successfully reported, false otherwise.

Definition at line 562 of file CodeGenAction.cpp.

References ComputeDiagID, D, getFunctionSourceLocation(), Loc, and clang::DiagnosticsEngine::Report().

Referenced by DiagnosticHandlerImpl().

◆ SrcMgrDiagHandler()

void BackendConsumer::SrcMgrDiagHandler ( const llvm::DiagnosticInfoSrcMgr &  D)

◆ StackSizeDiagHandler()

bool BackendConsumer::StackSizeDiagHandler ( const llvm::DiagnosticInfoStackSize &  D)

Specialized handler for StackSize diagnostic.

Returns
True if the diagnostic has been successfully reported, false otherwise.

Definition at line 546 of file CodeGenAction.cpp.

References D, getFunctionSourceLocation(), Loc, and clang::DiagnosticsEngine::Report().

Referenced by DiagnosticHandlerImpl().

◆ takeModule()

std::unique_ptr< llvm::Module > clang::BackendConsumer::takeModule ( )

Definition at line 158 of file CodeGenAction.cpp.

Referenced by clang::CodeGenAction::EndSourceFileAction().

◆ UnsupportedDiagHandler()

void BackendConsumer::UnsupportedDiagHandler ( const llvm::DiagnosticInfoUnsupported &  D)

Specialized handler for unsupported backend feature diagnostic.

Definition at line 628 of file CodeGenAction.cpp.

References clang::Column, D, Filename, getBestLocationFromDebugLoc(), clang::Line, Loc, clang::Decl::print(), and clang::DiagnosticsEngine::Report().

Referenced by DiagnosticHandlerImpl().


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