From 42b42db67544f6037cfb3aac2d486161bc0e2147 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 13 Oct 2018 13:19:52 +0100 Subject: Add `unimplemented` and `unreachable` procedures; make `os.exit` a diverging procedure --- src/ir.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/ir.cpp') diff --git a/src/ir.cpp b/src/ir.cpp index b51b9c184..7ceda6c10 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -1645,6 +1645,10 @@ irValue *ir_emit_bitcast(irProcedure *proc, irValue *data, Type *type) { return ir_emit(proc, ir_instr_conv(proc, irConv_bitcast, data, ir_type(data), type)); } +void ir_emit_unreachable(irProcedure *proc) { + ir_emit(proc, ir_instr_unreachable(proc)); +} + irValue *ir_emit_transmute(irProcedure *proc, irValue *value, Type *t); irValue *ir_address_from_load_or_generate_local(irProcedure *proc, irValue *val); irValue *ir_emit_struct_ep(irProcedure *proc, irValue *s, i32 index); @@ -1749,6 +1753,7 @@ irValue *ir_emit_call(irProcedure *p, irValue *value, Array args, Pro if (abi_rt != results) { result = ir_emit_transmute(p, result, rt); } + return result; } @@ -1838,10 +1843,6 @@ void ir_close_scope(irProcedure *proc, irDeferExitKind kind, irBlock *block) { -void ir_emit_unreachable(irProcedure *proc) { - ir_emit(proc, ir_instr_unreachable(proc)); -} - void ir_emit_return(irProcedure *proc, irValue *v) { ir_emit_defer_stmts(proc, irDeferExit_Return, nullptr); -- cgit v1.2.3