diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-04-22 23:10:02 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-05-16 17:42:51 -0700 |
| commit | 66c3988e5eebd423844d5dd20c762d6fefe20adf (patch) | |
| tree | fa946dcc687f49cf8e20851f15bb1f5028beef93 /src/Sema.zig | |
| parent | eee8fffec70b1d3e2900970dbe836e346e499231 (diff) | |
| download | zig-66c3988e5eebd423844d5dd20c762d6fefe20adf.tar.gz zig-66c3988e5eebd423844d5dd20c762d6fefe20adf.zip | |
stage2: disable error return tracing on unsupported targets
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index ab2a59f44a..1801806084 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -1412,6 +1412,12 @@ fn analyzeAsType( } pub fn setupErrorReturnTrace(sema: *Sema, block: *Block, last_arg_index: usize) !void { + const backend_supports_error_return_tracing = false; + if (!backend_supports_error_return_tracing) { + // TODO implement this feature in all the backends and then delete this branch + return; + } + var err_trace_block = block.makeSubBlock(); err_trace_block.is_comptime = false; defer err_trace_block.instructions.deinit(sema.gpa); @@ -12655,7 +12661,12 @@ fn analyzeRet( return always_noreturn; } - if (sema.fn_ret_ty.isError() and sema.mod.comp.bin_file.options.error_return_tracing) { + // TODO implement this feature in all the backends and then delete this check. + const backend_supports_error_return_tracing = false; + + if (sema.fn_ret_ty.isError() and sema.mod.comp.bin_file.options.error_return_tracing and + backend_supports_error_return_tracing) + { const return_err_fn = try sema.getBuiltin(block, src, "returnError"); const unresolved_stack_trace_ty = try sema.getBuiltinType(block, src, "StackTrace"); const stack_trace_ty = try sema.resolveTypeFields(block, src, unresolved_stack_trace_ty); @@ -13397,9 +13408,14 @@ fn zirErrorReturnTrace( const unresolved_stack_trace_ty = try sema.getBuiltinType(block, src, "StackTrace"); const stack_trace_ty = try sema.resolveTypeFields(block, src, unresolved_stack_trace_ty); const opt_ptr_stack_trace_ty = try Type.Tag.optional_single_mut_pointer.create(sema.arena, stack_trace_ty); + + // TODO implement this feature in all the backends and then delete this check. + const backend_supports_error_return_tracing = false; + if (sema.owner_func != null and sema.owner_func.?.calls_or_awaits_errorable_fn and - sema.mod.comp.bin_file.options.error_return_tracing) + sema.mod.comp.bin_file.options.error_return_tracing and + backend_supports_error_return_tracing) { return block.addTy(.err_return_trace, opt_ptr_stack_trace_ty); } |
