clang 22.0.0git
UninitializedValues.cpp File Reference
#include "clang/Analysis/Analyses/UninitializedValues.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/Expr.h"
#include "clang/AST/OperationKinds.h"
#include "clang/AST/Stmt.h"
#include "clang/AST/StmtObjC.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/AST/Type.h"
#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Analysis/CFG.h"
#include "clang/Analysis/DomainSpecific/ObjCNoReturn.h"
#include "clang/Analysis/FlowSensitive/DataflowWorklist.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/PackedVector.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallVector.h"
#include <algorithm>
#include <cassert>
#include <optional>

Go to the source code of this file.

Macros

#define DEBUG_LOGGING   0

Enumerations

enum  Value { Unknown = 0x0 , Initialized = 0x1 , Uninitialized = 0x2 , MayUninitialized = 0x3 }

Functions

static bool recordIsNotEmpty (const RecordDecl *RD)
static bool isTrackedVar (const VarDecl *vd, const DeclContext *dc)
static bool isUninitialized (const Value v)
static bool isAlwaysUninit (const Value v)
static const ExprstripCasts (ASTContext &C, const Expr *Ex)
static FindVarResult findVar (const Expr *E, const DeclContext *DC)
 If E is an expression comprising a reference to a single variable, find that variable.
static const DeclRefExprgetSelfInitExpr (VarDecl *VD)
static bool isPointerToConst (const QualType &QT)
static bool hasTrivialBody (CallExpr *CE)
static bool runOnBlock (const CFGBlock *block, const CFG &cfg, AnalysisDeclContext &ac, CFGBlockValues &vals, const ClassifyRefs &classification, llvm::BitVector &wasAnalyzed, UninitVariablesHandler &handler)

Macro Definition Documentation

◆ DEBUG_LOGGING

#define DEBUG_LOGGING   0

Definition at line 39 of file UninitializedValues.cpp.

Enumeration Type Documentation

◆ Value

enum Value
Enumerator
Unknown 
Initialized 
Uninitialized 
MayUninitialized 
Examples
/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/StaticAnalyzer/Core/RegionStore.cpp.

Definition at line 118 of file UninitializedValues.cpp.

Function Documentation

◆ findVar()

FindVarResult findVar ( const Expr * E,
const DeclContext * DC )
static

If E is an expression comprising a reference to a single variable, find that variable.

Definition at line 263 of file UninitializedValues.cpp.

References clang::DeclContext::getParentASTContext(), isTrackedVar(), and stripCasts().

◆ getSelfInitExpr()

◆ hasTrivialBody()

bool hasTrivialBody ( CallExpr * CE)
static

Definition at line 416 of file UninitializedValues.cpp.

References clang::CallExpr::getDirectCallee().

◆ isAlwaysUninit()

bool isAlwaysUninit ( const Value v)
static

Definition at line 127 of file UninitializedValues.cpp.

References Uninitialized.

◆ isPointerToConst()

bool isPointerToConst ( const QualType & QT)
static

◆ isTrackedVar()

◆ isUninitialized()

bool isUninitialized ( const Value v)
static

Definition at line 123 of file UninitializedValues.cpp.

References Uninitialized.

◆ recordIsNotEmpty()

bool recordIsNotEmpty ( const RecordDecl * RD)
static

Definition at line 41 of file UninitializedValues.cpp.

References clang::RecordDecl::fields(), and recordIsNotEmpty().

Referenced by isTrackedVar(), and recordIsNotEmpty().

◆ runOnBlock()

bool runOnBlock ( const CFGBlock * block,
const CFG & cfg,
AnalysisDeclContext & ac,
CFGBlockValues & vals,
const ClassifyRefs & classification,
llvm::BitVector & wasAnalyzed,
UninitVariablesHandler & handler )
static

◆ stripCasts()

const Expr * stripCasts ( ASTContext & C,
const Expr * Ex )
static

Definition at line 247 of file UninitializedValues.cpp.

References clang::C, and clang::Expr::IgnoreParenNoopCasts().

Referenced by findVar(), and getSelfInitExpr().