diff options
Diffstat (limited to 'src/llvm.cff')
| -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); |