Add final loop variable assignment when unrolling for-loops, fixes #968
authorClifford Wolf <clifford@clifford.at>
Tue, 30 Apr 2019 13:03:32 +0000 (15:03 +0200)
committerClifford Wolf <clifford@clifford.at>
Tue, 30 Apr 2019 13:03:32 +0000 (15:03 +0200)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
frontends/ast/simplify.cc

index 3e453bd7f367555f786e432028aaf6db13d9a01c..a342bf5d92a33f2c2a740592835ce75b626ff85b 100644 (file)
@@ -1172,6 +1172,13 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
                        varbuf->children[0] = buf;
                }
 
+               if (type == AST_FOR) {
+                       AstNode *buf = next_ast->clone();
+                       delete buf->children[1];
+                       buf->children[1] = varbuf->children[0]->clone();
+                       current_block->children.insert(current_block->children.begin() + current_block_idx++, buf);
+               }
+
                current_scope[varbuf->str] = backup_scope_varbuf;
                delete varbuf;
                delete_children();