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->nodeKind = AST_STMT_ASSIGN;
|
||||||
assign->what = (AST*) ev[0];
|
assign->what = (AST*) ev[0];
|
||||||
assign->to = e;
|
assign->to = e;
|
||||||
|
vte->data.var.declaration = (AST*) assign;
|
||||||
|
|
||||||
if(stmtPrev) {
|
if(stmtPrev) {
|
||||||
stmtPrev->statement.next = (AST*) assign;
|
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->nodeKind = AST_STMT_ASSIGN;
|
||||||
assign2->what = (AST*) s->stmtAssign.what;
|
assign2->what = (AST*) s->stmtAssign.what;
|
||||||
assign2->to = (AST*) ev[0];
|
assign2->to = (AST*) ev[0];
|
||||||
|
tmp->data.var.declaration = (AST*) s;
|
||||||
|
|
||||||
s->stmtAssign.what = (AST*) ev[1];
|
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->what = (AST*) evar;
|
||||||
ass->to = ast_cast_expr((AST*) deref, vte->type); // Must cast because of "convention correctness"
|
ass->to = ast_cast_expr((AST*) deref, vte->type); // Must cast because of "convention correctness"
|
||||||
ass->next = n->chunk.statementFirst;
|
ass->next = n->chunk.statementFirst;
|
||||||
|
vte->data.var.declaration = (AST*) ass;
|
||||||
|
|
||||||
if(n->chunk.statementFirst) {
|
if(n->chunk.statementFirst) {
|
||||||
n->chunk.statementFirst = ass;
|
n->chunk.statementFirst = ass;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user