From f14aee6184568bae34f8d8d8f9140fa760099fa5 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 12 Aug 2022 12:44:56 +0200 Subject: oops --- bootstrap/cgen.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'bootstrap') diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index 6321e92..b0cfd92 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -356,15 +356,15 @@ genstmt(struct stmt *stmt) { } break; case Swhile: - pri("while (%e) {_cont%d:;", &stmt->loop.test, stmt->loop.id); + pri("while (%e) {", &stmt->loop.test); genblock(stmt->loop.body); - pri("} _brk%d:;\n", stmt->loop.id); + pri("_cont%d:;} _brk%d:;\n", stmt->loop.id, stmt->loop.id); break; case Sdowhile: - pri("do {_cont%d:;",stmt->loop.id); + pri("do {"); genblock(stmt->loop.body); - pri("} while (%e); _brk%d:;\n", - &stmt->loop.test, stmt->loop.id); + pri("_cont%d:;} while (%e); _brk%d:;\n", + stmt->loop.id, &stmt->loop.test, stmt->loop.id); break; case Sfor: pri("{\n"); @@ -374,12 +374,10 @@ genstmt(struct stmt *stmt) { pri("%e;", &stmt->loop.test); if (stmt->loop.next) pri(" %e", stmt->loop.next); - pri(") {goto _skip%d; _cont%d:", stmt->loop.id, stmt->loop.id); - if (stmt->loop.next) - pri(" %e;", stmt->loop.next); - pri("_skip%d:;", stmt->loop.id); + pri(") {"); genblock(stmt->loop.body); - pri("}} _brk%d:;\n", stmt->loop.id); + pri("_cont%d:; }", stmt->loop.id); + pri("} _brk%d:;\n", stmt->loop.id); break; case Siswitch: pri("switch (%e) {", &stmt->iswitch.test); -- cgit v1.2.3