clang 23.0.0git
clang::ssaf::DerivedAnalysis< ResultT, DepResultTs > Class Template Referenceabstract

Typed intermediate that concrete derived analyses inherit from. More...

#include "clang/ScalableStaticAnalysisFramework/Core/WholeProgramAnalysis/DerivedAnalysis.h"

Inheritance diagram for clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >:
[legend]

Public Member Functions

AnalysisName analysisName () const final
 Used by AnalysisRegistry::Add to derive the registry entry name.
const std::vector< AnalysisName > & dependencyNames () const final
 AnalysisNames of all AnalysisResult dependencies.
virtual llvm::Error initialize (const DepResultTs &...)=0
 Called once with the fixed dependency results before the step() loop.
virtual llvm::Expected< boolstep ()=0
 Performs one step.
virtual llvm::Error finalize ()
 Called after the step() loop converges. Override for post-processing.
Public Member Functions inherited from clang::ssaf::AnalysisBase
virtual ~AnalysisBase ()=default

Protected Member Functions

const ResultT & result () const &
 Read-only access to the result being built.
ResultT & result () &
 Mutable access to the result being built.
Protected Member Functions inherited from clang::ssaf::DerivedAnalysisBase
 DerivedAnalysisBase ()
Protected Member Functions inherited from clang::ssaf::AnalysisBase
 AnalysisBase (Kind K)

Friends

class AnalysisRegistry

Detailed Description

template<typename ResultT, typename... DepResultTs>
class clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >

Typed intermediate that concrete derived analyses inherit from.

Concrete analyses must implement: llvm::Error initialize(const DepResultTs &...) override; llvm::Expected<bool> step() override; and may override finalize().

Dependencies are fixed for the lifetime of the analysis: initialize() binds them once, step() is called until it returns false, and finalize() post-processes after convergence.

Definition at line 72 of file DerivedAnalysis.h.

Member Function Documentation

◆ analysisName()

template<typename ResultT, typename... DepResultTs>
AnalysisName clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::analysisName ( ) const
inlinefinalvirtual

Used by AnalysisRegistry::Add to derive the registry entry name.

Implements clang::ssaf::AnalysisBase.

Definition at line 89 of file DerivedAnalysis.h.

◆ dependencyNames()

template<typename ResultT, typename... DepResultTs>
const std::vector< AnalysisName > & clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::dependencyNames ( ) const
inlinefinalvirtual

AnalysisNames of all AnalysisResult dependencies.

Implements clang::ssaf::AnalysisBase.

Definition at line 91 of file DerivedAnalysis.h.

◆ finalize()

template<typename ResultT, typename... DepResultTs>
virtual llvm::Error clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::finalize ( )
inlinevirtual

Called after the step() loop converges. Override for post-processing.

Reimplemented from clang::ssaf::DerivedAnalysisBase.

Definition at line 105 of file DerivedAnalysis.h.

◆ initialize()

template<typename ResultT, typename... DepResultTs>
virtual llvm::Error clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::initialize ( const DepResultTs & ...)
pure virtual

Called once with the fixed dependency results before the step() loop.

◆ result() [1/2]

template<typename ResultT, typename... DepResultTs>
ResultT & clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::result ( ) &
inlineprotected

Mutable access to the result being built.

Definition at line 112 of file DerivedAnalysis.h.

◆ result() [2/2]

template<typename ResultT, typename... DepResultTs>
const ResultT & clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::result ( ) const &
inlineprotected

Read-only access to the result being built.

Definition at line 109 of file DerivedAnalysis.h.

◆ step()

template<typename ResultT, typename... DepResultTs>
virtual llvm::Expected< bool > clang::ssaf::DerivedAnalysis< ResultT, DepResultTs >::step ( )
pure virtual

Performs one step.

Returns true if another step is needed; false when converged. Single-step analyses always return false.

Implements clang::ssaf::DerivedAnalysisBase.

◆ AnalysisRegistry

template<typename ResultT, typename... DepResultTs>
friend class AnalysisRegistry
friend

Definition at line 82 of file DerivedAnalysis.h.

References AnalysisRegistry.

Referenced by AnalysisRegistry.


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