diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-12-22 00:46:32 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-12-22 00:46:32 +0000 |
commit | 280cf1451b4f02093e47ce956a0688407aa595b9 (patch) | |
tree | 0fc66979a7c80fde7cd577d10e2285136cc3b08c /lib/Analysis/LiveVariables.cpp | |
parent | dedb362adc4b0f51a0f30399791360017bbacd59 (diff) |
Fix regression in LiveVariables when reasoning about variables captured by blocks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147116 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/LiveVariables.cpp')
-rw-r--r-- | lib/Analysis/LiveVariables.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp index ff6607d51a..89cf9f8bbb 100644 --- a/lib/Analysis/LiveVariables.cpp +++ b/lib/Analysis/LiveVariables.cpp @@ -354,11 +354,10 @@ void TransferFunctions::VisitBinaryOperator(BinaryOperator *B) { } void TransferFunctions::VisitBlockExpr(BlockExpr *BE) { - AnalysisDeclContext::referenced_decls_iterator I, E; - llvm::tie(I, E) = - LV.analysisContext.getReferencedBlockVars(BE->getBlockDecl()); - for ( ; I != E ; ++I) { - const VarDecl *VD = *I; + const BlockDecl *BD = BE->getBlockDecl(); + for (BlockDecl::capture_const_iterator it = BD->capture_begin(), + ei = BD->capture_end(); it != ei; ++it) { + const VarDecl *VD = it->getVariable(); if (isAlwaysAlive(VD)) continue; val.liveDecls = LV.DSetFact.add(val.liveDecls, VD); |