clang
7.0.0
|
#include "clang/Analysis/Analyses/ReachableCode.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/AST/ParentMap.h"
#include "clang/AST/StmtCXX.h"
#include "clang/Analysis/AnalysisDeclContext.h"
#include "clang/Analysis/CFG.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Lex/Preprocessor.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/SmallVector.h"
Go to the source code of this file.
Namespaces | |
clang | |
Dataflow Directional Tag Classes. | |
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. More... | |
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. More... | |
static bool | shouldTreatSuccessorsAsReachable (const CFGBlock *B, Preprocessor &PP) |
Returns true if we should always explore all successors of a block. More... | |
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 | isValidDeadStmt (const Stmt *S) |
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. More... | |
void | clang::reachable_code::FindUnreachableCode (AnalysisDeclContext &AC, Preprocessor &PP, Callback &CB) |
|
static |
Definition at line 138 of file ReachableCode.cpp.
References clang::SourceManager::getImmediateMacroCallerLoc(), clang::SourceLocation::isMacroID(), and clang::Last.
|
static |
Definition at line 546 of file ReachableCode.cpp.
|
static |
Definition at line 69 of file ReachableCode.cpp.
Referenced by clang::CallExpr::getLocEnd().
Definition at line 61 of file ReachableCode.cpp.
|
static |
Definition at line 271 of file ReachableCode.cpp.
Referenced by shouldTreatSuccessorsAsReachable().
|
static |
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 188 of file ReachableCode.cpp.
Definition at line 84 of file ReachableCode.cpp.
Definition at line 34 of file ReachableCode.cpp.
References clang::DeclRefExpr::getDecl().
Referenced by isTrivialExpression().
|
static |
Returns true if the statement is expanded from a configuration macro.
Definition at line 149 of file ReachableCode.cpp.
Definition at line 49 of file ReachableCode.cpp.
Definition at line 41 of file ReachableCode.cpp.
References clang::Expr::IgnoreParenCasts(), and isEnumConstant().
Definition at line 448 of file ReachableCode.cpp.
|
static |
Definition at line 308 of file ReachableCode.cpp.
References clang::CFGBlock::getBlockID().
Referenced by scanMaybeReachableFromBlock(), and clang::reachable_code::ScanReachableFromBlock().
|
static |
Definition at line 374 of file ReachableCode.cpp.
References clang::C, and scanFromBlock().
Referenced by clang::reachable_code::FindUnreachableCode().
|
static |
Returns true if we should always explore all successors of a block.
Definition at line 293 of file ReachableCode.cpp.
References clang::CFGBlock::getTerminator(), clang::CFGBlock::getTerminatorCondition(), and isConfigurationValue().
|
static |
Definition at line 475 of file ReachableCode.cpp.
References clang::CFGBlock::getBlockID().