diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-17 19:29:34 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-17 19:29:34 +0300 |
commit | 69caff6e1cefaa415efce5d07aa5b16971a64365 (patch) | |
tree | 8956af0c052d830704325e280351d096f8d04985 /src/analysis/statement.cpp | |
parent | 14c42add529be98ba8c398db3a4cc1c490fe7d59 (diff) | |
download | paranucker-69caff6e1cefaa415efce5d07aa5b16971a64365.tar.gz paranucker-69caff6e1cefaa415efce5d07aa5b16971a64365.tar.bz2 paranucker-69caff6e1cefaa415efce5d07aa5b16971a64365.tar.xz paranucker-69caff6e1cefaa415efce5d07aa5b16971a64365.zip |
Skip NOP_EXPR in most analysis code.
Diffstat (limited to 'src/analysis/statement.cpp')
-rw-r--r-- | src/analysis/statement.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp index 905b26f..fd1cbf2 100644 --- a/src/analysis/statement.cpp +++ b/src/analysis/statement.cpp @@ -47,9 +47,10 @@ void analyseIfStmt(IfStmtNode *node, const WalkItem &wi, WalkItem &wo) if (!node->condition || command == FindArgs) return; - if (node->condition->nodeType == EQ_EXPR) + Node *condNode = skipNop(node->condition); + if (condNode->nodeType == EQ_EXPR) { // if (... == ..) - EqExprNode *eq = static_cast<EqExprNode*>(node->condition); + EqExprNode *eq = static_cast<EqExprNode*>(condNode); // need atleast two operands for EQ_EXPR node if (eq->args.size() < 2) return; @@ -57,7 +58,7 @@ void analyseIfStmt(IfStmtNode *node, const WalkItem &wi, WalkItem &wo) // PARM_DECL? Node *node1 = skipNop(eq->args[0]); // INTEGER_CST? - Node *node2 = eq->args[1]; + Node *node2 = skipNop(eq->args[1]); // if (var == 0) if (node1 && node2 && @@ -88,17 +89,17 @@ void analyseIfStmt(IfStmtNode *node, const WalkItem &wi, WalkItem &wo) return; } } - else if (node->condition->nodeType == NE_EXPR) + else if (condNode->nodeType == NE_EXPR) { // if (... != ..) - NeExprNode *ne = static_cast<NeExprNode*>(node->condition); + NeExprNode *ne = static_cast<NeExprNode*>(condNode); // need atleast two operands for NE_EXPR node if (ne->args.size() < 2) return; // PARM_DECL? - Node *node1 = ne->args[0]; + Node *node1 = skipNop(ne->args[0]); // INTEGER_CST? - Node *node2 = ne->args[1]; + Node *node2 = skipNop(ne->args[1]); // if (var != 0) if (node1 && node2 && |