summaryrefslogtreecommitdiffstats
path: root/clang/lib/Checker/UnreachableCodeChecker.cpp
diff options
context:
space:
mode:
authorTom Care <tom.care@uqconnect.edu.au>2010-08-27 22:37:31 +0000
committerTom Care <tom.care@uqconnect.edu.au>2010-08-27 22:37:31 +0000
commitf7b7067c4d23aee226d814d7a0f1b523d5d62fea (patch)
tree0110bc6b4f6fba195eacbd239ceefa4cd6997387 /clang/lib/Checker/UnreachableCodeChecker.cpp
parentc29c91aaaac0a0f5ff5b993a831e32d891a30c7c (diff)
downloadbcm5719-llvm-f7b7067c4d23aee226d814d7a0f1b523d5d62fea.tar.gz
bcm5719-llvm-f7b7067c4d23aee226d814d7a0f1b523d5d62fea.zip
Remove an assertion in UnreachableCodeChecker that can be triggered by bugs in other checkers.
llvm-svn: 112310
Diffstat (limited to 'clang/lib/Checker/UnreachableCodeChecker.cpp')
-rw-r--r--clang/lib/Checker/UnreachableCodeChecker.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Checker/UnreachableCodeChecker.cpp b/clang/lib/Checker/UnreachableCodeChecker.cpp
index fd98a7a75d2..7a56c7f46b4 100644
--- a/clang/lib/Checker/UnreachableCodeChecker.cpp
+++ b/clang/lib/Checker/UnreachableCodeChecker.cpp
@@ -188,8 +188,11 @@ const Stmt *UnreachableCodeChecker::getUnreachableStmt(const CFGBlock *CB) {
// There will never be more than one predecessor.
bool UnreachableCodeChecker::isInvalidPath(const CFGBlock *CB,
const ParentMap &PM) {
- // Assert this CFGBlock only has one or zero predecessors
- assert(CB->pred_size() == 0 || CB->pred_size() == 1);
+ // We only expect a predecessor size of 0 or 1. If it is >1, then an external
+ // condition has broken our assumption (for example, a sink being placed by
+ // another check). In these cases, we choose not to report.
+ if (CB->pred_size() > 1)
+ return true;
// If there are no predecessors, then this block is trivially unreachable
if (CB->pred_size() == 0)
OpenPOWER on IntegriCloud