summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-22 15:13:29 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-22 15:13:29 +0300
commit2b1669cebbdb14ff93bd455439e31682fbd9c548 (patch)
tree51092d953d2a5e69f0d972a86fdcb1a12c466a1c
parent2203a00e3e96fa24d591150e7d85619cdc0c716e (diff)
downloadparanucker-2b1669cebbdb14ff93bd455439e31682fbd9c548.tar.gz
paranucker-2b1669cebbdb14ff93bd455439e31682fbd9c548.tar.bz2
paranucker-2b1669cebbdb14ff93bd455439e31682fbd9c548.tar.xz
paranucker-2b1669cebbdb14ff93bd455439e31682fbd9c548.zip
In places where searched function parameters nodes (PARM_DECL)
also search for varibles (VAR_DECL).
-rw-r--r--src/analysis/analysis.cpp2
-rw-r--r--src/analysis/expression.cpp8
2 files changed, 5 insertions, 5 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp
index 3e4b91c..271f8f3 100644
--- a/src/analysis/analysis.cpp
+++ b/src/analysis/analysis.cpp
@@ -145,7 +145,7 @@ bool checkForReport(Node *node,
{
node = skipNop(node);
return node &&
- node->nodeType == PARM_DECL &&
+ (node->nodeType == PARM_DECL || node->nodeType == VAR_DECL) &&
wi.checkNullVars.find(node->label) != wi.checkNullVars.end();
}
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp
index b9bd9bc..e460438 100644
--- a/src/analysis/expression.cpp
+++ b/src/analysis/expression.cpp
@@ -93,7 +93,7 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo)
return;
// Log::dumpWI(node, "NE in ", wo);
- // PARM_DECL?
+ // PARM_DECL or VAR_DECL?
Node *node1 = skipNop(node->args[0]);
// INTEGER_CST?
Node *node2 = skipNop(node->args[1]);
@@ -101,7 +101,7 @@ void analyseNeExpr(NeExprNode *node, const WalkItem &wi, WalkItem &wo)
// if (var != 0)
if (node1 &&
node2 &&
- node1->nodeType == PARM_DECL &&
+ (node1->nodeType == PARM_DECL || node1->nodeType == VAR_DECL) &&
node2->nodeType == INTEGER_CST &&
wi.checkNullVars.find(node1->label) != wi.checkNullVars.end() &&
node2->label == "0")
@@ -125,14 +125,14 @@ void analyseEqExpr(EqExprNode *node, const WalkItem &wi, WalkItem &wo)
return;
Log::dumpWI(node, "EQ in ", wo);
- // PARM_DECL?
+ // PARM_DECL or VAR_DECL ?
Node *node1 = skipNop(node->args[0]);
// INTEGER_CST?
Node *node2 = skipNop(node->args[1]);
// if (var == 0)
if (node1 &&
node2 &&
- node1->nodeType == PARM_DECL &&
+ (node1->nodeType == PARM_DECL || node1->nodeType == VAR_DECL) &&
node2->nodeType == INTEGER_CST &&
wi.checkNullVars.find(node1->label) != wi.checkNullVars.end() &&
node2->label == "0")