summaryrefslogtreecommitdiff
path: root/src/analysis/analysis.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-19 17:43:00 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-19 17:43:00 +0300
commit748dc1dfbad72879c22f4b04c2f94a302f3875ec (patch)
tree9ecd6e694bf6ee68e3436d5928518fafe312ba2a /src/analysis/analysis.cpp
parent07d855f00bef2bc0443f5549073747dee8df858f (diff)
downloadparanucker-748dc1dfbad72879c22f4b04c2f94a302f3875ec.tar.gz
paranucker-748dc1dfbad72879c22f4b04c2f94a302f3875ec.tar.bz2
paranucker-748dc1dfbad72879c22f4b04c2f94a302f3875ec.tar.xz
paranucker-748dc1dfbad72879c22f4b04c2f94a302f3875ec.zip
Fix some issues in expressions like this "if (EXPR || EXPR)"
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r--src/analysis/analysis.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp
index 852eeb3..c90d474 100644
--- a/src/analysis/analysis.cpp
+++ b/src/analysis/analysis.cpp
@@ -142,15 +142,19 @@ Node *skipNop(Node *node)
return node;
}
-void mergeChecked(WalkItem &wi1, WalkItem &wi2)
+void mergeNullChecked(WalkItem &wi1, WalkItem &wi2)
{
wi1.checkedNullVars.insert(wi2.checkedNullVars.begin(),
wi2.checkedNullVars.end());
+}
+
+void mergeNonNullChecked(WalkItem &wi1, WalkItem &wi2)
+{
wi1.checkedNonNullVars.insert(wi2.checkedNonNullVars.begin(),
wi2.checkedNonNullVars.end());
}
-void intersectChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2)
+void intersectNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2)
{
FOR_EACH (std::set<std::string>::const_iterator,
it,
@@ -159,9 +163,13 @@ void intersectChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2)
if (wi2.checkedNullVars.find(*it) != wi2.checkedNullVars.end())
wi.checkedNullVars.insert(*it);
}
+}
+
+void intersectNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2)
+{
FOR_EACH (std::set<std::string>::const_iterator,
it,
- wi2.checkedNonNullVars)
+ wi1.checkedNonNullVars)
{
if (wi2.checkedNonNullVars.find(*it) != wi2.checkedNonNullVars.end())
wi.checkedNonNullVars.insert(*it);