| ... | ... | @@ -9234,8 +9234,7 @@ pub const FuncGen = struct { |
| 9234 | 9234 | |
| 9235 | 9235 | const dest_is_enum = dest_ty.zigTypeTag(zcu) == .@"enum"; |
| 9236 | 9236 | |
| 9237 | | safety: { |
| 9238 | | if (!safety) break :safety; |
| 9237 | bounds_check: { |
| 9239 | 9238 | const dest_scalar = dest_ty.scalarType(zcu); |
| 9240 | 9239 | const operand_scalar = operand_ty.scalarType(zcu); |
| 9241 | 9240 | |
| ... | ... | @@ -9254,7 +9253,7 @@ pub const FuncGen = struct { |
| 9254 | 9253 | }; |
| 9255 | 9254 | }; |
| 9256 | 9255 | |
| 9257 | | if (!have_min_check and !have_max_check) break :safety; |
| 9256 | if (!have_min_check and !have_max_check) break :bounds_check; |
| 9258 | 9257 | |
| 9259 | 9258 | const operand_llvm_ty = try o.lowerType(pt, operand_ty); |
| 9260 | 9259 | const operand_scalar_llvm_ty = try o.lowerType(pt, operand_scalar); |
| ... | ... | @@ -9272,12 +9271,16 @@ pub const FuncGen = struct { |
| 9272 | 9271 | const vec_ty = ok_maybe_vec.typeOfWip(&fg.wip); |
| 9273 | 9272 | break :ok try fg.wip.callIntrinsic(.normal, .none, .@"vector.reduce.and", &.{vec_ty}, &.{ok_maybe_vec}, ""); |
| 9274 | 9273 | } else ok_maybe_vec; |
| 9275 | | const fail_block = try fg.wip.block(1, "IntMinFail"); |
| 9276 | | const ok_block = try fg.wip.block(1, "IntMinOk"); |
| 9277 | | _ = try fg.wip.brCond(ok, ok_block, fail_block, .none); |
| 9278 | | fg.wip.cursor = .{ .block = fail_block }; |
| 9279 | | try fg.buildSimplePanic(panic_id); |
| 9280 | | fg.wip.cursor = .{ .block = ok_block }; |
| 9274 | if (safety) { |
| 9275 | const fail_block = try fg.wip.block(1, "IntMinFail"); |
| 9276 | const ok_block = try fg.wip.block(1, "IntMinOk"); |
| 9277 | _ = try fg.wip.brCond(ok, ok_block, fail_block, .none); |
| 9278 | fg.wip.cursor = .{ .block = fail_block }; |
| 9279 | try fg.buildSimplePanic(panic_id); |
| 9280 | fg.wip.cursor = .{ .block = ok_block }; |
| 9281 | } else { |
| 9282 | _ = try fg.wip.callIntrinsic(.normal, .none, .assume, &.{}, &.{ok}, ""); |
| 9283 | } |
| 9281 | 9284 | } |
| 9282 | 9285 | |
| 9283 | 9286 | if (have_max_check) { |
| ... | ... | @@ -9288,12 +9291,16 @@ pub const FuncGen = struct { |
| 9288 | 9291 | const vec_ty = ok_maybe_vec.typeOfWip(&fg.wip); |
| 9289 | 9292 | break :ok try fg.wip.callIntrinsic(.normal, .none, .@"vector.reduce.and", &.{vec_ty}, &.{ok_maybe_vec}, ""); |
| 9290 | 9293 | } else ok_maybe_vec; |
| 9291 | | const fail_block = try fg.wip.block(1, "IntMaxFail"); |
| 9292 | | const ok_block = try fg.wip.block(1, "IntMaxOk"); |
| 9293 | | _ = try fg.wip.brCond(ok, ok_block, fail_block, .none); |
| 9294 | | fg.wip.cursor = .{ .block = fail_block }; |
| 9295 | | try fg.buildSimplePanic(panic_id); |
| 9296 | | fg.wip.cursor = .{ .block = ok_block }; |
| 9294 | if (safety) { |
| 9295 | const fail_block = try fg.wip.block(1, "IntMaxFail"); |
| 9296 | const ok_block = try fg.wip.block(1, "IntMaxOk"); |
| 9297 | _ = try fg.wip.brCond(ok, ok_block, fail_block, .none); |
| 9298 | fg.wip.cursor = .{ .block = fail_block }; |
| 9299 | try fg.buildSimplePanic(panic_id); |
| 9300 | fg.wip.cursor = .{ .block = ok_block }; |
| 9301 | } else { |
| 9302 | _ = try fg.wip.callIntrinsic(.normal, .none, .assume, &.{}, &.{ok}, ""); |
| 9303 | } |
| 9297 | 9304 | } |
| 9298 | 9305 | } |
| 9299 | 9306 | |