summaryrefslogtreecommitdiff
path: root/src/analysis/collections.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-08 00:34:52 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-08 14:09:58 +0300
commit4403372a6292fcfeff4d29383e0fc964abaeb592 (patch)
treece546f534f60e5c7d1c7dd975159484ba63a415f /src/analysis/collections.cpp
parentc493b9059f0289585c7aa7c2be71ec7fd5aa9116 (diff)
downloadparanucker-4403372a6292fcfeff4d29383e0fc964abaeb592.tar.gz
paranucker-4403372a6292fcfeff4d29383e0fc964abaeb592.tar.bz2
paranucker-4403372a6292fcfeff4d29383e0fc964abaeb592.tar.xz
paranucker-4403372a6292fcfeff4d29383e0fc964abaeb592.zip
Add WHILE_STMT node analysis.
This add basic support for while(exprt) {code}
Diffstat (limited to 'src/analysis/collections.cpp')
-rw-r--r--src/analysis/collections.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/analysis/collections.cpp b/src/analysis/collections.cpp
index a475acc..0f3a8f8 100644
--- a/src/analysis/collections.cpp
+++ b/src/analysis/collections.cpp
@@ -35,6 +35,28 @@ void addNeedCheckNullVars(WalkItem &wi, WalkItem &wo)
{
wo.needCheckNullVars.insert(it);
wo.knownVars.insert(it);
+/*
+ wo.knownNonNullVars.erase(it);
+ wo.knownNullVars.erase(it);
+ wo.removeNullVars.erase(it);
+ wo.removeNullVarsAll.erase(it);
+ wo.addNullVars.insert(it);
+*/
+ }
+}
+
+// add variables null pointer checks
+void addNeedCheckNullVars2(WalkItem &wi, WalkItem &wo)
+{
+ FOR_EACH (it, wi.addNullVars)
+ {
+ wo.needCheckNullVars.insert(it);
+ wo.knownVars.insert(it);
+ wo.knownNonNullVars.erase(it);
+ wo.knownNullVars.erase(it);
+ wo.removeNullVars.erase(it);
+ wo.removeNullVarsAll.erase(it);
+ wo.addNullVars.insert(it);
}
}
@@ -362,4 +384,12 @@ void removeVar(WalkItem &wi, const std::string &var)
removeNeedCheckNullVarOnly(wi, var);
}
+void enforceNeedCheckNullVars(WalkItem &wi)
+{
+ FOR_EACH (it, wi.needCheckNullVars)
+ {
+ wi.removeNullVars.erase(it);
+ }
+}
+
}