diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-02-13 21:31:47 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-02-13 21:31:47 +0000 |
commit | 758fbacea5b93307d7456dc4e2c6d3379b8aa781 (patch) | |
tree | 42f46414a86f771ea845f0513df0a4b59b8b224d /clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp | |
parent | fdb3b036cc926843bad7b00bab9fc122be8798fc (diff) | |
download | bcm5719-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.cpp | 3 |
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; } |