aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorjacob gw <jacoblevgw@gmail.com>2021-03-31 20:16:32 -0400
committerAndrew Kelley <andrew@ziglang.org>2021-03-31 18:09:45 -0700
commitfedc9ebd26175bf8309d665f3e1ee6769e8af86d (patch)
treec072a70aee3ef73ee368fc8f01baf3b407577924 /src/Sema.zig
parent3cebaaad1ca16a9e0203ed8c1684d0ce72da9487 (diff)
downloadzig-fedc9ebd26175bf8309d665f3e1ee6769e8af86d.tar.gz
zig-fedc9ebd26175bf8309d665f3e1ee6769e8af86d.zip
stage2: cbe: restore all previously passing tests!
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 504edfe97b..212db3a0e4 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -3737,8 +3737,12 @@ fn analyzeRet(
if (need_coercion) {
if (sema.func) |func| {
const fn_ty = func.owner_decl.typed_value.most_recent.typed_value.ty;
- const casted_operand = try sema.coerce(block, fn_ty.fnReturnType(), operand, src);
- _ = try block.addUnOp(src, Type.initTag(.noreturn), .ret, casted_operand);
+ const fn_ret_ty = fn_ty.fnReturnType();
+ const casted_operand = try sema.coerce(block, fn_ret_ty, operand, src);
+ if (fn_ret_ty.zigTypeTag() == .Void)
+ _ = try block.addNoOp(src, Type.initTag(.noreturn), .retvoid)
+ else
+ _ = try block.addUnOp(src, Type.initTag(.noreturn), .ret, casted_operand);
return always_noreturn;
}
}