From 01a39b601f91c66e6f359d160010724afd3254a6 Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Wed, 5 Mar 2014 23:38:41 +0000 Subject: [-Wunreachable-code] include some enum constants in "configuration value" heuristic llvm-svn: 203026 --- clang/lib/Analysis/ReachableCode.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang/lib/Analysis/ReachableCode.cpp') 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(S); + const EnumConstantDecl *ED = dyn_cast(DR->getDecl()); + return ED ? isConfigurationValue(ED->getInitExpr()) : false; + } case Stmt::IntegerLiteralClass: return isExpandedFromConfigurationMacro(S); case Stmt::UnaryExprOrTypeTraitExprClass: -- cgit v1.2.3