summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-20 00:54:39 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-20 00:54:39 +0300
commitc7852c4ae3c74cb12fb8ac8415430b486fe77492 (patch)
treecc7cb78b0c240e1756b8980b4e8c95f1eec85fab /src/analysis
parent0bee72a563eeecc365b7b3d4fda9f9adff83244b (diff)
downloadparanucker-c7852c4ae3c74cb12fb8ac8415430b486fe77492.tar.gz
paranucker-c7852c4ae3c74cb12fb8ac8415430b486fe77492.tar.bz2
paranucker-c7852c4ae3c74cb12fb8ac8415430b486fe77492.tar.xz
paranucker-c7852c4ae3c74cb12fb8ac8415430b486fe77492.zip
Detect what variable is null after if with both branches set variable to null value.
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/statement.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp
index f405c2c..e22cdae 100644
--- a/src/analysis/statement.cpp
+++ b/src/analysis/statement.cpp
@@ -170,6 +170,14 @@ void analyseCondition(Node *node,
addNonNullVar(wo, it);
}
}
+ FOR_EACH (it, wo2.knownNullVars)
+ {
+ if (isIn(it, wo3.knownNullVars) &&
+ isNotIn(it, wo.knownNullVars))
+ {
+ addNullVar(wo, it);
+ }
+ }
}
wo.isReturned = false;