@@ -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
0 commit comments