diff --git a/src/codegen.cpp b/src/codegen.cpp index 2536719..0705fbb 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -603,7 +603,8 @@ namespace AST { builder.block = inner_bb; builder.builder->SetInsertPoint(inner_bb); this->m_loop->codegen(builder, inner_scope, allocator); - builder.builder->CreateBr(after_bb); + if (builder.block->getTerminator() == nullptr) + builder.builder->CreateBr(after_bb); // Loop after-part builder.block = after_bb; @@ -648,7 +649,8 @@ namespace AST { builder.builder->SetInsertPoint(inner_bb); builder.block = inner_bb; this->m_loop->codegen(builder, inner_scope, allocator); - builder.builder->CreateBr(cond_bb); + if (builder.block->getTerminator() == nullptr) + builder.builder->CreateBr(cond_bb); // After builder.builder->SetInsertPoint(after_bb);