From 12e1b45da9b79247f4655332c298c08a2ad5c9b4 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 24 Aug 2022 18:13:58 +0200 Subject: do-while --- src/llvm.cff | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') 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); -- cgit v1.2.3