summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/LiveVariables.cpp
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2009-06-30 12:11:58 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2009-06-30 12:11:58 +0000
commitd29e74e658a51f3b0485c9dddc6eb2c7e700b710 (patch)
tree1951d5909f51245d75972ab1ad9047a83fe13ae0 /clang/lib/Analysis/LiveVariables.cpp
parentd0a246fd08baf4f0acd3118aaed0a5301518b0ad (diff)
downloadbcm5719-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.cpp4
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) {
OpenPOWER on IntegriCloud