diff options
-rw-r--r-- | qv4codegen.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/qv4codegen.cpp b/qv4codegen.cpp index 6446a81111..fe754a435c 100644 --- a/qv4codegen.cpp +++ b/qv4codegen.cpp @@ -1973,14 +1973,20 @@ bool Codegen::visit(DebuggerStatement *) bool Codegen::visit(DoWhileStatement *ast) { IR::BasicBlock *loopbody = _function->newBasicBlock(); + IR::BasicBlock *loopcond = _function->newBasicBlock(); IR::BasicBlock *loopend = _function->newBasicBlock(); - enterLoop(ast, loopend, loopbody); + enterLoop(ast, loopend, loopcond); _block->JUMP(loopbody); + _block = loopbody; statement(ast->statement); + _block->JUMP(loopcond); + + _block = loopcond; condition(ast->expression, loopbody, loopend); + _block = loopend; leaveLoop(); |