diff options
Diffstat (limited to 'src/irgen.cff')
| -rw-r--r-- | src/irgen.cff | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/irgen.cff b/src/irgen.cff index e157406..c0ea1e1 100644 --- a/src/irgen.cff +++ b/src/irgen.cff @@ -70,7 +70,7 @@ struct InstStream { } -fn genblock(S *InstStream, block [#]Stmt) void; +fn genblock(S *InstStream, block Block) void; fn genexpr(S *InstStream, ex *Expr) IRValue { static tmpid int = 0; @@ -343,7 +343,7 @@ fn genstmt(S *InstStream, stmt *Stmt) void { let beqz = S->mkinst1({:beqz}, :Val(t)); S->push(beqz); genblock(S, If.t); - if If.f.#ptr { + if If.f.sts.#ptr { let b = S->mkinst({:b}, 0); S->push(b); beqz.branch = S->pushnop(); @@ -407,11 +407,11 @@ fn genstmt(S *InstStream, stmt *Stmt) void { assert(jumpto != #null, "no cont label %d", id); S->push(S->mkinst({:b, .branch: *jumpto},0)); - case Return retex; - if retex->empty() { + case Return *ret; + if ret.ex->empty() { S->push(S->mkinst({:ret0}, 0)); } else { - let inst = S->mkinst1({:ret}, :Val(genexpr(S, &retex.Some))); + let inst = S->mkinst1({:ret}, :Val(genexpr(S, &ret.ex.Some))); S->push(inst); } @@ -420,8 +420,8 @@ fn genstmt(S *InstStream, stmt *Stmt) void { } } -fn genblock(S *InstStream, block [#]Stmt) void { - foreach_ptr(st, _, block) { +fn genblock(S *InstStream, block Block) void { + foreach_ptr(st, _, block.sts) { genstmt(S, st); } } |