| ... | @@ -504,7 +504,17 @@ pub const Block = struct { | ... | @@ -504,7 +504,17 @@ pub const Block = struct { |
| 504 | }; | 504 | }; |
| 505 | } | 505 | } |
| 506 | | 506 | |
| 507 | pub fn wantSafety(block: *const Block) bool { | 507 | fn wantSafeTypes(block: *const Block) bool { |
| | 508 | return block.want_safety orelse switch (block.sema.pt.zcu.optimizeMode()) { |
| | 509 | .Debug => true, |
| | 510 | .ReleaseSafe => true, |
| | 511 | .ReleaseFast => false, |
| | 512 | .ReleaseSmall => false, |
| | 513 | }; |
| | 514 | } |
| | 515 | |
| | 516 | fn wantSafety(block: *const Block) bool { |
| | 517 | if (block.isComptime()) return false; // runtime safety checks are pointless in comptime blocks |
| 508 | return block.want_safety orelse switch (block.sema.pt.zcu.optimizeMode()) { | 518 | return block.want_safety orelse switch (block.sema.pt.zcu.optimizeMode()) { |
| 509 | .Debug => true, | 519 | .Debug => true, |
| 510 | .ReleaseSafe => true, | 520 | .ReleaseSafe => true, |
| ... | @@ -3294,7 +3304,7 @@ fn zirUnionDecl( | ... | @@ -3294,7 +3304,7 @@ fn zirUnionDecl( |
| 3294 | .tagged | 3304 | .tagged |
| 3295 | else if (small.layout != .auto) | 3305 | else if (small.layout != .auto) |
| 3296 | .none | 3306 | .none |
| 3297 | else switch (block.wantSafety()) { | 3307 | else switch (block.wantSafeTypes()) { |
| 3298 | true => .safety, | 3308 | true => .safety, |
| 3299 | false => .none, | 3309 | false => .none, |
| 3300 | }, | 3310 | }, |
| ... | @@ -22219,7 +22229,7 @@ fn reifyUnion( | ... | @@ -22219,7 +22229,7 @@ fn reifyUnion( |
| 22219 | .tagged | 22229 | .tagged |
| 22220 | else if (layout != .auto) | 22230 | else if (layout != .auto) |
| 22221 | .none | 22231 | .none |
| 22222 | else switch (block.wantSafety()) { | 22232 | else switch (block.wantSafeTypes()) { |
| 22223 | true => .safety, | 22233 | true => .safety, |
| 22224 | false => .none, | 22234 | false => .none, |
| 22225 | }, | 22235 | }, |