[analyzer;alternate edges] edges from subexpressions of "?:" are important to retain

llvm-svn: 181384
This commit is contained in:
Ted Kremenek 2013-05-08 01:15:20 +00:00
parent c57baeeee0
commit 0e84ac83eb
1 changed files with 6 additions and 2 deletions

View File

@ -1833,8 +1833,12 @@ static bool isConditionForTerminator(const Stmt *S, const Stmt *Cond) {
return cast<SwitchStmt>(S)->getCond() == Cond;
case Stmt::BinaryConditionalOperatorClass:
return cast<BinaryConditionalOperator>(S)->getCond() == Cond;
case Stmt::ConditionalOperatorClass:
return cast<ConditionalOperator>(S)->getCond() == Cond;
case Stmt::ConditionalOperatorClass: {
const ConditionalOperator *CO = cast<ConditionalOperator>(S);
return CO->getCond() == Cond ||
CO->getLHS() == Cond ||
CO->getRHS() == Cond;
}
case Stmt::ObjCForCollectionStmtClass:
return cast<ObjCForCollectionStmt>(S)->getElement() == Cond;
default: