aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-09-02 14:05:27 +0300
committerVeikka Tuominen <git@vexu.eu>2022-09-02 17:57:10 +0300
commitdb54cd247ddb8bf7b4225eaaf1e7a851151f8f0b (patch)
tree0fa0f95f5b33a02faa8b46362d0bbd28d6d11d39 /src
parent8b58dab78b8a157a39377654691324dd71f77d23 (diff)
downloadzig-db54cd247ddb8bf7b4225eaaf1e7a851151f8f0b.tar.gz
zig-db54cd247ddb8bf7b4225eaaf1e7a851151f8f0b.zip
Sema: do not emit dbg_inline_end after NoReturn
Closes #12698
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 4c83d31df8..c089794fa9 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -5569,7 +5569,11 @@ fn zirCall(
const param_ty_inst = try sema.addType(param_ty);
try sema.inst_map.put(sema.gpa, inst, param_ty_inst);
- resolved_args[arg_index] = try sema.resolveBody(block, args_body[arg_start..arg_end], inst);
+ const resolved = try sema.resolveBody(block, args_body[arg_start..arg_end], inst);
+ if (sema.typeOf(resolved).zigTypeTag() == .NoReturn) {
+ return resolved;
+ }
+ resolved_args[arg_index] = resolved;
}
return sema.analyzeCall(block, func, func_src, call_src, modifier, ensure_result_used, resolved_args, bound_arg_src);
@@ -6047,7 +6051,7 @@ fn analyzeCall(
break :result try sema.analyzeBlockBody(block, call_src, &child_block, merges);
};
- if (!is_comptime_call) {
+ if (!is_comptime_call and sema.typeOf(result).zigTypeTag() != .NoReturn) {
try sema.emitDbgInline(
block,
module_fn,