15 #ifndef LLVM_CLANG_ANALYSIS_ANALYSES_UNINITIALIZEDVALUES_H
16 #define LLVM_CLANG_ANALYSIS_ANALYSES_UNINITIALIZEDVALUES_H
19 #include "llvm/ADT/SmallVector.h"
23 class AnalysisDeclContext;
56 : User(User), UninitAfterCall(
false), UninitAfterDecl(
false),
57 AlwaysUninit(AlwaysUninit) {}
60 UninitBranches.push_back(B);
87 return AlwaysUninit ?
Always :
virtual ~UninitVariablesHandler()
The use is uninitialized whenever a certain branch is taken.
branch_iterator branch_begin() const
Branches which inevitably result in the variable being used uninitialized.
The use might be uninitialized.
void setUninitAfterCall()
SmallVectorImpl< Branch >::const_iterator branch_iterator
bool branch_empty() const
Kind
The kind of uninitialized use.
const Expr * getUser() const
Get the expression containing the uninitialized use.
virtual void handleSelfInit(const VarDecl *vd)
void runUninitializedVariablesAnalysis(const DeclContext &dc, const CFG &cfg, AnalysisDeclContext &ac, UninitVariablesHandler &handler, UninitVariablesAnalysisStats &stats)
UninitUse(const Expr *User, bool AlwaysUninit)
A use of a variable, which might be uninitialized.
virtual void handleUseOfUninitVariable(const VarDecl *vd, const UninitUse &use)
Called when the uninitialized variable is used at the given expression.
void setUninitAfterDecl()
Kind getKind() const
Get the kind of uninitialized use.
The use is always uninitialized.
unsigned NumVariablesAnalyzed
void addUninitBranch(Branch B)
branch_iterator branch_end() const