diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-22 18:54:45 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-22 18:54:45 +0300 |
commit | dc882ac20b776eaa206f74573eca994be013941c (patch) | |
tree | c8819c37cca75020792d3107fec1774fb1e504bc /src/analysis/analysis.cpp | |
parent | cea1bf35ade4362d0a9e46980b1fdba44764ff61 (diff) | |
download | paranucker-dc882ac20b776eaa206f74573eca994be013941c.tar.gz paranucker-dc882ac20b776eaa206f74573eca994be013941c.tar.bz2 paranucker-dc882ac20b776eaa206f74573eca994be013941c.tar.xz paranucker-dc882ac20b776eaa206f74573eca994be013941c.zip |
Fix issue in related variables checks.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r-- | src/analysis/analysis.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index 5a47151..8e7c6bd 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -36,6 +36,7 @@ #include "nodes/expr/bind_expr.h" #include "nodes/expr/compound_expr.h" #include "nodes/expr/cond_expr.h" +#include "nodes/expr/decl_expr.h" #include "nodes/expr/eq_expr.h" #include "nodes/expr/modify_expr.h" #include "nodes/expr/ne_expr.h" @@ -124,6 +125,8 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) addCheckNullVars(wo, wi2); addCheckNullVars(wi2, wi2); wi2.linkedVars = wo.linkedVars; + wi2.addNullVars = wo.addNullVars; + wi2.linkedVars = wo.linkedVars; // Log::dumpAttr(node, 1, wo.isReturned); const bool isReturned = wo.isReturned; @@ -140,11 +143,13 @@ void walkTree(Node *node, const WalkItem &wi, WalkItem &wo) wi2.removeNullVars = wo2.removeNullVars; wi2.addNullVars = wo2.addNullVars; wi2.isReturned = wi2.isReturned || wo2.isReturned; + wi2.linkedVars = wo2.linkedVars; wo2.stopWalking = false; } wo.removeNullVars = wi2.removeNullVars; wo.addNullVars = wi2.addNullVars; wo.isReturned = wo.isReturned || isReturned || wo2.isReturned; + wo.linkedVars = wi2.linkedVars; // Log::dumpAttr(node, 2, wo.isReturned); } @@ -293,6 +298,9 @@ void analyseNode(Node *node, const WalkItem &wi, WalkItem &wo) case BIND_EXPR: analyseBindExpr(static_cast<BindExprNode*>(node), wi2, wo); break; + case DECL_EXPR: + analyseDeclExpr(static_cast<DeclExprNode*>(node), wi2, wo); + break; case MODIFY_EXPR: analyseModifyExpr(static_cast<ModifyExprNode*>(node), wi2, wo); break; |