mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 10:41:43 +00:00
Temporarily fix noreturn bug by creating an actual dummy return instruction after the call for now
This commit is contained in:
parent
4ef0e8c66e
commit
915c002be4
1 changed files with 9 additions and 0 deletions
9
ir.c
9
ir.c
|
@ -1586,10 +1586,12 @@ 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);
|
||||
|
@ -1603,6 +1605,13 @@ ir_instr* ir_block_create_call(ir_block *self, lex_ctx ctx, const char *label, i
|
|||
return NULL;
|
||||
}
|
||||
vec_push(self->instr, in);
|
||||
if (noreturn) {
|
||||
if (!ir_block_create_return(self, ctx, NULL)) {
|
||||
compile_error(ctx, "internal error: failed to generate dummy-return instruction");
|
||||
ir_instr_delete(in);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return in;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue