summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/ReachableCode.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2014-03-15 06:47:45 +0000
committerTed Kremenek <kremenek@apple.com>2014-03-15 06:47:45 +0000
commit9dfe400dc23a73847807a103c0020cf5c38a9820 (patch)
tree82acc03c7a89682a2b499a65f154e321a41873ed /clang/lib/Analysis/ReachableCode.cpp
parentad8753c00eac02acf9ef30aceb316721abf7ef6c (diff)
downloadbcm5719-llvm-9dfe400dc23a73847807a103c0020cf5c38a9820.tar.gz
bcm5719-llvm-9dfe400dc23a73847807a103c0020cf5c38a9820.zip
-Wunreachable-code: treat 'const bool' locals as control values.
llvm-svn: 204001
Diffstat (limited to 'clang/lib/Analysis/ReachableCode.cpp')
-rw-r--r--clang/lib/Analysis/ReachableCode.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index d297d03775d..71d41bb2839 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -236,7 +236,12 @@ static bool isConfigurationValue(const Stmt *S,
// We could generalize this to local variables, but it isn't
// clear if those truly represent configuration values that
// gate unreachable code.
- return !VD->hasLocalStorage();
+ if (!VD->hasLocalStorage())
+ return true;
+
+ // As a heuristic, locals that have been marked 'const' explicitly
+ // can be treated as configuration values as well.
+ return VD->getType().isLocalConstQualified();
}
return false;
}
OpenPOWER on IntegriCloud