diff options
| author | 2022-08-11 07:53:44 +0200 | |
|---|---|---|
| committer | 2022-08-11 07:53:44 +0200 | |
| commit | c7961d732e5d67e8ea1b0be05e979bf24361f794 (patch) | |
| tree | 07604810c980422332e971d436eea1fac62191f0 /bootstrap/cgen.c | |
| parent | 86aa2d6ab3a003652159fa37828c27744a2cb45d (diff) | |
do-while
Diffstat (limited to 'bootstrap/cgen.c')
| -rw-r--r-- | bootstrap/cgen.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index 9a28829..f79e112 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -347,6 +347,12 @@ genstmt(struct stmt *stmt) { genblock(stmt->loop.body); pri("_cont%d:;} _brk%d:;\n", stmt->loop.id, stmt->loop.id); break; + case Sdowhile: + pri("do {"); + genblock(stmt->loop.body); + pri("_cont%d:;} while (%e); _brk%d:;\n", + stmt->loop.id, &stmt->loop.test, stmt->loop.id); + break; case Sfor: pri("{\n"); for (int i = 0; i < stmt->loop.ini.n; ++i) @@ -566,6 +572,8 @@ liftnested(struct stmt *stmt) { liftnested(blocktostmt(stmt->ifelse.t)); break; case Swhile: + case Sdowhile: + liftnestedex(&stmt->loop.test); liftnested(blocktostmt(stmt->loop.body)); break; case Sfor: |