diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-06-30 12:11:58 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-06-30 12:11:58 +0000 |
commit | d29e74e658a51f3b0485c9dddc6eb2c7e700b710 (patch) | |
tree | 1951d5909f51245d75972ab1ad9047a83fe13ae0 /clang/lib/Analysis/LiveVariables.cpp | |
parent | d0a246fd08baf4f0acd3118aaed0a5301518b0ad (diff) | |
download | bcm5719-llvm-d29e74e658a51f3b0485c9dddc6eb2c7e700b710.tar.gz bcm5719-llvm-d29e74e658a51f3b0485c9dddc6eb2c7e700b710.zip |
Block level expr should be visited. Otherwise variables in init expr of
DeclStmt would be dead before the DeclStmt.
For example:
int x = 0;
int y = x;
'x' would be dead before 'int y = x'.
llvm-svn: 74522
Diffstat (limited to 'clang/lib/Analysis/LiveVariables.cpp')
-rw-r--r-- | clang/lib/Analysis/LiveVariables.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Analysis/LiveVariables.cpp b/clang/lib/Analysis/LiveVariables.cpp index b0eb37b0652..b354566db02 100644 --- a/clang/lib/Analysis/LiveVariables.cpp +++ b/clang/lib/Analysis/LiveVariables.cpp @@ -135,9 +135,11 @@ void TransferFuncs::Visit(Stmt *S) { StmtVisitor<TransferFuncs,void>::Visit(S); } - else + else { // For block-level expressions, mark that they are live. LiveState(S,AD) = Alive; + StmtVisitor<TransferFuncs,void>::Visit(S); + } } void TransferFuncs::VisitTerminator(CFGBlock* B) { |