#include #include ">

clang: lib/Analysis/UninitializedValues.cpp File Reference (original) (raw)

#include "[clang/Analysis/Analyses/UninitializedValues.h](UninitializedValues%5F8h%5Fsource.html)"
#include "[clang/AST/Attr.h](AST%5F2Attr%5F8h%5Fsource.html)"
#include "[clang/AST/Decl.h](Decl%5F8h%5Fsource.html)"
#include "[clang/AST/DeclBase.h](DeclBase%5F8h%5Fsource.html)"
#include "[clang/AST/Expr.h](Expr%5F8h%5Fsource.html)"
#include "[clang/AST/OperationKinds.h](OperationKinds%5F8h%5Fsource.html)"
#include "[clang/AST/Stmt.h](Stmt%5F8h%5Fsource.html)"
#include "[clang/AST/StmtObjC.h](StmtObjC%5F8h%5Fsource.html)"
#include "[clang/AST/StmtVisitor.h](StmtVisitor%5F8h%5Fsource.html)"
#include "[clang/AST/Type.h](Type%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/PostOrderCFGView.h](PostOrderCFGView%5F8h%5Fsource.html)"
#include "[clang/Analysis/AnalysisDeclContext.h](AnalysisDeclContext%5F8h%5Fsource.html)"
#include "[clang/Analysis/CFG.h](CFG%5F8h%5Fsource.html)"
#include "[clang/Analysis/DomainSpecific/ObjCNoReturn.h](ObjCNoReturn%5F8h%5Fsource.html)"
#include "[clang/Analysis/FlowSensitive/DataflowWorklist.h](DataflowWorklist%5F8h%5Fsource.html)"
#include "[clang/Basic/LLVM.h](LLVM%5F8h%5Fsource.html)"
#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 "llvm/Support/Casting.h"
#include <algorithm>
#include <cassert>
#include <optional>

Go to the source code of this file.

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 Expr * stripCasts (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 DeclRefExpr * getSelfInitExpr (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)

DEBUG_LOGGING

Value

findVar()

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

getSelfInitExpr()

hasTrivialBody()

isAlwaysUninit()

static bool isAlwaysUninit ( const Value v) static

isPointerToConst()

isTrackedVar()

Definition at line 60 of file UninitializedValues.cpp.

References clang::Type::getAsRecordDecl(), clang::Decl::getDeclContext(), clang::ValueDecl::getType(), clang::VarDecl::hasGlobalStorage(), clang::VarDecl::isExceptionVariable(), clang::Decl::isImplicit(), clang::VarDecl::isInitCapture(), clang::VarDecl::isLocalVarDecl(), clang::Type::isRVVSizelessBuiltinType(), clang::Type::isScalarType(), clang::Type::isVectorType(), and recordIsNotEmpty().

Referenced by findVar().

isUninitialized()

static bool isUninitialized ( const Value v) static

recordIsNotEmpty()

runOnBlock()

stripCasts()