diff options
| author | Ted Kremenek <kremenek@apple.com> | 2014-03-04 21:53:26 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2014-03-04 21:53:26 +0000 |
| commit | 5a09527d0d33b5bc9688adf3a7f7b9dc05f11679 (patch) | |
| tree | 020792f0992273f956ddef5bcb242ff87152b249 /clang/lib/Analysis/CFG.cpp | |
| parent | 841f1c782e2aba329e329ae6054266ce874ef49c (diff) | |
| download | bcm5719-llvm-5a09527d0d33b5bc9688adf3a7f7b9dc05f11679.tar.gz bcm5719-llvm-5a09527d0d33b5bc9688adf3a7f7b9dc05f11679.zip | |
[CFG] Tweak "?:" CFG construction to record the unreachable blocks.
llvm-svn: 202898
Diffstat (limited to 'clang/lib/Analysis/CFG.cpp')
| -rw-r--r-- | clang/lib/Analysis/CFG.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index a4991f6b742..ae1d6f9df0f 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -1634,8 +1634,8 @@ CFGBlock *CFGBuilder::VisitConditionalOperator(AbstractConditionalOperator *C, // See if this is a known constant. const TryResult& KnownVal = tryEvaluateBool(C->getCond()); - addSuccessor(Block, KnownVal.isFalse() ? NULL : LHSBlock); - addSuccessor(Block, KnownVal.isTrue() ? NULL : RHSBlock); + addSuccessor(Block, LHSBlock, !KnownVal.isFalse()); + addSuccessor(Block, RHSBlock, !KnownVal.isTrue()); Block->setTerminator(C); Expr *condExpr = C->getCond(); @@ -3408,7 +3408,7 @@ CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( const TryResult &KnownVal = tryEvaluateBool(E->getCond()); if (LHSBlock) { - addSuccessor(Block, KnownVal.isFalse() ? NULL : LHSBlock); + addSuccessor(Block, LHSBlock, !KnownVal.isFalse()); } else if (KnownVal.isFalse()) { addSuccessor(Block, NULL); } else { @@ -3418,7 +3418,8 @@ CFGBlock *CFGBuilder::VisitConditionalOperatorForTemporaryDtors( if (!RHSBlock) RHSBlock = ConfluenceBlock; - addSuccessor(Block, KnownVal.isTrue() ? NULL : RHSBlock); + + addSuccessor(Block, RHSBlock, !KnownVal.isTrue()); return Block; } |

