This commit is contained in:
gingerBill
2024-02-22 13:59:27 +00:00
+13
View File
@@ -1843,7 +1843,11 @@ gb_internal void lb_build_return_stmt_internal(lbProcedure *p, lbValue res) {
lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr); lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr);
// Check for terminator in the defer stmts
LLVMValueRef instr = LLVMGetLastInstruction(p->curr_block->block);
if (!lb_is_instr_terminating(instr)) {
LLVMBuildRetVoid(p->builder); LLVMBuildRetVoid(p->builder);
}
} else { } else {
LLVMValueRef ret_val = res.value; LLVMValueRef ret_val = res.value;
LLVMTypeRef ret_type = p->abi_function_type->ret.type; LLVMTypeRef ret_type = p->abi_function_type->ret.type;
@@ -1868,9 +1872,14 @@ gb_internal void lb_build_return_stmt_internal(lbProcedure *p, lbValue res) {
} }
lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr); lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr);
// Check for terminator in the defer stmts
LLVMValueRef instr = LLVMGetLastInstruction(p->curr_block->block);
if (!lb_is_instr_terminating(instr)) {
LLVMBuildRet(p->builder, ret_val); LLVMBuildRet(p->builder, ret_val);
} }
} }
}
gb_internal void lb_build_return_stmt(lbProcedure *p, Slice<Ast *> const &return_results) { gb_internal void lb_build_return_stmt(lbProcedure *p, Slice<Ast *> const &return_results) {
lb_ensure_abi_function_type(p->module, p); lb_ensure_abi_function_type(p->module, p);
@@ -1888,7 +1897,11 @@ gb_internal void lb_build_return_stmt(lbProcedure *p, Slice<Ast *> const &return
lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr); lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr);
// Check for terminator in the defer stmts
LLVMValueRef instr = LLVMGetLastInstruction(p->curr_block->block);
if (!lb_is_instr_terminating(instr)) {
LLVMBuildRetVoid(p->builder); LLVMBuildRetVoid(p->builder);
}
return; return;
} else if (return_count == 1) { } else if (return_count == 1) {
Entity *e = tuple->variables[0]; Entity *e = tuple->variables[0];