diff --git a/ir.c b/ir.c index 009cf76..48cc067 100644 --- a/ir.c +++ b/ir.c @@ -1581,6 +1581,10 @@ ir_instr* ir_block_create_call(ir_block *self, lex_ctx ctx, const char *label, i in = ir_instr_new(ctx, self, (noreturn ? VINSTR_NRCALL : INSTR_CALL0)); if (!in) return NULL; + if (noreturn) { + self->final = true; + self->is_return = true; + } out = ir_value_out(self->owner, label, (func->outtype == TYPE_VOID) ? store_return : store_value, func->outtype); if (!out) { ir_instr_delete(in);