diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-08 00:34:52 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-08 14:09:58 +0300 |
commit | 4403372a6292fcfeff4d29383e0fc964abaeb592 (patch) | |
tree | ce546f534f60e5c7d1c7dd975159484ba63a415f /src/analysis/collections.cpp | |
parent | c493b9059f0289585c7aa7c2be71ec7fd5aa9116 (diff) | |
download | paranucker-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.cpp | 30 |
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); + } +} + } |