summaryrefslogtreecommitdiff
path: root/src/analysis/analysis.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-25 01:52:43 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-25 01:52:43 +0300
commit6df4368beeb6fc37aeeff5b0698ce75053cb05ea (patch)
treea0a9b40218c00a09f26a742c16cfd80514400810 /src/analysis/analysis.cpp
parent208e4517bd230b1cab6325fcf6a263e69f38bf51 (diff)
downloadparanucker-6df4368beeb6fc37aeeff5b0698ce75053cb05ea.tar.gz
paranucker-6df4368beeb6fc37aeeff5b0698ce75053cb05ea.tar.bz2
paranucker-6df4368beeb6fc37aeeff5b0698ce75053cb05ea.tar.xz
paranucker-6df4368beeb6fc37aeeff5b0698ce75053cb05ea.zip
Add into analysis node NON_LVALUE_EXPR.
It works like NOP node.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r--src/analysis/analysis.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp
index 5401002..f0dc245 100644
--- a/src/analysis/analysis.cpp
+++ b/src/analysis/analysis.cpp
@@ -42,6 +42,7 @@
#include "nodes/expr/eq_expr.h"
#include "nodes/expr/modify_expr.h"
#include "nodes/expr/ne_expr.h"
+#include "nodes/expr/nonlvalue_expr.h"
#include "nodes/expr/nop_expr.h"
#include "nodes/expr/pointerplus_expr.h"
#include "nodes/expr/return_expr.h"
@@ -250,7 +251,9 @@ void reportParmDeclNullPointer(Node *mainNode,
Node *skipNop(Node *node)
{
- while (node && node->nodeType == NOP_EXPR)
+ while (node &&
+ (node->nodeType == NOP_EXPR ||
+ node->nodeType == NON_LVALUE_EXPR))
{
NopExprNode *nop = static_cast<NopExprNode*>(node);
if (nop && !nop->args.empty())
@@ -398,6 +401,9 @@ void analyseNode(Node *node, const WalkItem &wi, WalkItem &wo)
case POINTER_PLUS_EXPR:
analysePointerPlusExpr(static_cast<PointerPlusExprNode*>(node), wi2, wo);
break;
+ case NON_LVALUE_EXPR:
+ analyseNonLvalueExpr(static_cast<NonLvalueExprNode*>(node), wi2, wo);
+ break;
case VAR_DECL:
analyseVarDecl(static_cast<VarDeclNode*>(node), wi2, wo);
break;