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 | |
| 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
| -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;  } | 

