diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-06-06 11:31:54 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-06-06 11:31:54 -0700 |
| commit | 41bf81dc3231eb763c93eb95b152e7ab8d3c5af8 (patch) | |
| tree | 6610d43dfab44f104e7894f3d31991ff38821512 /src/AstGen.zig | |
| parent | 1bdc2b777bc247c52942189666bc484d8e740b16 (diff) | |
| download | zig-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.zig | 10 |
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; |
