diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-17 18:59:14 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-17 18:59:14 +0300 |
commit | 16e87211d7b45b372a6430b28637f2367cf89887 (patch) | |
tree | 49380e4210186fac5ae1b2485db15aeebc272f06 /src/analysis/analysis.cpp | |
parent | 5bdc7595e7e067625719b001babc34eb56d1383f (diff) | |
download | paranucker-16e87211d7b45b372a6430b28637f2367cf89887.tar.gz paranucker-16e87211d7b45b372a6430b28637f2367cf89887.tar.bz2 paranucker-16e87211d7b45b372a6430b28637f2367cf89887.tar.xz paranucker-16e87211d7b45b372a6430b28637f2367cf89887.zip |
Skip NOP_EXPR nodes in IF_STMT analysis.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r-- | src/analysis/analysis.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index 3d7a9de..a4d7aad 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -34,6 +34,7 @@ #include "nodes/expr/addr_expr.h" #include "nodes/expr/modify_expr.h" +#include "nodes/expr/nop_expr.h" #include "nodes/expr/pointerplus_expr.h" #include "nodes/ref/component_ref.h" @@ -116,6 +117,19 @@ void reportParmDeclNullPointer(Node *mainNode, } } +Node *skipNop(Node *node) +{ + while (node && node->nodeType == NOP_EXPR) + { + NopExprNode *nop = static_cast<NopExprNode*>(node); + if (nop && !nop->args.empty()) + node = nop->args[0]; + else + return nop; + } + return node; +} + void analyseNode(Node *node, const WalkItem &wi, WalkItem &wo) { if (!node) |