clang
15.0.0git
|
Dataflow Directional Tag Classes. More...
Classes | |
class | AggregateStorageLocation |
A storage location which is subdivided into smaller storage locations that can be traced independently by abstract interpretation. More... | |
class | AtomicBoolValue |
Models an atomic boolean. More... | |
struct | backward_analysis_tag |
struct | BooleanFormula |
A boolean formula in conjunctive normal form. More... | |
class | BoolValue |
Models a boolean. More... | |
class | ChromiumCheckModel |
Models the behavior of Chromium's CHECK, DCHECK, etc. More... | |
class | ConjunctionValue |
Models a boolean conjunction. More... | |
class | ControlFlowContext |
Holds CFG and other derived context that is needed to perform dataflow analysis. More... | |
class | DataflowAnalysis |
Base class template for dataflow analyses built on a single lattice type. More... | |
class | DataflowAnalysisContext |
Owns objects that encompass the state of a program and stores context that is used during dataflow analysis. More... | |
struct | DataflowAnalysisState |
class | DataflowModel |
Abstract base class for dataflow "models": reusable analysis components that model a particular aspect of program semantics in the Environment . More... | |
class | DisjunctionValue |
Models a boolean disjunction. More... | |
class | Environment |
Holds the state of the program (store and heap) at a given program point. More... | |
struct | forward_analysis_tag |
class | IndirectionValue |
Base class for values that refer to storage locations. More... | |
class | IntegerValue |
Models an integer. More... | |
class | MapLattice |
A lattice that maps keys to individual lattice elements. More... | |
class | MatchSwitchBuilder |
Collects cases of a "match switch": a collection of matchers paired with callbacks, which together define a switch that can be applied to a Stmt . More... | |
class | NegationValue |
Models a boolean negation. More... | |
class | PointerValue |
Models a symbolic pointer. Specifically, any value of type T* . More... | |
class | ReferenceValue |
Models a dereferenced pointer. More... | |
class | ScalarStorageLocation |
A storage location that is not subdivided further for the purposes of abstract interpretation. More... | |
class | Solver |
An interface for a SAT solver that can be used by dataflow analyses. More... | |
class | SourceLocationsLattice |
Lattice for dataflow analysis that keeps track of a set of source locations. More... | |
class | StmtToEnvMap |
Maps statements to the environments of basic blocks that contain them. More... | |
class | StmtToEnvMapImpl |
class | StorageLocation |
Base class for elements of the local variable store and of the heap. More... | |
class | StructValue |
Models a value of struct or class type, with a flat map of fields to child storage locations, containing all accessible members of base struct and class types. More... | |
class | TerminatorVisitor |
Extends the flow condition of an environment based on a terminator statement. More... | |
struct | TransferState |
A common form of state shared between the cases of a transfer function. More... | |
class | TransferVisitor |
class | TypeErasedDataflowAnalysis |
Type-erased base class for dataflow analyses built on a single lattice type. More... | |
struct | TypeErasedDataflowAnalysisState |
Type-erased model of the program at a given program point. More... | |
struct | TypeErasedLattice |
Type-erased lattice element container. More... | |
class | UncheckedOptionalAccessModel |
Dataflow analysis that discovers unsafe accesses of optional values and adds the respective source locations to the lattice. More... | |
struct | UncheckedOptionalAccessModelOptions |
class | Value |
Base class for all values computed by abstract interpretation. More... | |
class | WatchedLiteralsSolver |
A SAT solver that is an implementation of Algorithm D from Knuth's The Art of Computer Programming Volume 4: Satisfiability, Fascicle 6. More... | |
class | WatchedLiteralsSolverImpl |
Typedefs | |
template<typename ElementLattice > | |
using | VarMapLattice = MapLattice< const clang::VarDecl *, ElementLattice > |
Convenience alias that captures the common use of map lattices to model in-scope variables. More... | |
template<typename State > | |
using | MatchSwitch = std::function< void(const Stmt &, ASTContext &, State &)> |
Matches against Stmt and, based on its structure, dispatches to an appropriate handler. More... | |
using | Variable = uint32_t |
Boolean variables are represented as positive integers. More... | |
using | Literal = uint32_t |
Literals are represented as positive integers. More... | |
using | ClauseID = uint32_t |
Clause identifiers are represented as positive integers. More... | |
Enumerations | |
enum | SkipPast { SkipPast::None, SkipPast::Reference, SkipPast::ReferenceThenPointer } |
Indicates what kind of indirections should be skipped past when retrieving storage locations or values. More... | |
enum | LatticeJoinEffect { LatticeJoinEffect::Unchanged, LatticeJoinEffect::Changed } |
Effect indicating whether a lattice join operation resulted in a new value. More... | |
Functions | |
template<typename AnalysisT > | |
llvm::Expected< std::vector< llvm::Optional< DataflowAnalysisState< typename AnalysisT::Lattice > > > > | runDataflowAnalysis (const ControlFlowContext &CFCtx, AnalysisT &Analysis, const Environment &InitEnv) |
Performs dataflow analysis and returns a mapping from basic block IDs to dataflow analysis states that model the respective basic blocks. More... | |
const Expr & | ignoreCFGOmittedNodes (const Expr &E) |
Skip past nodes that the CFG does not emit. More... | |
const Stmt & | ignoreCFGOmittedNodes (const Stmt &S) |
template<typename Key , typename ElementLattice > | |
std::ostream & | operator<< (std::ostream &Os, const clang::dataflow::MapLattice< Key, ElementLattice > &M) |
template<typename ElementLattice > | |
std::ostream & | operator<< (std::ostream &Os, const clang::dataflow::VarMapLattice< ElementLattice > &M) |
std::string | DebugString (const SourceLocationsLattice &Lattice, const ASTContext &Context) |
Returns a string that represents the source locations of the lattice. More... | |
void | transfer (const StmtToEnvMap &StmtToEnv, const Stmt &S, Environment &Env) |
Evaluates S and updates Env accordingly. More... | |
TypeErasedDataflowAnalysisState | transferBlock (const ControlFlowContext &CFCtx, std::vector< llvm::Optional< TypeErasedDataflowAnalysisState >> &BlockStates, const CFGBlock &Block, const Environment &InitEnv, TypeErasedDataflowAnalysis &Analysis, std::function< void(const CFGStmt &, const TypeErasedDataflowAnalysisState &)> HandleTransferredStmt=nullptr) |
Transfers the state of a basic block by evaluating each of its statements in the context of Analysis and the states of its predecessors that are available in BlockStates . More... | |
llvm::Expected< std::vector< llvm::Optional< TypeErasedDataflowAnalysisState > > > | runTypeErasedDataflowAnalysis (const ControlFlowContext &CFCtx, TypeErasedDataflowAnalysis &Analysis, const Environment &InitEnv) |
Performs dataflow analysis and returns a mapping from basic block IDs to dataflow analysis states that model the respective basic blocks. More... | |
static llvm::DenseMap< const Stmt *, const CFGBlock * > | buildStmtToBasicBlockMap (const CFG &Cfg) |
Returns a map from statements to basic blocks that contain them. More... | |
static std::pair< BoolValue *, BoolValue * > | makeCanonicalBoolValuePair (BoolValue &LHS, BoolValue &RHS) |
template<typename K , typename V > | |
llvm::DenseMap< K, V > | intersectDenseMaps (const llvm::DenseMap< K, V > &Map1, const llvm::DenseMap< K, V > &Map2) |
Returns a map consisting of key-value entries that are present in both maps. More... | |
static bool | equivalentValues (QualType Type, Value *Val1, const Environment &Env1, Value *Val2, const Environment &Env2, Environment::ValueModel &Model) |
Returns true if and only if Val1 is equivalent to Val2 . More... | |
static Value * | mergeDistinctValues (QualType Type, Value *Val1, const Environment &Env1, Value *Val2, const Environment &Env2, Environment &MergedEnv, Environment::ValueModel &Model) |
Attempts to merge distinct values Val1 and Val2 in Env1 and Env2 , respectively, of the same type Type . More... | |
static void | initGlobalVar (const VarDecl &D, Environment &Env) |
Initializes a global storage value. More... | |
static void | initGlobalVar (const Decl &D, Environment &Env) |
Initializes a global storage value. More... | |
static void | initGlobalVars (const Stmt &S, Environment &Env) |
Initializes global storage values that are declared or referenced from sub-statements of S . More... | |
static void | getFieldsFromClassHierarchy (QualType Type, bool IgnorePrivateFields, llvm::DenseSet< const FieldDecl * > &Fields) |
static llvm::DenseSet< const FieldDecl * > | getAccessibleObjectFields (QualType Type) |
Gets the set of all fields accesible from the type. More... | |
bool | isCheckLikeMethod (llvm::SmallDenseSet< const CXXMethodDecl * > &CheckDecls, const CXXMethodDecl &D) |
Determines whether D is one of the methods used to implement Chromium's CHECK macros. More... | |
static BoolValue & | evaluateBooleanEquality (const Expr &LHS, const Expr &RHS, Environment &Env) |
static int | blockIndexInPredecessor (const CFGBlock &Pred, const CFGBlock &Block) |
Returns the index of Block in the successors of Pred . More... | |
static TypeErasedDataflowAnalysisState | computeBlockInputState (const ControlFlowContext &CFCtx, std::vector< llvm::Optional< TypeErasedDataflowAnalysisState >> &BlockStates, const CFGBlock &Block, const Environment &InitEnv, TypeErasedDataflowAnalysis &Analysis) |
Computes the input state for a given basic block by joining the output states of its predecessors. More... | |
static void | transferCFGStmt (const ControlFlowContext &CFCtx, llvm::ArrayRef< llvm::Optional< TypeErasedDataflowAnalysisState >> BlockStates, const CFGStmt &CfgStmt, TypeErasedDataflowAnalysis &Analysis, TypeErasedDataflowAnalysisState &State, std::function< void(const CFGStmt &, const TypeErasedDataflowAnalysisState &)> HandleTransferredStmt) |
Transfers State by evaluating CfgStmt in the context of Analysis . More... | |
static void | transferCFGInitializer (const CFGInitializer &CfgInit, TypeErasedDataflowAnalysisState &State) |
Transfers State by evaluating CfgInit . More... | |
static constexpr Literal | posLit (Variable V) |
Returns the positive literal V . More... | |
static constexpr Literal | negLit (Variable V) |
Returns the negative literal !V . More... | |
static constexpr Literal | notLit (Literal L) |
Returns the negated literal !L . More... | |
static constexpr Variable | var (Literal L) |
Returns the variable of L . More... | |
BooleanFormula | buildBooleanFormula (const llvm::DenseSet< BoolValue * > &Vals) |
Converts the conjunction of Vals into a formula in conjunctive normal form where each clause has at least one and at most three literals. More... | |
Variables | |
static constexpr int | MaxCompositeValueDepth = 3 |
static constexpr int | MaxCompositeValueSize = 1000 |
static constexpr Variable | NullVar = 0 |
A null boolean variable is used as a placeholder in various data structures and algorithms. More... | |
static constexpr Literal | NullLit = 0 |
A null literal is used as a placeholder in various data structures and algorithms. More... | |
static constexpr ClauseID | NullClause = 0 |
A null clause identifier is used as a placeholder in various data structures and algorithms. More... | |
Dataflow Directional Tag Classes.
These are used for tag dispatching within the dataflow solver/transfer functions to determine what direction a dataflow analysis flows.
using clang::dataflow::ClauseID = typedef uint32_t |
Clause identifiers are represented as positive integers.
Definition at line 74 of file WatchedLiteralsSolver.cpp.
using clang::dataflow::Literal = typedef uint32_t |
Literals are represented as positive integers.
Specifically, for a boolean variable V
that is represented as the positive integer I
, the positive literal V
is represented as the integer 2*I
and the negative literal !V
is represented as the integer 2*I+1
.
Definition at line 55 of file WatchedLiteralsSolver.cpp.
using clang::dataflow::MatchSwitch = typedef std::function<void(const Stmt &, ASTContext &, State &)> |
Matches against Stmt
and, based on its structure, dispatches to an appropriate handler.
Definition at line 50 of file MatchSwitch.h.
using clang::dataflow::Variable = typedef uint32_t |
Boolean variables are represented as positive integers.
Definition at line 45 of file WatchedLiteralsSolver.cpp.
using clang::dataflow::VarMapLattice = typedef MapLattice<const clang::VarDecl *, ElementLattice> |
Convenience alias that captures the common use of map lattices to model in-scope variables.
Definition at line 109 of file MapLattice.h.
|
strong |
Effect indicating whether a lattice join operation resulted in a new value.
Enumerator | |
---|---|
Unchanged | |
Changed |
Definition at line 21 of file DataflowLattice.h.
|
strong |
Indicates what kind of indirections should be skipped past when retrieving storage locations or values.
FIXME: Consider renaming this or replacing it with a more appropriate model. See the discussion in https://reviews.llvm.org/D116596 for context.
Definition at line 41 of file DataflowEnvironment.h.
|
static |
Returns the index of Block
in the successors of Pred
.
Definition at line 62 of file TypeErasedDataflowAnalysis.cpp.
References clang::Block, clang::CFGBlock::succ_begin(), and clang::CFGBlock::succs().
Referenced by computeBlockInputState().
BooleanFormula clang::dataflow::buildBooleanFormula | ( | const llvm::DenseSet< BoolValue * > & | Vals | ) |
Converts the conjunction of Vals
into a formula in conjunctive normal form where each clause has at least one and at most three literals.
Definition at line 174 of file WatchedLiteralsSolver.cpp.
References clang::dataflow::BooleanFormula::addClause(), negLit(), and posLit().
|
static |
Returns a map from statements to basic blocks that contain them.
Definition at line 28 of file ControlFlowContext.cpp.
References clang::Block.
|
static |
Computes the input state for a given basic block by joining the output states of its predecessors.
Requirements:
All predecessors of Block
except those with loop back edges must have already been transferred. States in BlockStates
that are set to llvm::None
represent basic blocks that are not evaluated yet.
Definition at line 150 of file TypeErasedDataflowAnalysis.cpp.
References clang::dataflow::TypeErasedDataflowAnalysis::applyBuiltinTransfer(), clang::Block, blockIndexInPredecessor(), clang::dataflow::TypeErasedDataflowAnalysisState::Env, clang::dataflow::ControlFlowContext::getStmtToBlock(), clang::dataflow::TypeErasedDataflowAnalysis::joinTypeErased(), clang::dataflow::TypeErasedDataflowAnalysisState::Lattice, clang::dataflow::TypeErasedDataflowAnalysis::typeErasedInitialElement(), and clang::StmtVisitorBase< Ptr, ImplClass, RetTy, ParamTys >::Visit().
Referenced by transferBlock().
std::string clang::dataflow::DebugString | ( | const SourceLocationsLattice & | Lattice, |
const ASTContext & | Context | ||
) |
Returns a string that represents the source locations of the lattice.
Definition at line 33 of file SourceLocationsLattice.cpp.
References clang::dataflow::SourceLocationsLattice::getSourceLocations(), and string().
|
static |
Returns true if and only if Val1
is equivalent to Val2
.
Definition at line 54 of file DataflowEnvironment.cpp.
References clang::dataflow::Environment::ValueModel::compareEquivalent().
Referenced by clang::dataflow::Environment::equivalentTo().
|
static |
Definition at line 36 of file Transfer.cpp.
References clang::dataflow::Environment::getValue(), clang::dataflow::Environment::makeAtomicBoolValue(), clang::dataflow::Environment::makeIff(), and Reference.
|
static |
Gets the set of all fields accesible from the type.
FIXME: Does not precisely handle non-virtual diamond inheritance. A single field decl will be modeled for all instances of the inherited field.
Definition at line 180 of file DataflowEnvironment.cpp.
References getFieldsFromClassHierarchy().
Referenced by clang::dataflow::Environment::createStorageLocation(), and clang::dataflow::Environment::setValue().
|
static |
Definition at line 152 of file DataflowEnvironment.cpp.
References clang::AS_none, clang::AS_private, clang::RecordDecl::fields(), clang::Type::getAsCXXRecordDecl(), clang::Type::getAsRecordDecl(), clang::TagDecl::isClass(), clang::Type::isDependentType(), clang::Type::isIncompleteType(), and clang::Type::isRecordType().
Referenced by getAccessibleObjectFields().
Skip past nodes that the CFG does not emit.
These nodes are invisible to flow-sensitive analysis, and should be ignored as they will effectively not exist.
ParenExpr
- The CFG takes the operator precedence into account, but otherwise omits the node afterwards.ExprWithCleanups
- The CFG will generate the appropriate calls to destructors and then omit the node. Definition at line 162 of file DataflowAnalysisContext.cpp.
Referenced by clang::dataflow::DataflowAnalysisContext::getStorageLocation(), clang::dataflow::Environment::getStorageLocation(), clang::dataflow::DataflowAnalysisContext::setStorageLocation(), and clang::dataflow::Environment::setStorageLocation().
Definition at line 173 of file DataflowAnalysisContext.cpp.
|
static |
Initializes a global storage value.
Definition at line 122 of file DataflowEnvironment.cpp.
References initGlobalVar(), and V.
|
static |
Initializes a global storage value.
Definition at line 110 of file DataflowEnvironment.cpp.
References clang::dataflow::Environment::createStorageLocation(), clang::dataflow::Environment::createValue(), clang::dataflow::Environment::getStorageLocation(), clang::ValueDecl::getType(), clang::VarDecl::hasGlobalStorage(), None, clang::dataflow::Environment::setStorageLocation(), and clang::dataflow::Environment::setValue().
Referenced by initGlobalVar().
|
static |
Initializes global storage values that are declared or referenced from sub-statements of S
.
Definition at line 131 of file DataflowEnvironment.cpp.
Referenced by clang::dataflow::Environment::Environment().
llvm::DenseMap<K, V> clang::dataflow::intersectDenseMaps | ( | const llvm::DenseMap< K, V > & | Map1, |
const llvm::DenseMap< K, V > & | Map2 | ||
) |
Returns a map consisting of key-value entries that are present in both maps.
Definition at line 42 of file DataflowEnvironment.cpp.
Referenced by clang::dataflow::Environment::join().
bool clang::dataflow::isCheckLikeMethod | ( | llvm::SmallDenseSet< const CXXMethodDecl * > & | CheckDecls, |
const CXXMethodDecl & | D | ||
) |
Determines whether D
is one of the methods used to implement Chromium's CHECK
macros.
Populates CheckDecls
, if empty.
Definition at line 19 of file ChromiumCheckModel.cpp.
References clang::Decl::getDeclContext(), clang::NamedDecl::getDeclName(), clang::NamedDecl::getName(), clang::CXXMethodDecl::getParent(), clang::DeclarationName::isIdentifier(), clang::CXXMethodDecl::isStatic(), and clang::CXXRecordDecl::methods().
Referenced by clang::dataflow::ChromiumCheckModel::transfer().
|
static |
Definition at line 26 of file DataflowAnalysisContext.cpp.
Referenced by clang::dataflow::DataflowAnalysisContext::getOrCreateConjunctionValue(), and clang::dataflow::DataflowAnalysisContext::getOrCreateDisjunctionValue().
|
static |
Attempts to merge distinct values Val1
and Val2
in Env1
and Env2
, respectively, of the same type Type
.
Merging generally produces a single value that (soundly) approximates the two inputs, although the actual meaning depends on Model
.
Definition at line 75 of file DataflowEnvironment.cpp.
References clang::dataflow::Environment::createValue(), clang::dataflow::Environment::getFlowConditionToken(), clang::dataflow::Environment::makeAnd(), clang::dataflow::Environment::makeOr(), and clang::dataflow::Environment::ValueModel::merge().
Referenced by clang::dataflow::Environment::join().
Returns the negative literal !V
.
Definition at line 65 of file WatchedLiteralsSolver.cpp.
References V.
Referenced by buildBooleanFormula(), clang::dataflow::WatchedLiteralsSolverImpl::solve(), and clang::dataflow::WatchedLiteralsSolverImpl::WatchedLiteralsSolverImpl().
Returns the negated literal !L
.
Definition at line 68 of file WatchedLiteralsSolver.cpp.
std::ostream& clang::dataflow::operator<< | ( | std::ostream & | Os, |
const clang::dataflow::MapLattice< Key, ElementLattice > & | M | ||
) |
Definition at line 113 of file MapLattice.h.
References string().
std::ostream& clang::dataflow::operator<< | ( | std::ostream & | Os, |
const clang::dataflow::VarMapLattice< ElementLattice > & | M | ||
) |
Definition at line 126 of file MapLattice.h.
References string().
Returns the positive literal V
.
Definition at line 62 of file WatchedLiteralsSolver.cpp.
References V.
Referenced by buildBooleanFormula(), clang::dataflow::WatchedLiteralsSolverImpl::solve(), and clang::dataflow::WatchedLiteralsSolverImpl::WatchedLiteralsSolverImpl().
llvm::Expected<std::vector< llvm::Optional<DataflowAnalysisState<typename AnalysisT::Lattice> > > > clang::dataflow::runDataflowAnalysis | ( | const ControlFlowContext & | CFCtx, |
AnalysisT & | Analysis, | ||
const Environment & | InitEnv | ||
) |
Performs dataflow analysis and returns a mapping from basic block IDs to dataflow analysis states that model the respective basic blocks.
The returned vector, if any, will have the same size as the number of CFG blocks, with indices corresponding to basic block IDs. Returns an error if the dataflow analysis cannot be performed successfully.
Definition at line 116 of file DataflowAnalysis.h.
References runTypeErasedDataflowAnalysis(), and State.
llvm::Expected< std::vector< llvm::Optional< TypeErasedDataflowAnalysisState > > > clang::dataflow::runTypeErasedDataflowAnalysis | ( | const ControlFlowContext & | CFCtx, |
TypeErasedDataflowAnalysis & | Analysis, | ||
const Environment & | InitEnv | ||
) |
Performs dataflow analysis and returns a mapping from basic block IDs to dataflow analysis states that model the respective basic blocks.
Indices of the returned vector correspond to basic block IDs. Returns an error if the dataflow analysis cannot be performed successfully.
Definition at line 314 of file TypeErasedDataflowAnalysis.cpp.
References clang::Block, clang::DataflowWorklistBase< Comp, QueueSize >::dequeue(), clang::ForwardDataflowWorklist::enqueueSuccessors(), clang::dataflow::TypeErasedDataflowAnalysisState::Env, clang::CFGBlock::getBlockID(), clang::dataflow::ControlFlowContext::getCFG(), clang::CFG::getEntry(), clang::dataflow::TypeErasedDataflowAnalysis::isEqualTypeErased(), clang::dataflow::TypeErasedDataflowAnalysisState::Lattice, clang::CFG::size(), transferBlock(), and clang::dataflow::TypeErasedDataflowAnalysis::typeErasedInitialElement().
Referenced by runDataflowAnalysis().
void clang::dataflow::transfer | ( | const StmtToEnvMap & | StmtToEnv, |
const Stmt & | S, | ||
Environment & | Env | ||
) |
Evaluates S
and updates Env
accordingly.
Requirements:
S
must not be ParenExpr
or ExprWithCleanups
.
Definition at line 596 of file Transfer.cpp.
Referenced by clang::dataflow::DataflowAnalysis< UncheckedOptionalAccessModel, SourceLocationsLattice >::transferTypeErased().
TypeErasedDataflowAnalysisState clang::dataflow::transferBlock | ( | const ControlFlowContext & | CFCtx, |
std::vector< llvm::Optional< TypeErasedDataflowAnalysisState >> & | BlockStates, | ||
const CFGBlock & | Block, | ||
const Environment & | InitEnv, | ||
TypeErasedDataflowAnalysis & | Analysis, | ||
std::function< void(const CFGStmt &, const TypeErasedDataflowAnalysisState &)> | HandleTransferredStmt = nullptr |
||
) |
Transfers the state of a basic block by evaluating each of its statements in the context of Analysis
and the states of its predecessors that are available in BlockStates
.
HandleTransferredStmt
(if provided) will be applied to each statement in the block, after it is evaluated.
Requirements:
All predecessors of Block
except those with loop back edges must have already been transferred. States in BlockStates
that are set to llvm::None
represent basic blocks that are not evaluated yet.
Definition at line 285 of file TypeErasedDataflowAnalysis.cpp.
References clang::dataflow::TypeErasedDataflowAnalysis::applyBuiltinTransfer(), clang::Block, computeBlockInputState(), clang::CFGElement::Initializer, State, clang::CFGElement::Statement, transferCFGInitializer(), and transferCFGStmt().
Referenced by runTypeErasedDataflowAnalysis().
|
static |
Transfers State
by evaluating CfgInit
.
Definition at line 251 of file TypeErasedDataflowAnalysis.cpp.
References clang::CFGInitializer::getInitializer(), clang::Initializer, clang::Member, Reference, and State.
Referenced by transferBlock().
|
static |
Transfers State
by evaluating CfgStmt
in the context of Analysis
.
HandleTransferredStmt
(if provided) will be applied to CfgStmt
, after it is evaluated.
Definition at line 231 of file TypeErasedDataflowAnalysis.cpp.
Referenced by transferBlock().
Returns the variable of L
.
Definition at line 71 of file WatchedLiteralsSolver.cpp.
Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnForEachDeclStmt(), clang::Sema::CheckCompleteVariableDeclaration(), considerVariable(), drillIntoBlockVariable(), emitArgumentDemotion(), clang::CodeGen::CodeGenFunction::emitAutoVarTypeCleanup(), EmitAutoVarWithLifetime(), clang::CodeGen::CodeGenFunction::emitBlockByrefAddress(), clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CGBlockInfo::getCapture(), clang::CFGImplicitDtor::getDestructorDecl(), clang::Sema::inferObjCARCLifetime(), isAccessedBy(), isBlockVarRef(), isInvalidICRSource(), SetupCleanupBlockActivation(), shouldExtendReceiverForInnerPointerMessage(), clang::arcmt::trans::BlockObjCVariableTraverser::traverseBody(), tryCaptureAsConstant(), and clang::CodeGen::CodeGenFunction::tryEmitAsConstant().
|
staticconstexpr |
Definition at line 37 of file DataflowEnvironment.cpp.
|
staticconstexpr |
Definition at line 38 of file DataflowEnvironment.cpp.
Referenced by clang::dataflow::Environment::createValue().
|
staticconstexpr |
A null clause identifier is used as a placeholder in various data structures and algorithms.
Definition at line 78 of file WatchedLiteralsSolver.cpp.
|
staticconstexpr |
A null literal is used as a placeholder in various data structures and algorithms.
Definition at line 59 of file WatchedLiteralsSolver.cpp.
Referenced by clang::dataflow::BooleanFormula::addClause().
|
staticconstexpr |
A null boolean variable is used as a placeholder in various data structures and algorithms.
Definition at line 49 of file WatchedLiteralsSolver.cpp.
Referenced by clang::dataflow::WatchedLiteralsSolverImpl::WatchedLiteralsSolverImpl().