summaryrefslogtreecommitdiff
path: root/node/StatementNode.cc
diff options
context:
space:
mode:
Diffstat (limited to 'node/StatementNode.cc')
-rw-r--r--node/StatementNode.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/node/StatementNode.cc b/node/StatementNode.cc
index e29398d..9ae5a9c 100644
--- a/node/StatementNode.cc
+++ b/node/StatementNode.cc
@@ -94,6 +94,7 @@ Value WhileStatementNode::CodeGen() {
llvm::BasicBlock::Create(GlobalLLVMContext, "loop");
llvm::BasicBlock* EndBlock =
llvm::BasicBlock::Create(GlobalLLVMContext, "done");
+ builder->CreateBr(StartBlock);
builder->SetInsertPoint(StartBlock);
Value ExprValue = manager->CreateCast(boolean, expr_->GetType(),
expr_->CodeGen(), context_);
@@ -124,6 +125,7 @@ Value RepeatStatementNode::CodeGen() {
llvm::BasicBlock::Create(GlobalLLVMContext, "loop", body);
llvm::BasicBlock* EndBlock =
llvm::BasicBlock::Create(GlobalLLVMContext, "done");
+ builder->CreateBr(LoopBlock);
builder->SetInsertPoint(LoopBlock);
RepeatBody_->CodeGen();
Value ExprValue = manager->CreateCast(boolean, expr_->GetType(),