diff options
| author | 2022-08-24 18:13:58 +0200 | |
|---|---|---|
| committer | 2022-08-24 18:13:58 +0200 | |
| commit | 12e1b45da9b79247f4655332c298c08a2ad5c9b4 (patch) | |
| tree | 387dd065694312a2fcad11be2d2b7d1f3bd75e66 /src | |
| parent | c2c317bf1c0f4c0b76b396a7d33f8c6362d1d300 (diff) | |
do-while
Diffstat (limited to 'src')
| -rw-r--r-- | src/llvm.cff | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/llvm.cff b/src/llvm.cff index 4644ee5..5772f76 100644 --- a/src/llvm.cff +++ b/src/llvm.cff @@ -784,6 +784,19 @@ fn genstmt(f *Fn, block *Block, st *Stmt) void { gen("Brk%d:",loop.id); nop(); + case DoWhile loop; + gen("\tbr label %%Next%d\n", loop.id); + gen("Next%d:", loop.id); + nop(); + genblock(f, loop.body); + gen("\tbr label %%Cont%d\n", loop.id); + gen("Cont%d:", loop.id); + nop(); + gen("\tbr i1 %v, label %%Next%d, label %%Brk%d\n", + llvmbool(f, &loop.test), loop.id, loop.id); + gen("Brk%d:",loop.id); + nop(); + case For loop; genblock(f, loop.ini); gen("\tbr label %%Cont%d\n", loop.id); |