diff options
author | Ted Kremenek <kremenek@apple.com> | 2014-03-05 23:38:41 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2014-03-05 23:38:41 +0000 |
commit | 01a39b601f91c66e6f359d160010724afd3254a6 (patch) | |
tree | 6caa6d122c716b44bf3d2e935227c70129460a60 /clang/lib/Analysis/ReachableCode.cpp | |
parent | da3f4fd3fe864d4694955448457cb33e6045b238 (diff) | |
download | bcm5719-llvm-01a39b601f91c66e6f359d160010724afd3254a6.tar.gz bcm5719-llvm-01a39b601f91c66e6f359d160010724afd3254a6.zip |
[-Wunreachable-code] include some enum constants in "configuration value" heuristic
llvm-svn: 203026
Diffstat (limited to 'clang/lib/Analysis/ReachableCode.cpp')
-rw-r--r-- | clang/lib/Analysis/ReachableCode.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp index f159642db2f..b772145456e 100644 --- a/clang/lib/Analysis/ReachableCode.cpp +++ b/clang/lib/Analysis/ReachableCode.cpp @@ -376,6 +376,11 @@ static bool isConfigurationValue(const Stmt *S) { S = Ex->IgnoreParenCasts(); switch (S->getStmtClass()) { + case Stmt::DeclRefExprClass: { + const DeclRefExpr *DR = cast<DeclRefExpr>(S); + const EnumConstantDecl *ED = dyn_cast<EnumConstantDecl>(DR->getDecl()); + return ED ? isConfigurationValue(ED->getInitExpr()) : false; + } case Stmt::IntegerLiteralClass: return isExpandedFromConfigurationMacro(S); case Stmt::UnaryExprOrTypeTraitExprClass: |