clang 19.0.0git
Public Member Functions | Static Public Member Functions | List of all members
clang::dataflow::UncheckedOptionalAccessModel Class Reference

Dataflow analysis that models whether optionals hold values or not. More...

#include "clang/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.h"

Inheritance diagram for clang::dataflow::UncheckedOptionalAccessModel:
Inheritance graph
[legend]

Public Member Functions

 UncheckedOptionalAccessModel (ASTContext &Ctx, dataflow::Environment &Env)
 
void transfer (const CFGElement &Elt, NoopLattice &L, Environment &Env)
 
- Public Member Functions inherited from clang::dataflow::DataflowAnalysis< UncheckedOptionalAccessModel, NoopLattice >
 DataflowAnalysis (ASTContext &Context)
 
 DataflowAnalysis (ASTContext &Context, DataflowAnalysisOptions Options)
 
ASTContextgetASTContext () final
 Returns the ASTContext that is used by the analysis.
 
TypeErasedLattice typeErasedInitialElement () final
 Returns a type-erased lattice element that models the initial state of a basic block.
 
TypeErasedLattice joinTypeErased (const TypeErasedLattice &E1, const TypeErasedLattice &E2) final
 Joins two type-erased lattice elements by computing their least upper bound.
 
LatticeJoinEffect widenTypeErased (TypeErasedLattice &Current, const TypeErasedLattice &Previous) final
 Chooses a lattice element that approximates the current element at a program point, given the previous element at that point.
 
bool isEqualTypeErased (const TypeErasedLattice &E1, const TypeErasedLattice &E2) final
 Returns true if and only if the two given type-erased lattice elements are equal.
 
void transferTypeErased (const CFGElement &Element, TypeErasedLattice &E, Environment &Env) final
 Applies the analysis transfer function for a given control flow graph element and type-erased lattice element.
 
void transferBranchTypeErased (bool Branch, const Stmt *Stmt, TypeErasedLattice &E, Environment &Env) final
 Applies the analysis transfer function for a given edge from a CFG block of a conditional statement.
 
- Public Member Functions inherited from clang::dataflow::TypeErasedDataflowAnalysis
 TypeErasedDataflowAnalysis ()
 
 TypeErasedDataflowAnalysis (DataflowAnalysisOptions Options)
 
virtual ~TypeErasedDataflowAnalysis ()
 
virtual ASTContextgetASTContext ()=0
 Returns the ASTContext that is used by the analysis.
 
virtual TypeErasedLattice typeErasedInitialElement ()=0
 Returns a type-erased lattice element that models the initial state of a basic block.
 
virtual TypeErasedLattice joinTypeErased (const TypeErasedLattice &, const TypeErasedLattice &)=0
 Joins two type-erased lattice elements by computing their least upper bound.
 
virtual LatticeJoinEffect widenTypeErased (TypeErasedLattice &Current, const TypeErasedLattice &Previous)=0
 Chooses a lattice element that approximates the current element at a program point, given the previous element at that point.
 
virtual bool isEqualTypeErased (const TypeErasedLattice &, const TypeErasedLattice &)=0
 Returns true if and only if the two given type-erased lattice elements are equal.
 
virtual void transferTypeErased (const CFGElement &, TypeErasedLattice &, Environment &)=0
 Applies the analysis transfer function for a given control flow graph element and type-erased lattice element.
 
virtual void transferBranchTypeErased (bool Branch, const Stmt *, TypeErasedLattice &, Environment &)=0
 Applies the analysis transfer function for a given edge from a CFG block of a conditional statement.
 
const std::optional< DataflowAnalysisContext::Options > & builtinOptions () const
 If the built-in model is enabled, returns the options to be passed to them.
 
- Public Member Functions inherited from clang::dataflow::Environment::ValueModel
virtual ~ValueModel ()=default
 
virtual ComparisonResult compare (QualType Type, const Value &Val1, const Environment &Env1, const Value &Val2, const Environment &Env2)
 Returns: Same: Val1 is equivalent to Val2, according to the model.
 
virtual void join (QualType Type, const Value &Val1, const Environment &Env1, const Value &Val2, const Environment &Env2, Value &JoinedVal, Environment &JoinedEnv)
 Modifies JoinedVal to approximate both Val1 and Val2.
 
virtual std::optional< WidenResultwiden (QualType Type, Value &Prev, const Environment &PrevEnv, Value &Current, Environment &CurrentEnv)
 This function may widen the current value – replace it with an approximation that can reach a fixed point more quickly than iterated application of the transfer function alone.
 

Static Public Member Functions

static ast_matchers::DeclarationMatcher optionalClassDecl ()
 Returns a matcher for the optional classes covered by this model.
 
static NoopLattice initialElement ()
 

Additional Inherited Members

- Public Types inherited from clang::dataflow::DataflowAnalysis< UncheckedOptionalAccessModel, NoopLattice >
using Lattice = NoopLattice
 Bounded join-semilattice that is used in the analysis.
 

Detailed Description

Dataflow analysis that models whether optionals hold values or not.

Models the std::optional, absl::optional, and base::Optional types.

Definition at line 45 of file UncheckedOptionalAccessModel.h.

Constructor & Destructor Documentation

◆ UncheckedOptionalAccessModel()

clang::dataflow::UncheckedOptionalAccessModel::UncheckedOptionalAccessModel ( ASTContext Ctx,
dataflow::Environment Env 
)

Member Function Documentation

◆ initialElement()

static NoopLattice clang::dataflow::UncheckedOptionalAccessModel::initialElement ( )
inlinestatic

Definition at line 53 of file UncheckedOptionalAccessModel.h.

◆ optionalClassDecl()

ast_matchers::DeclarationMatcher clang::dataflow::UncheckedOptionalAccessModel::optionalClassDecl ( )
static

Returns a matcher for the optional classes covered by this model.

Definition at line 914 of file UncheckedOptionalAccessModel.cpp.

References clang::ast_matchers::cxxRecordDecl.

◆ transfer()

void clang::dataflow::UncheckedOptionalAccessModel::transfer ( const CFGElement Elt,
NoopLattice L,
Environment Env 
)

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