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 |
---|