diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-08-19 20:26:51 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-08-19 20:26:51 +0300 |
commit | f3ff43f7366553c9f3b64298e29f766dd7a1fbd6 (patch) | |
tree | 38d982e0bbfcfb348fa53e4ca73f8de1da51b9a8 | |
parent | f83110aecbabc9cf5ae9082f37bc27aec28ad285 (diff) | |
download | paranucker-f3ff43f7366553c9f3b64298e29f766dd7a1fbd6.tar.gz paranucker-f3ff43f7366553c9f3b64298e29f766dd7a1fbd6.tar.bz2 paranucker-f3ff43f7366553c9f3b64298e29f766dd7a1fbd6.tar.xz paranucker-f3ff43f7366553c9f3b64298e29f766dd7a1fbd6.zip |
Skip CLEANUP_POINT_EXPR node as other NOP nodes.
-rw-r--r-- | src/analysis/analysis.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index 6ccd658..8b76a6e 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -158,8 +158,9 @@ int findBackLocation(Node *node) // skip all child nodes and return non nop child Node *skipNop(Node *node) { - while (node && - (node == NOP_EXPR || node == NON_LVALUE_EXPR)) + while (node == NOP_EXPR || + node == NON_LVALUE_EXPR || + node == CLEANUP_POINT_EXPR) { NopExprNode *nop = static_cast<NopExprNode*>(node); if (nop && !nop->args.empty()) @@ -173,7 +174,9 @@ Node *skipNop(Node *node) // skip all parent nop nodes and return first non nop parent Node *skipBackNop(Node *node) { - while (node && node == NOP_EXPR) + while (node == NOP_EXPR || + node == NON_LVALUE_EXPR || + node == CLEANUP_POINT_EXPR) { node = node->parent; } |