aboutsummaryrefslogtreecommitdiff
path: root/src/AstGen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-06-06 11:31:54 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-06-06 11:31:54 -0700
commit41bf81dc3231eb763c93eb95b152e7ab8d3c5af8 (patch)
tree6610d43dfab44f104e7894f3d31991ff38821512 /src/AstGen.zig
parent1bdc2b777bc247c52942189666bc484d8e740b16 (diff)
downloadzig-41bf81dc3231eb763c93eb95b152e7ab8d3c5af8.tar.gz
zig-41bf81dc3231eb763c93eb95b152e7ab8d3c5af8.zip
Revert "Treat blocks with "return" as "noreturn""
This reverts commit 135b91aecd9be1f6f5806b667e07e383dd481198. "endsWithBreak()" is not a meaningful question to ask and should not be used this way. A simple example that defeats this logic is: ```zig export fn entry() void { outer: { { break :outer; } return; } } ```
Diffstat (limited to 'src/AstGen.zig')
-rw-r--r--src/AstGen.zig10
1 files changed, 0 insertions, 10 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index 21e5170030..ab5befa4ba 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -1967,9 +1967,6 @@ fn blockExpr(
}
try blockExprStmts(gz, scope, statements);
- if (gz.endsWithNoReturn() and !gz.endsWithBreak()) {
- return Zir.Inst.Ref.unreachable_value;
- }
return rvalue(gz, rl, .void_value, block_node);
}
@@ -9933,13 +9930,6 @@ const GenZir = struct {
return tags[last_inst].isNoReturn();
}
- fn endsWithBreak(gz: GenZir) bool {
- if (gz.isEmpty()) return false;
- const tags = gz.astgen.instructions.items(.tag);
- const last_inst = gz.instructions.items[gz.instructions.items.len - 1];
- return tags[last_inst].isBreak();
- }
-
/// TODO all uses of this should be replaced with uses of `endsWithNoReturn`.
fn refIsNoReturn(gz: GenZir, inst_ref: Zir.Inst.Ref) bool {
if (inst_ref == .unreachable_value) return true;