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 getAnalysisName () const final
 Used by AnalysisRegistry::Add to derive the registry entry name.
const std::vector< AnalysisName > & getDependencyNames () 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.
Public Member Functions inherited from clang::ssaf::AnalysisBase
virtual ~AnalysisBase ()=default

Protected Member Functions

const ResultT & getResult () const &
 Read-only access to the result being built.
ResultT & getResult () &
 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

◆ getAnalysisName()

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

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

Implements clang::ssaf::AnalysisBase.

Definition at line 89 of file DerivedAnalysis.h.

◆ getDependencyNames()

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

AnalysisNames of all AnalysisResult dependencies.

Implements clang::ssaf::AnalysisBase.

Definition at line 91 of file DerivedAnalysis.h.

◆ getResult() [1/2]

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

Mutable access to the result being built.

Definition at line 105 of file DerivedAnalysis.h.

◆ getResult() [2/2]

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

Read-only access to the result being built.

Definition at line 102 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.

◆ 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: