aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/llvm.cff13
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);