aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Analysis/ReachableCode.cpp
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-04-05 14:07:21 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-04-05 14:07:21 +0000
commit6615f2b3d673e422789287bb7ae097df00ca32a1 (patch)
tree0f4ca65d2bbbdcc7e34a960856d8658b83a7d24c /clang/lib/Analysis/ReachableCode.cpp
parent38a2da92bccb3c8aec76d5cb70ec6750805a6bc2 (diff)
downloadllvm-6615f2b3d673e422789287bb7ae097df00ca32a1.zip
llvm-6615f2b3d673e422789287bb7ae097df00ca32a1.tar.gz
llvm-6615f2b3d673e422789287bb7ae097df00ca32a1.tar.bz2
-Wunreachable-code: 'true' and 'false' should not be treated as configuration
macros Clang should emit -Wunreachable-code warnings in C mode for code that's unreachable because of a 'false' or '!true' condition. llvm-svn: 299541
Diffstat (limited to 'clang/lib/Analysis/ReachableCode.cpp')
-rw-r--r--clang/lib/Analysis/ReachableCode.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index a2f3203..8a96744 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -132,15 +132,21 @@ static bool isExpandedFromConfigurationMacro(const Stmt *S,
// so that we can refine it later.
SourceLocation L = S->getLocStart();
if (L.isMacroID()) {
+ SourceManager &SM = PP.getSourceManager();
if (IgnoreYES_NO) {
// The Objective-C constant 'YES' and 'NO'
// are defined as macros. Do not treat them
// as configuration values.
- SourceManager &SM = PP.getSourceManager();
SourceLocation TopL = getTopMostMacro(L, SM);
StringRef MacroName = PP.getImmediateMacroName(TopL);
if (MacroName == "YES" || MacroName == "NO")
return false;
+ } else if (!PP.getLangOpts().CPlusPlus) {
+ // Do not treat C 'false' and 'true' macros as configuration values.
+ SourceLocation TopL = getTopMostMacro(L, SM);
+ StringRef MacroName = PP.getImmediateMacroName(TopL);
+ if (MacroName == "false" || MacroName == "true")
+ return false;
}
return true;
}