summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2018-02-13 21:31:47 +0000
committerNico Weber <nicolasweber@gmx.de>2018-02-13 21:31:47 +0000
commit758fbacea5b93307d7456dc4e2c6d3379b8aa781 (patch)
tree42f46414a86f771ea845f0513df0a4b59b8b224d /clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
parentfdb3b036cc926843bad7b00bab9fc122be8798fc (diff)
downloadbcm5719-llvm-758fbacea5b93307d7456dc4e2c6d3379b8aa781.tar.gz
bcm5719-llvm-758fbacea5b93307d7456dc4e2c6d3379b8aa781.zip
Teach Wreturn-type, Wunreachable-code, and alpha.deadcode.UnreachableCode to treat __assume(0) like __builtin_unreachable.
Fixes PR29134. https://reviews.llvm.org/D43221 llvm-svn: 325052
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
index 6f21e868b17..dbd12cc9b65 100644
--- a/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp
@@ -132,7 +132,8 @@ void UnreachableCodeChecker::checkEndAnalysis(ExplodedGraph &G,
ci != ce; ++ci) {
if (Optional<CFGStmt> S = (*ci).getAs<CFGStmt>())
if (const CallExpr *CE = dyn_cast<CallExpr>(S->getStmt())) {
- if (CE->getBuiltinCallee() == Builtin::BI__builtin_unreachable) {
+ if (CE->getBuiltinCallee() == Builtin::BI__builtin_unreachable ||
+ CE->isBuiltinAssumeFalse(Eng.getContext())) {
foundUnreachable = true;
break;
}
OpenPOWER on IntegriCloud