authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-10-17 13:39:40+03:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-10-17 18:53:15+03:00
logbe9a4a1f976ea924f0cbe33f7bb869c450fd823a
tree2810f40546c7aa53467ac4791d38b42625ae7065
parent1e963053d0ff67361b587b046a917375e963d5e9

Sema: handle noreturn in boolBr

Closes #13112

3 files changed, 11 insertions(+), 1 deletions(-)

src/Sema.zig+3-1
...@@ -15652,7 +15652,9 @@ fn zirBoolBr(...@@ -15652,7 +15652,9 @@ fn zirBoolBr(
15652 _ = try lhs_block.addBr(block_inst, lhs_result);15652 _ = try lhs_block.addBr(block_inst, lhs_result);
1565315653
15654 const rhs_result = try sema.resolveBody(rhs_block, body, inst);15654 const rhs_result = try sema.resolveBody(rhs_block, body, inst);
15655 _ = try rhs_block.addBr(block_inst, rhs_result);15655 if (!sema.typeOf(rhs_result).isNoReturn()) {
15656 _ = try rhs_block.addBr(block_inst, rhs_result);
15657 }
1565615658
15657 return finishCondBr(sema, parent_block, &child_block, &then_block, &else_block, lhs, block_inst);15659 return finishCondBr(sema, parent_block, &child_block, &then_block, &else_block, lhs, block_inst);
15658}15660}
test/behavior.zig+1
...@@ -103,6 +103,7 @@ test {...@@ -103,6 +103,7 @@ test {
103 _ = @import("behavior/bugs/12972.zig");103 _ = @import("behavior/bugs/12972.zig");
104 _ = @import("behavior/bugs/12984.zig");104 _ = @import("behavior/bugs/12984.zig");
105 _ = @import("behavior/bugs/13068.zig");105 _ = @import("behavior/bugs/13068.zig");
106 _ = @import("behavior/bugs/13112.zig");
106 _ = @import("behavior/bugs/13128.zig");107 _ = @import("behavior/bugs/13128.zig");
107 _ = @import("behavior/byteswap.zig");108 _ = @import("behavior/byteswap.zig");
108 _ = @import("behavior/byval_arg_var.zig");109 _ = @import("behavior/byval_arg_var.zig");
test/behavior/bugs/13112.zig created+7
...@@ -0,0 +1,7 @@
1fn nice(a: u32, b: u32) bool {
2 return a == 5 or b == 2 or @panic("oh no");
3}
4
5test {
6 _ = nice(2, 2);
7}