Force assign declaration statement for all virtual/temp variables
This commit is contained in:
parent
ecab77f9e9
commit
9d975eeceb
@ -35,6 +35,7 @@ static AST *varify(AST *tlc, AST *chunk, AST *stmtPrev, AST *stmt, AST *e) {
|
||||
assign->nodeKind = AST_STMT_ASSIGN;
|
||||
assign->what = (AST*) ev[0];
|
||||
assign->to = e;
|
||||
vte->data.var.declaration = (AST*) assign;
|
||||
|
||||
if(stmtPrev) {
|
||||
stmtPrev->statement.next = (AST*) assign;
|
||||
@ -297,6 +298,7 @@ static void normalize_visitor(AST **nptr, AST *stmt, AST *stmtPrev, AST *chu, AS
|
||||
assign2->nodeKind = AST_STMT_ASSIGN;
|
||||
assign2->what = (AST*) s->stmtAssign.what;
|
||||
assign2->to = (AST*) ev[0];
|
||||
tmp->data.var.declaration = (AST*) s;
|
||||
|
||||
s->stmtAssign.what = (AST*) ev[1];
|
||||
|
||||
@ -517,6 +519,7 @@ static void pre_norm_visitor(AST **nptr, AST *stmt, AST *stmtPrev, AST *chunk, A
|
||||
ass->what = (AST*) evar;
|
||||
ass->to = ast_cast_expr((AST*) deref, vte->type); // Must cast because of "convention correctness"
|
||||
ass->next = n->chunk.statementFirst;
|
||||
vte->data.var.declaration = (AST*) ass;
|
||||
|
||||
if(n->chunk.statementFirst) {
|
||||
n->chunk.statementFirst = ass;
|
||||
|
Loading…
Reference in New Issue
Block a user