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

Go to the source code of this file.

Namespaces
namespace clang
The JSON file list parser is used to communicate input to InstallAPI.
namespace clang::reachable_code
Functions
static bool isEnumConstant (const Expr *Ex)
static bool isTrivialExpression (const Expr *Ex)
static bool isTrivialDoWhile (const CFGBlock *B, const Stmt *S)
static bool isBuiltinUnreachable (const Stmt *S)
static bool isBuiltinAssumeFalse (const CFGBlock *B, const Stmt *S, ASTContext &C)
static bool isDeadReturn (const CFGBlock *B, const Stmt *S)
static SourceLocation getTopMostMacro (SourceLocation Loc, SourceManager &SM)
static bool isExpandedFromConfigurationMacro (const Stmt *S, Preprocessor &PP, bool IgnoreYES_NO=false)
Returns true if the statement is expanded from a configuration macro.
static bool isConfigurationValue (const ValueDecl *D, Preprocessor &PP)
static bool isConfigurationValue (const Stmt *S, Preprocessor &PP, SourceRange *SilenceableCondVal=nullptr, bool IncludeIntegers=true, bool WrappedInParens=false)
Returns true if the statement represents a configuration value.
static bool shouldTreatSuccessorsAsReachable (const CFGBlock *B, Preprocessor &PP)
Returns true if we should always explore all successors of a block.
static unsigned scanFromBlock (const CFGBlock *Start, llvm::BitVector &Reachable, Preprocessor *PP, bool IncludeSometimesUnreachableEdges)
static unsigned scanMaybeReachableFromBlock (const CFGBlock *Start, Preprocessor &PP, llvm::BitVector &Reachable)
static bool isInCoroutineStmt (const Stmt *DeadStmt, const CFGBlock *Block)
static bool isValidDeadStmt (const Stmt *S, const clang::CFGBlock *Block)
static int SrcCmp (const std::pair< const CFGBlock *, const Stmt * > *p1, const std::pair< const CFGBlock *, const Stmt * > *p2)
static SourceLocation GetUnreachableLoc (const Stmt *S, SourceRange &R1, SourceRange &R2)
unsigned clang::reachable_code::ScanReachableFromBlock (const CFGBlock *Start, llvm::BitVector &Reachable)
ScanReachableFromBlock - Mark all blocks reachable from Start.
void clang::reachable_code::FindUnreachableCode (AnalysisDeclContext &AC, Preprocessor &PP, Callback &CB)

getTopMostMacro()

GetUnreachableLoc()

Definition at line 597 of file ReachableCode.cpp.

References clang::CXXFunctionalCastExpr::getBeginLoc(), clang::ArraySubscriptExpr::getLHS(), clang::BinaryOperator::getLHS(), clang::CStyleCastExpr::getLParenLoc(), clang::ObjCBridgedCastExpr::getLParenLoc(), clang::MemberExpr::getMemberLoc(), clang::UnaryOperator::getOperatorLoc(), clang::BinaryOperator::getOperatorLoc(), clang::AbstractConditionalOperator::getQuestionLoc(), clang::ArraySubscriptExpr::getRBracketLoc(), clang::ArraySubscriptExpr::getRHS(), clang::BinaryOperator::getRHS(), clang::Stmt::getSourceRange(), clang::CastExpr::getSubExpr(), and clang::UnaryOperator::getSubExpr().

isBuiltinAssumeFalse()

isBuiltinUnreachable()

static bool isBuiltinUnreachable ( const Stmt * S) static

isConfigurationValue() [1/2]

Returns true if the statement represents a configuration value.

A configuration value is something usually determined at compile-time to conditionally always execute some branch. Such guards are for "sometimes unreachable" code. Such code is usually not interesting to report as unreachable, and may mask truly unreachable code within those blocks.

Definition at line 189 of file ReachableCode.cpp.

References E, clang::BinaryOperator::getLHS(), clang::UnaryOperator::getOpcode(), clang::BinaryOperator::getRHS(), clang::Stmt::getSourceRange(), clang::UnaryOperator::getSubExpr(), clang::Expr::IgnoreCasts(), clang::BinaryOperator::isComparisonOp(), isConfigurationValue(), isExpandedFromConfigurationMacro(), and clang::BinaryOperator::isLogicalOp().

isConfigurationValue() [2/2]

isDeadReturn()

isEnumConstant()

static bool isEnumConstant ( const Expr * Ex) static

isExpandedFromConfigurationMacro()

isInCoroutineStmt()

static bool isInCoroutineStmt ( const Stmt * DeadStmt, const CFGBlock * Block ) static

isTrivialDoWhile()

isTrivialExpression()

static bool isTrivialExpression ( const Expr * Ex) static

isValidDeadStmt()

scanFromBlock()

scanMaybeReachableFromBlock()

shouldTreatSuccessorsAsReachable()

SrcCmp()

static int SrcCmp ( const std::pair< const CFGBlock *, const Stmt * > * p1, const std::pair< const CFGBlock *, const Stmt * > * p2 ) static