clang
8.0.0
|
#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/Analyses/PostOrderCFGView.h"
#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Analysis/CFG.h"
#include "clang/Analysis/DomainSpecific/ObjCNoReturn.h"
#include "clang/Basic/LLVM.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/Optional.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>
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 | 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. More... | |
static const DeclRefExpr * | getSelfInitExpr (VarDecl *VD) |
static bool | isPointerToConst (const QualType &QT) |
static bool | runOnBlock (const CFGBlock *block, const CFG &cfg, AnalysisDeclContext &ac, CFGBlockValues &vals, const ClassifyRefs &classification, llvm::BitVector &wasAnalyzed, UninitVariablesHandler &handler) |
#define DEBUG_LOGGING 0 |
Definition at line 42 of file UninitializedValues.cpp.
enum Value |
Enumerator | |
---|---|
Unknown | |
Initialized | |
Uninitialized | |
MayUninitialized |
Definition at line 102 of file UninitializedValues.cpp.
|
static |
If E is an expression comprising a reference to a single variable, find that variable.
Definition at line 313 of file UninitializedValues.cpp.
References clang::C, clang::AnalysisDeclContext::getDecl(), clang::DeclContext::getParentASTContext(), isTrackedVar(), and stripCasts().
Referenced by getSelfInitExpr(), and isPointerToConst().
|
static |
Definition at line 373 of file UninitializedValues.cpp.
References clang::C, clang::DeclStmt::decls(), findVar(), clang::Decl::getASTContext(), clang::VarDecl::getInit(), clang::BinaryOperator::getLHS(), clang::BinaryOperator::getOpcode(), clang::UnaryOperator::getSubExpr(), clang::ValueDecl::getType(), clang::Expr::IgnoreParens(), clang::BinaryOperator::isCompoundAssignmentOp(), clang::UnaryOperator::isIncrementDecrementOp(), clang::Type::isRecordType(), isTrackedVar(), max(), and stripCasts().
Referenced by isPointerToConst().
Definition at line 111 of file UninitializedValues.cpp.
References clang::PostOrderCFGView::begin(), clang::PostOrderCFGView::end(), clang::CFGBlock::getBlockID(), clang::CFG::getEntry(), clang::CFG::getNumBlockIDs(), getValue(), clang::CFGBlock::succ_begin(), clang::CFGBlock::succ_end(), and Uninitialized.
Referenced by isPointerToConst().
Definition at line 459 of file UninitializedValues.cpp.
References clang::UninitUse::addUninitBranch(), clang::UninitUse::Always, clang::CallExpr::arg_begin(), clang::CallExpr::arg_end(), clang::BlockDecl::captures(), clang::DeclStmt::decls(), findVar(), clang::CallExpr::getArg(), clang::AnalysisDeclContext::getASTContext(), clang::BlockExpr::getBlockDecl(), clang::CFGBlock::getBlockID(), clang::CallExpr::getCalleeDecl(), clang::CastExpr::getCastKind(), clang::AnalysisDeclContext::getDecl(), clang::DeclRefExpr::getDecl(), clang::ObjCForCollectionStmt::getElement(), clang::CFG::getEntry(), clang::UninitUse::getKind(), clang::CFGBlock::getLabel(), clang::BinaryOperator::getLHS(), clang::CFG::getNumBlockIDs(), clang::BinaryOperator::getOpcode(), clang::Type::getPointeeType(), getSelfInitExpr(), clang::DeclStmt::getSingleDecl(), clang::CastExpr::getSubExpr(), clang::Expr::getType(), Initialized, isAlwaysUninit(), clang::Type::isAnyPointerType(), clang::CallExpr::isCallToStdMove(), clang::QualType::isConstQualified(), clang::Type::isRecordType(), isTrackedVar(), isUninitialized(), Label, MayUninitialized, clang::UninitUse::Branch::Output, clang::CFGBlock::pred_begin(), clang::CFGBlock::pred_end(), clang::UninitUse::setUninitAfterCall(), clang::UninitUse::setUninitAfterDecl(), stripCasts(), clang::CFGBlock::succ_begin(), clang::CFGBlock::succ_end(), clang::CFGBlock::succ_size(), clang::UninitUse::Branch::Terminator, Uninitialized, and v.
Referenced by wasRegionOfInterestModifiedAt().
|
static |
Definition at line 44 of file UninitializedValues.cpp.
References clang::DeclContext::decls_begin(), clang::DeclContext::decls_end(), clang::Decl::getDeclContext(), clang::ValueDecl::getType(), clang::VarDecl::hasGlobalStorage(), clang::VarDecl::isExceptionVariable(), clang::Decl::isImplicit(), clang::VarDecl::isInitCapture(), clang::VarDecl::isLocalVarDecl(), clang::Type::isRecordType(), clang::Type::isScalarType(), clang::Type::isVectorType(), and clang::None.
Referenced by findVar(), getSelfInitExpr(), and isPointerToConst().
Definition at line 107 of file UninitializedValues.cpp.
References Uninitialized.
Referenced by isPointerToConst().
|
static |
Definition at line 820 of file UninitializedValues.cpp.
References clang::CFGBlock::getBlockID(), clang::CFGBlock::pred_begin(), and clang::CFGBlock::pred_end().
Referenced by clang::runUninitializedVariablesAnalysis(), and writeShouldKill().
|
static |
Definition at line 297 of file UninitializedValues.cpp.
References clang::Expr::IgnoreParenNoopCasts().
Referenced by findVar(), clang::ento::loc::MemRegionVal::getRegion(), getSelfInitExpr(), and isPointerToConst().