summaryrefslogtreecommitdiff
path: root/src/analysis/analysis.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-17 18:59:14 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-17 18:59:14 +0300
commit16e87211d7b45b372a6430b28637f2367cf89887 (patch)
tree49380e4210186fac5ae1b2485db15aeebc272f06 /src/analysis/analysis.cpp
parent5bdc7595e7e067625719b001babc34eb56d1383f (diff)
downloadparanucker-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.cpp14
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)