authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-03-10 03:31:36+00:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-03-16 08:17:50+00:00
log2a4e06bcb30f71e83b14026bcbade6aac3aece84
tree7af2416d23614ba48803f841af9e4861c0ead8a3
parentaa3db7cc15520228c0b44328198c78a31e194209

Sema: rewrite comptime arithmetic

This commit reworks how Sema handles arithmetic on comptime-known values, fixing many bugs in the process. The general pattern is that arithmetic on comptime-known values is now handled by the new namespace `Sema.arith`. Functions handling comptime arithmetic no longer live on `Value`; this is because some of them can emit compile errors, so some *can't* go on `Value`. Only semantic analysis should really be doing arithmetic on `Value`s anyway, so it makes sense for it to integrate more tightly with `Sema`. This commit also implements more coherent rules surrounding how `undefined` interacts with comptime and mixed-comptime-runtime arithmetic. The rules are as follows. * If an operation cannot trigger Illegal Behavior, and any operand is `undefined`, the result is `undefined`. This includes operations like `0 *| undef`, where the LHS logically *could* be used to determine a defined result. This is partly to simplify the language, but mostly to permit codegen backends to represent `undefined` values as completely invalid states. * If an operation *can* trigger Illegal Behvaior, and any operand is `undefined`, then Illegal Behavior results. This occurs even if the operand in question isn't the one that "decides" illegal behavior; for instance, `undef / 1` is undefined. This is for the same reasons as described above. * An operation which would trigger Illegal Behavior, when evaluated at comptime, instead triggers a compile error. Additionally, if one operand is comptime-known undef, such that the other (runtime-known) operand isn't needed to determine that Illegal Behavior would occur, the compile error is triggered. * The only situation in which an operation with one comptime-known operand has a comptime-known result is if that operand is undefined, in which case the result is either undefined or a compile error per the above rules. This could potentially be loosened in future (for instance, `0 * rt` could be comptime-known 0 with a runtime assertion that `rt` is not undefined), but at least for now, defining it more conservatively simplifies the language and allows us to easily change this in future if desired. This commit fixes many bugs regarding the handling of `undefined`, particularly in vectors. Along with a collection of smaller tests, two very large test cases are added to check arithmetic on `undefined`. The operations which have been rewritten in this PR are: * `+`, `+%`, `+|`, `@addWithOverflow` * `-`, `-%`, `-|`, `@subWithOverflow` * `*`, `*%`, `*|`, `@mulWithOverflow` * `/`, `@divFloor`, `@divTrunc`, `@divExact` * `%`, `@rem`, `@mod` Other arithmetic operations are currently unchanged. Resolves: #22743 Resolves: #22745 Resolves: #22748 Resolves: #22749 Resolves: #22914

27 files changed, 11381 insertions(+), 2665 deletions(-)

src/Sema.zig+387-1366
...@@ -188,6 +188,7 @@ const AnalUnit = InternPool.AnalUnit;...@@ -188,6 +188,7 @@ const AnalUnit = InternPool.AnalUnit;
188const ComptimeAllocIndex = InternPool.ComptimeAllocIndex;188const ComptimeAllocIndex = InternPool.ComptimeAllocIndex;
189const Cache = std.Build.Cache;189const Cache = std.Build.Cache;
190const LowerZon = @import("Sema/LowerZon.zig");190const LowerZon = @import("Sema/LowerZon.zig");
191const arith = @import("Sema/arith.zig");
191192
192pub const default_branch_quota = 1000;193pub const default_branch_quota = 1000;
193pub const default_reference_trace_len = 2;194pub const default_reference_trace_len = 2;
...@@ -2325,11 +2326,11 @@ fn failWithNeededComptime(sema: *Sema, block: *Block, src: LazySrcLoc, reason: ?...@@ -2325,11 +2326,11 @@ fn failWithNeededComptime(sema: *Sema, block: *Block, src: LazySrcLoc, reason: ?
2325 return sema.failWithOwnedErrorMsg(fail_block, msg);2326 return sema.failWithOwnedErrorMsg(fail_block, msg);
2326}2327}
23272328
2328fn failWithUseOfUndef(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {2329pub fn failWithUseOfUndef(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {
2329 return sema.fail(block, src, "use of undefined value here causes undefined behavior", .{});2330 return sema.fail(block, src, "use of undefined value here causes undefined behavior", .{});
2330}2331}
23312332
2332fn failWithDivideByZero(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {2333pub fn failWithDivideByZero(sema: *Sema, block: *Block, src: LazySrcLoc) CompileError {
2333 return sema.fail(block, src, "division by zero here causes undefined behavior", .{});2334 return sema.fail(block, src, "division by zero here causes undefined behavior", .{});
2334}2335}
23352336
...@@ -2391,22 +2392,15 @@ fn failWithErrorSetCodeMissing(...@@ -2391,22 +2392,15 @@ fn failWithErrorSetCodeMissing(
2391 });2392 });
2392}2393}
23932394
2394fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty: Type, val: Value, vector_index: usize) CompileError {2395pub fn failWithIntegerOverflow(sema: *Sema, block: *Block, src: LazySrcLoc, int_ty: Type, val: Value, vector_index: ?usize) CompileError {
2395 const pt = sema.pt;2396 const pt = sema.pt;
2396 const zcu = pt.zcu;2397 return sema.failWithOwnedErrorMsg(block, msg: {
2397 if (int_ty.zigTypeTag(zcu) == .vector) {2398 const msg = try sema.errMsg(src, "overflow of integer type '{}' with value '{}'", .{
2398 const msg = msg: {2399 int_ty.fmt(pt), val.fmtValueSema(pt, sema),
2399 const msg = try sema.errMsg(src, "overflow of vector type '{}' with value '{}'", .{2400 });
2400 int_ty.fmt(pt), val.fmtValueSema(pt, sema),2401 errdefer msg.destroy(sema.gpa);
2401 });2402 if (vector_index) |i| try sema.errNote(src, msg, "when computing vector element at index '{d}'", .{i});
2402 errdefer msg.destroy(sema.gpa);2403 break :msg msg;
2403 try sema.errNote(src, msg, "when computing vector element at index '{d}'", .{vector_index});
2404 break :msg msg;
2405 };
2406 return sema.failWithOwnedErrorMsg(block, msg);
2407 }
2408 return sema.fail(block, src, "overflow of integer type '{}' with value '{}'", .{
2409 int_ty.fmt(pt), val.fmtValueSema(pt, sema),
2410 });2404 });
2411}2405}
24122406
...@@ -10327,7 +10321,9 @@ fn intCast(...@@ -10327,7 +10321,9 @@ fn intCast(
10327 .storage = .{ .repeated_elem = one_scalar.toIntern() },10321 .storage = .{ .repeated_elem = one_scalar.toIntern() },
10328 } })) else one_scalar;10322 } })) else one_scalar;
10329 const range_minus_one = try dest_max_val.shl(one, unsigned_operand_ty, sema.arena, pt);10323 const range_minus_one = try dest_max_val.shl(one, unsigned_operand_ty, sema.arena, pt);
10330 break :range_val try sema.intAdd(range_minus_one, one, unsigned_operand_ty, undefined);10324 const result = try arith.addWithOverflow(sema, unsigned_operand_ty, range_minus_one, one);
10325 assert(result.overflow_bit.compareAllWithZero(.eq, zcu));
10326 break :range_val result.wrapped_result;
10331 } else try pt.getCoerced(dest_max_val, unsigned_operand_ty);10327 } else try pt.getCoerced(dest_max_val, unsigned_operand_ty);
10332 const dest_range = Air.internedToRef(dest_range_val.toIntern());10328 const dest_range = Air.internedToRef(dest_range_val.toIntern());
1033310329
...@@ -12723,10 +12719,9 @@ fn analyzeSwitchRuntimeBlock(...@@ -12723,10 +12719,9 @@ fn analyzeSwitchRuntimeBlock(
1272312719
12724 while (item.compareScalar(.lte, item_last, operand_ty, zcu)) : ({12720 while (item.compareScalar(.lte, item_last, operand_ty, zcu)) : ({
12725 // Previous validation has resolved any possible lazy values.12721 // Previous validation has resolved any possible lazy values.
12726 item = sema.intAddScalar(item, try pt.intValue(operand_ty, 1), operand_ty) catch |err| switch (err) {12722 const result = try arith.incrementDefinedInt(sema, operand_ty, item);
12727 error.Overflow => unreachable,12723 assert(!result.overflow);
12728 else => |e| return e,12724 item = result.val;
12729 };
12730 }) {12725 }) {
12731 cases_len += 1;12726 cases_len += 1;
1273212727
...@@ -14183,8 +14178,8 @@ fn zirShl(...@@ -14183,8 +14178,8 @@ fn zirShl(
14183 // TODO coerce rhs if air_tag is not shl_sat14178 // TODO coerce rhs if air_tag is not shl_sat
14184 const rhs_is_comptime_int = try sema.checkIntType(block, rhs_src, scalar_rhs_ty);14179 const rhs_is_comptime_int = try sema.checkIntType(block, rhs_src, scalar_rhs_ty);
1418514180
14186 const maybe_lhs_val = try sema.resolveValueIntable(lhs);14181 const maybe_lhs_val = try sema.resolveValueResolveLazy(lhs);
14187 const maybe_rhs_val = try sema.resolveValueIntable(rhs);14182 const maybe_rhs_val = try sema.resolveValueResolveLazy(rhs);
1418814183
14189 if (maybe_rhs_val) |rhs_val| {14184 if (maybe_rhs_val) |rhs_val| {
14190 if (rhs_val.isUndef(zcu)) {14185 if (rhs_val.isUndef(zcu)) {
...@@ -14359,8 +14354,8 @@ fn zirShr(...@@ -14359,8 +14354,8 @@ fn zirShr(
14359 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);14354 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
14360 const scalar_ty = lhs_ty.scalarType(zcu);14355 const scalar_ty = lhs_ty.scalarType(zcu);
1436114356
14362 const maybe_lhs_val = try sema.resolveValueIntable(lhs);14357 const maybe_lhs_val = try sema.resolveValueResolveLazy(lhs);
14363 const maybe_rhs_val = try sema.resolveValueIntable(rhs);14358 const maybe_rhs_val = try sema.resolveValueResolveLazy(rhs);
1436414359
14365 const runtime_src = if (maybe_rhs_val) |rhs_val| rs: {14360 const runtime_src = if (maybe_rhs_val) |rhs_val| rs: {
14366 if (rhs_val.isUndef(zcu)) {14361 if (rhs_val.isUndef(zcu)) {
...@@ -14511,8 +14506,8 @@ fn zirBitwise(...@@ -14511,8 +14506,8 @@ fn zirBitwise(
14511 const runtime_src = runtime: {14506 const runtime_src = runtime: {
14512 // TODO: ask the linker what kind of relocations are available, and14507 // TODO: ask the linker what kind of relocations are available, and
14513 // in some cases emit a Value that means "this decl's address AND'd with this operand".14508 // in some cases emit a Value that means "this decl's address AND'd with this operand".
14514 if (try sema.resolveValueIntable(casted_lhs)) |lhs_val| {14509 if (try sema.resolveValueResolveLazy(casted_lhs)) |lhs_val| {
14515 if (try sema.resolveValueIntable(casted_rhs)) |rhs_val| {14510 if (try sema.resolveValueResolveLazy(casted_rhs)) |rhs_val| {
14516 const result_val = switch (air_tag) {14511 const result_val = switch (air_tag) {
14517 .bit_and => try lhs_val.bitwiseAnd(rhs_val, resolved_type, sema.arena, pt),14512 .bit_and => try lhs_val.bitwiseAnd(rhs_val, resolved_type, sema.arena, pt),
14518 .bit_or => try lhs_val.bitwiseOr(rhs_val, resolved_type, sema.arena, pt),14513 .bit_or => try lhs_val.bitwiseOr(rhs_val, resolved_type, sema.arena, pt),
...@@ -15289,8 +15284,8 @@ fn zirNegate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -15289,8 +15284,8 @@ fn zirNegate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
15289 if (rhs_scalar_ty.isAnyFloat()) {15284 if (rhs_scalar_ty.isAnyFloat()) {
15290 // We handle float negation here to ensure negative zero is represented in the bits.15285 // We handle float negation here to ensure negative zero is represented in the bits.
15291 if (try sema.resolveValue(rhs)) |rhs_val| {15286 if (try sema.resolveValue(rhs)) |rhs_val| {
15292 if (rhs_val.isUndef(zcu)) return pt.undefRef(rhs_ty);15287 const result = try arith.negateFloat(sema, rhs_ty, rhs_val);
15293 return Air.internedToRef((try rhs_val.floatNeg(rhs_ty, sema.arena, pt)).toIntern());15288 return Air.internedToRef(result.toIntern());
15294 }15289 }
15295 try sema.requireRuntimeBlock(block, src, null);15290 try sema.requireRuntimeBlock(block, src, null);
15296 return block.addUnOp(if (block.float_mode == .optimized) .neg_optimized else .neg, rhs);15291 return block.addUnOp(if (block.float_mode == .optimized) .neg_optimized else .neg, rhs);
...@@ -15359,24 +15354,22 @@ fn zirDiv(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -15359,24 +15354,22 @@ fn zirDiv(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
15359 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15354 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
15360 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15355 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1536115356
15362 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15357 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
15363 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15358 .override = &.{ lhs_src, rhs_src },
15364 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
15365 });15359 });
1536615360
15367 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15361 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
15368 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);15362 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);
1536915363
15370 const lhs_scalar_ty = lhs_ty.scalarType(zcu);15364 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
15371 const rhs_scalar_ty = rhs_ty.scalarType(zcu);
15372 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);15365 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);
1537315366
15374 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;15367 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;
1537515368
15376 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div);15369 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div);
1537715370
15378 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15371 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
15379 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15372 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1538015373
15381 if ((lhs_ty.zigTypeTag(zcu) == .comptime_float and rhs_ty.zigTypeTag(zcu) == .comptime_int) or15374 if ((lhs_ty.zigTypeTag(zcu) == .comptime_float and rhs_ty.zigTypeTag(zcu) == .comptime_int) or
15382 (lhs_ty.zigTypeTag(zcu) == .comptime_int and rhs_ty.zigTypeTag(zcu) == .comptime_float))15375 (lhs_ty.zigTypeTag(zcu) == .comptime_int and rhs_ty.zigTypeTag(zcu) == .comptime_float))
...@@ -15399,92 +15392,38 @@ fn zirDiv(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -15399,92 +15392,38 @@ fn zirDiv(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
15399 // TODO: emit compile error when .div is used on integers and there would be an15392 // TODO: emit compile error when .div is used on integers and there would be an
15400 // ambiguous result between div_floor and div_trunc.15393 // ambiguous result between div_floor and div_trunc.
1540115394
15402 // For integers:15395 // The rules here are like those in `analyzeArithmetic`:
15403 // If the lhs is zero, then zero is returned regardless of rhs.
15404 // If the rhs is zero, compile error for division by zero.
15405 // If the rhs is undefined, compile error because there is a possible
15406 // value (zero) for which the division would be illegal behavior.
15407 // If the lhs is undefined:
15408 // * if lhs type is signed:
15409 // * if rhs is comptime-known and not -1, result is undefined
15410 // * if rhs is -1 or runtime-known, compile error because there is a
15411 // possible value (-min_int / -1) for which division would be
15412 // illegal behavior.
15413 // * if lhs type is unsigned, undef is returned regardless of rhs.
15414 //15396 //
15415 // For floats:15397 // * If both operands are comptime-known, call the corresponding function in `arith`.
15416 // If the rhs is zero:15398 // Inputs which would be IB at runtime are compile errors.
15417 // * comptime_float: compile error for division by zero.15399 //
15418 // * other float type:15400 // * Otherwise, if one operand is comptime-known `undefined`, we either trigger a compile error
15419 // * if the lhs is zero: QNaN15401 // or return `undefined`, depending on whether this operator can trigger IB.
15420 // * otherwise: +Inf or -Inf depending on lhs sign15402 //
15421 // If the rhs is undefined:15403 // * No other comptime operand determines a comptime result, so remaining cases are runtime ops.
15422 // * comptime_float: compile error because there is a possible
15423 // value (zero) for which the division would be illegal behavior.
15424 // * other float type: result is undefined
15425 // If the lhs is undefined, result is undefined.
15426 switch (scalar_tag) {
15427 .int, .comptime_int, .comptime_float => {
15428 if (maybe_lhs_val) |lhs_val| {
15429 if (!lhs_val.isUndef(zcu)) {
15430 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
15431 const scalar_zero = switch (scalar_tag) {
15432 .comptime_float, .float => try pt.floatValue(resolved_type.scalarType(zcu), 0.0),
15433 .comptime_int, .int => try pt.intValue(resolved_type.scalarType(zcu), 0),
15434 else => unreachable,
15435 };
15436 const zero_val = try sema.splat(resolved_type, scalar_zero);
15437 return Air.internedToRef(zero_val.toIntern());
15438 }
15439 }
15440 }
15441 if (maybe_rhs_val) |rhs_val| {
15442 if (rhs_val.isUndef(zcu)) {
15443 return sema.failWithUseOfUndef(block, rhs_src);
15444 }
15445 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
15446 return sema.failWithDivideByZero(block, rhs_src);
15447 }
15448 // TODO: if the RHS is one, return the LHS directly
15449 }
15450 },
15451 else => {},
15452 }
1545315404
15454 const runtime_src = rs: {15405 const allow_div_zero = !is_int and
15455 if (maybe_lhs_val) |lhs_val| {15406 resolved_type.toIntern() != .comptime_float_type and
15456 if (lhs_val.isUndef(zcu)) {15407 block.float_mode == .strict;
15457 if (lhs_scalar_ty.isSignedInt(zcu) and rhs_scalar_ty.isSignedInt(zcu)) {
15458 if (maybe_rhs_val) |rhs_val| {
15459 if (try sema.compareAll(rhs_val, .neq, try pt.intValue(resolved_type, -1), resolved_type)) {
15460 return pt.undefRef(resolved_type);
15461 }
15462 }
15463 return sema.failWithUseOfUndef(block, rhs_src);
15464 }
15465 return pt.undefRef(resolved_type);
15466 }
1546715408
15468 if (maybe_rhs_val) |rhs_val| {15409 if (maybe_lhs_val) |lhs_val| {
15469 if (is_int) {15410 if (maybe_rhs_val) |rhs_val| {
15470 var overflow_idx: ?usize = null;15411 const result = try arith.div(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src, .div);
15471 const res = try lhs_val.intDiv(rhs_val, resolved_type, &overflow_idx, sema.arena, pt);15412 return Air.internedToRef(result.toIntern());
15472 if (overflow_idx) |vec_idx| {15413 }
15473 return sema.failWithIntegerOverflow(block, src, resolved_type, res, vec_idx);15414 if (allow_div_zero) {
15474 }15415 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15475 return Air.internedToRef(res.toIntern());
15476 } else {
15477 return Air.internedToRef((try lhs_val.floatDiv(rhs_val, resolved_type, sema.arena, pt)).toIntern());
15478 }
15479 } else {
15480 break :rs rhs_src;
15481 }
15482 } else {15416 } else {
15483 break :rs lhs_src;15417 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
15484 }15418 }
15485 };15419 } else if (maybe_rhs_val) |rhs_val| {
1548615420 if (allow_div_zero) {
15487 try sema.requireRuntimeBlock(block, src, runtime_src);15421 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15422 } else {
15423 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
15424 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
15425 }
15426 }
1548815427
15489 if (block.wantSafety()) {15428 if (block.wantSafety()) {
15490 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);15429 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);
...@@ -15525,9 +15464,8 @@ fn zirDivExact(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -15525,9 +15464,8 @@ fn zirDivExact(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
15525 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15464 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
15526 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15465 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1552715466
15528 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15467 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
15529 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15468 .override = &.{ lhs_src, rhs_src },
15530 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
15531 });15469 });
1553215470
15533 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15471 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
...@@ -15540,75 +15478,21 @@ fn zirDivExact(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -15540,75 +15478,21 @@ fn zirDivExact(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
1554015478
15541 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_exact);15479 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_exact);
1554215480
15543 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15481 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
15544 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15482 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1554515483
15546 const runtime_src = rs: {15484 // Because `@divExact` can trigger Illegal Behavior, undefined operands trigger Illegal Behavior.
15547 // For integers:15485
15548 // If the lhs is zero, then zero is returned regardless of rhs.15486 if (maybe_lhs_val) |lhs_val| {
15549 // If the rhs is zero, compile error for division by zero.
15550 // If the rhs is undefined, compile error because there is a possible
15551 // value (zero) for which the division would be illegal behavior.
15552 // If the lhs is undefined, compile error because there is a possible
15553 // value for which the division would result in a remainder.
15554 // TODO: emit runtime safety for if there is a remainder
15555 // TODO: emit runtime safety for division by zero
15556 //
15557 // For floats:
15558 // If the rhs is zero, compile error for division by zero.
15559 // If the rhs is undefined, compile error because there is a possible
15560 // value (zero) for which the division would be illegal behavior.
15561 // If the lhs is undefined, compile error because there is a possible
15562 // value for which the division would result in a remainder.
15563 if (maybe_lhs_val) |lhs_val| {
15564 if (lhs_val.isUndef(zcu)) {
15565 return sema.failWithUseOfUndef(block, rhs_src);
15566 } else {
15567 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
15568 const scalar_zero = switch (scalar_tag) {
15569 .comptime_float, .float => try pt.floatValue(resolved_type.scalarType(zcu), 0.0),
15570 .comptime_int, .int => try pt.intValue(resolved_type.scalarType(zcu), 0),
15571 else => unreachable,
15572 };
15573 const zero_val = try sema.splat(resolved_type, scalar_zero);
15574 return Air.internedToRef(zero_val.toIntern());
15575 }
15576 }
15577 }
15578 if (maybe_rhs_val) |rhs_val| {15487 if (maybe_rhs_val) |rhs_val| {
15579 if (rhs_val.isUndef(zcu)) {15488 const result = try arith.div(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src, .div_exact);
15580 return sema.failWithUseOfUndef(block, rhs_src);15489 return Air.internedToRef(result.toIntern());
15581 }
15582 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
15583 return sema.failWithDivideByZero(block, rhs_src);
15584 }
15585 // TODO: if the RHS is one, return the LHS directly
15586 }15490 }
15587 if (maybe_lhs_val) |lhs_val| {15491 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
15588 if (maybe_rhs_val) |rhs_val| {15492 } else if (maybe_rhs_val) |rhs_val| {
15589 if (is_int) {15493 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
15590 const modulus_val = try lhs_val.intMod(rhs_val, resolved_type, sema.arena, pt);15494 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
15591 if (!(modulus_val.compareAllWithZero(.eq, zcu))) {15495 }
15592 return sema.fail(block, src, "exact division produced remainder", .{});
15593 }
15594 var overflow_idx: ?usize = null;
15595 const res = try lhs_val.intDiv(rhs_val, resolved_type, &overflow_idx, sema.arena, pt);
15596 if (overflow_idx) |vec_idx| {
15597 return sema.failWithIntegerOverflow(block, src, resolved_type, res, vec_idx);
15598 }
15599 return Air.internedToRef(res.toIntern());
15600 } else {
15601 const modulus_val = try lhs_val.floatMod(rhs_val, resolved_type, sema.arena, pt);
15602 if (!(modulus_val.compareAllWithZero(.eq, zcu))) {
15603 return sema.fail(block, src, "exact division produced remainder", .{});
15604 }
15605 return Air.internedToRef((try lhs_val.floatDiv(rhs_val, resolved_type, sema.arena, pt)).toIntern());
15606 }
15607 } else break :rs rhs_src;
15608 } else break :rs lhs_src;
15609 };
15610
15611 try sema.requireRuntimeBlock(block, src, runtime_src);
1561215496
15613 // Depending on whether safety is enabled, we will have a slightly different strategy15497 // Depending on whether safety is enabled, we will have a slightly different strategy
15614 // here. The `div_exact` AIR instruction causes undefined behavior if a remainder15498 // here. The `div_exact` AIR instruction causes undefined behavior if a remainder
...@@ -15691,91 +15575,45 @@ fn zirDivFloor(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -15691,91 +15575,45 @@ fn zirDivFloor(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
15691 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15575 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
15692 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15576 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1569315577
15694 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15578 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
15695 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15579 .override = &.{ lhs_src, rhs_src },
15696 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
15697 });15580 });
1569815581
15699 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15582 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
15700 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);15583 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);
1570115584
15702 const lhs_scalar_ty = lhs_ty.scalarType(zcu);15585 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
15703 const rhs_scalar_ty = rhs_ty.scalarType(zcu);
15704 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);15586 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);
1570515587
15706 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;15588 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;
1570715589
15708 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_floor);15590 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_floor);
1570915591
15710 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15592 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
15711 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15593 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1571215594
15713 const runtime_src = rs: {15595 const allow_div_zero = !is_int and
15714 // For integers:15596 resolved_type.toIntern() != .comptime_float_type and
15715 // If the lhs is zero, then zero is returned regardless of rhs.15597 block.float_mode == .strict;
15716 // If the rhs is zero, compile error for division by zero.15598
15717 // If the rhs is undefined, compile error because there is a possible15599 if (maybe_lhs_val) |lhs_val| {
15718 // value (zero) for which the division would be illegal behavior.
15719 // If the lhs is undefined:
15720 // * if lhs type is signed:
15721 // * if rhs is comptime-known and not -1, result is undefined
15722 // * if rhs is -1 or runtime-known, compile error because there is a
15723 // possible value (-min_int / -1) for which division would be
15724 // illegal behavior.
15725 // * if lhs type is unsigned, undef is returned regardless of rhs.
15726 // TODO: emit runtime safety for division by zero
15727 //
15728 // For floats:
15729 // If the rhs is zero, compile error for division by zero.
15730 // If the rhs is undefined, compile error because there is a possible
15731 // value (zero) for which the division would be illegal behavior.
15732 // If the lhs is undefined, result is undefined.
15733 if (maybe_lhs_val) |lhs_val| {
15734 if (!lhs_val.isUndef(zcu)) {
15735 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
15736 const scalar_zero = switch (scalar_tag) {
15737 .comptime_float, .float => try pt.floatValue(resolved_type.scalarType(zcu), 0.0),
15738 .comptime_int, .int => try pt.intValue(resolved_type.scalarType(zcu), 0),
15739 else => unreachable,
15740 };
15741 const zero_val = try sema.splat(resolved_type, scalar_zero);
15742 return Air.internedToRef(zero_val.toIntern());
15743 }
15744 }
15745 }
15746 if (maybe_rhs_val) |rhs_val| {15600 if (maybe_rhs_val) |rhs_val| {
15747 if (rhs_val.isUndef(zcu)) {15601 const result = try arith.div(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src, .div_floor);
15748 return sema.failWithUseOfUndef(block, rhs_src);15602 return Air.internedToRef(result.toIntern());
15749 }
15750 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
15751 return sema.failWithDivideByZero(block, rhs_src);
15752 }
15753 // TODO: if the RHS is one, return the LHS directly
15754 }15603 }
15755 if (maybe_lhs_val) |lhs_val| {15604 if (allow_div_zero) {
15756 if (lhs_val.isUndef(zcu)) {15605 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15757 if (lhs_scalar_ty.isSignedInt(zcu) and rhs_scalar_ty.isSignedInt(zcu)) {15606 } else {
15758 if (maybe_rhs_val) |rhs_val| {15607 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
15759 if (try sema.compareAll(rhs_val, .neq, try pt.intValue(resolved_type, -1), resolved_type)) {15608 }
15760 return pt.undefRef(resolved_type);15609 } else if (maybe_rhs_val) |rhs_val| {
15761 }15610 if (allow_div_zero) {
15762 }15611 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15763 return sema.failWithUseOfUndef(block, rhs_src);15612 } else {
15764 }15613 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
15765 return pt.undefRef(resolved_type);15614 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
15766 }15615 }
1576715616 }
15768 if (maybe_rhs_val) |rhs_val| {
15769 if (is_int) {
15770 return Air.internedToRef((try lhs_val.intDivFloor(rhs_val, resolved_type, sema.arena, pt)).toIntern());
15771 } else {
15772 return Air.internedToRef((try lhs_val.floatDivFloor(rhs_val, resolved_type, sema.arena, pt)).toIntern());
15773 }
15774 } else break :rs rhs_src;
15775 } else break :rs lhs_src;
15776 };
15777
15778 try sema.requireRuntimeBlock(block, src, runtime_src);
1577915617
15780 if (block.wantSafety()) {15618 if (block.wantSafety()) {
15781 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);15619 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);
...@@ -15802,95 +15640,45 @@ fn zirDivTrunc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -15802,95 +15640,45 @@ fn zirDivTrunc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
15802 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15640 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
15803 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15641 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1580415642
15805 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15643 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
15806 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15644 .override = &.{ lhs_src, rhs_src },
15807 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
15808 });15645 });
1580915646
15810 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15647 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
15811 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);15648 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);
1581215649
15813 const lhs_scalar_ty = lhs_ty.scalarType(zcu);15650 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
15814 const rhs_scalar_ty = rhs_ty.scalarType(zcu);
15815 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);15651 const scalar_tag = resolved_type.scalarType(zcu).zigTypeTag(zcu);
1581615652
15817 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;15653 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;
1581815654
15819 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_trunc);15655 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .div_trunc);
1582015656
15821 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15657 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
15822 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15658 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1582315659
15824 const runtime_src = rs: {15660 const allow_div_zero = !is_int and
15825 // For integers:15661 resolved_type.toIntern() != .comptime_float_type and
15826 // If the lhs is zero, then zero is returned regardless of rhs.15662 block.float_mode == .strict;
15827 // If the rhs is zero, compile error for division by zero.15663
15828 // If the rhs is undefined, compile error because there is a possible15664 if (maybe_lhs_val) |lhs_val| {
15829 // value (zero) for which the division would be illegal behavior.
15830 // If the lhs is undefined:
15831 // * if lhs type is signed:
15832 // * if rhs is comptime-known and not -1, result is undefined
15833 // * if rhs is -1 or runtime-known, compile error because there is a
15834 // possible value (-min_int / -1) for which division would be
15835 // illegal behavior.
15836 // * if lhs type is unsigned, undef is returned regardless of rhs.
15837 // TODO: emit runtime safety for division by zero
15838 //
15839 // For floats:
15840 // If the rhs is zero, compile error for division by zero.
15841 // If the rhs is undefined, compile error because there is a possible
15842 // value (zero) for which the division would be illegal behavior.
15843 // If the lhs is undefined, result is undefined.
15844 if (maybe_lhs_val) |lhs_val| {
15845 if (!lhs_val.isUndef(zcu)) {
15846 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
15847 const scalar_zero = switch (scalar_tag) {
15848 .comptime_float, .float => try pt.floatValue(resolved_type.scalarType(zcu), 0.0),
15849 .comptime_int, .int => try pt.intValue(resolved_type.scalarType(zcu), 0),
15850 else => unreachable,
15851 };
15852 const zero_val = try sema.splat(resolved_type, scalar_zero);
15853 return Air.internedToRef(zero_val.toIntern());
15854 }
15855 }
15856 }
15857 if (maybe_rhs_val) |rhs_val| {15665 if (maybe_rhs_val) |rhs_val| {
15858 if (rhs_val.isUndef(zcu)) {15666 const result = try arith.div(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src, .div_trunc);
15859 return sema.failWithUseOfUndef(block, rhs_src);15667 return Air.internedToRef(result.toIntern());
15860 }
15861 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
15862 return sema.failWithDivideByZero(block, rhs_src);
15863 }
15864 }15668 }
15865 if (maybe_lhs_val) |lhs_val| {15669 if (allow_div_zero) {
15866 if (lhs_val.isUndef(zcu)) {15670 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15867 if (lhs_scalar_ty.isSignedInt(zcu) and rhs_scalar_ty.isSignedInt(zcu)) {15671 } else {
15868 if (maybe_rhs_val) |rhs_val| {15672 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
15869 if (try sema.compareAll(rhs_val, .neq, try pt.intValue(resolved_type, -1), resolved_type)) {15673 }
15870 return pt.undefRef(resolved_type);15674 } else if (maybe_rhs_val) |rhs_val| {
15871 }15675 if (allow_div_zero) {
15872 }15676 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15873 return sema.failWithUseOfUndef(block, rhs_src);15677 } else {
15874 }15678 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
15875 return pt.undefRef(resolved_type);15679 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
15876 }15680 }
1587715681 }
15878 if (maybe_rhs_val) |rhs_val| {
15879 if (is_int) {
15880 var overflow_idx: ?usize = null;
15881 const res = try lhs_val.intDiv(rhs_val, resolved_type, &overflow_idx, sema.arena, pt);
15882 if (overflow_idx) |vec_idx| {
15883 return sema.failWithIntegerOverflow(block, src, resolved_type, res, vec_idx);
15884 }
15885 return Air.internedToRef(res.toIntern());
15886 } else {
15887 return Air.internedToRef((try lhs_val.floatDivTrunc(rhs_val, resolved_type, sema.arena, pt)).toIntern());
15888 }
15889 } else break :rs rhs_src;
15890 } else break :rs lhs_src;
15891 };
15892
15893 try sema.requireRuntimeBlock(block, src, runtime_src);
1589415682
15895 if (block.wantSafety()) {15683 if (block.wantSafety()) {
15896 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);15684 try sema.addDivIntOverflowSafety(block, src, resolved_type, lhs_scalar_ty, maybe_lhs_val, maybe_rhs_val, casted_lhs, casted_rhs, is_int);
...@@ -15939,46 +15727,81 @@ fn addDivIntOverflowSafety(...@@ -15939,46 +15727,81 @@ fn addDivIntOverflowSafety(
15939 if (try rhs_val.compareAll(.neq, neg_one, resolved_type, pt)) return;15727 if (try rhs_val.compareAll(.neq, neg_one, resolved_type, pt)) return;
15940 }15728 }
1594115729
15942 var ok: Air.Inst.Ref = .none;
15943 if (resolved_type.zigTypeTag(zcu) == .vector) {15730 if (resolved_type.zigTypeTag(zcu) == .vector) {
15944 if (maybe_lhs_val == null) {15731 const vec_len = resolved_type.vectorLen(zcu);
15732
15733 // This is a bool vector whose elements are true if the LHS element does NOT equal `min_int`.
15734 const lhs_ok: Air.Inst.Ref = if (maybe_lhs_val) |lhs_val| ok: {
15735 // The operand is comptime-known; intern a constant bool vector for the potentially unsafe elements.
15736 const min_int_scalar = try min_int.elemValue(pt, 0);
15737 const elems_ok = try sema.arena.alloc(InternPool.Index, vec_len);
15738 for (elems_ok, 0..) |*elem_ok, elem_idx| {
15739 const elem_val = try lhs_val.elemValue(pt, elem_idx);
15740 elem_ok.* = if (elem_val.eqlScalarNum(min_int_scalar, zcu)) .bool_false else .bool_true;
15741 }
15742 break :ok Air.internedToRef(try pt.intern(.{ .aggregate = .{
15743 .ty = (try pt.vectorType(.{
15744 .len = vec_len,
15745 .child = .bool_type,
15746 })).toIntern(),
15747 .storage = .{ .elems = elems_ok },
15748 } }));
15749 } else ok: {
15750 // The operand isn't comptime-known; add a runtime comparison.
15945 const min_int_ref = Air.internedToRef(min_int.toIntern());15751 const min_int_ref = Air.internedToRef(min_int.toIntern());
15946 ok = try block.addCmpVector(casted_lhs, min_int_ref, .neq);15752 break :ok try block.addCmpVector(casted_lhs, min_int_ref, .neq);
15947 }15753 };
15948 if (maybe_rhs_val == null) {15754
15755 // This is a bool vector whose elements are true if the RHS element does NOT equal -1.
15756 const rhs_ok: Air.Inst.Ref = if (maybe_rhs_val) |rhs_val| ok: {
15757 // The operand is comptime-known; intern a constant bool vector for the potentially unsafe elements.
15758 const elems_ok = try sema.arena.alloc(InternPool.Index, vec_len);
15759 for (elems_ok, 0..) |*elem_ok, elem_idx| {
15760 const elem_val = try rhs_val.elemValue(pt, elem_idx);
15761 elem_ok.* = if (elem_val.eqlScalarNum(neg_one_scalar, zcu)) .bool_false else .bool_true;
15762 }
15763 break :ok Air.internedToRef(try pt.intern(.{ .aggregate = .{
15764 .ty = (try pt.vectorType(.{
15765 .len = vec_len,
15766 .child = .bool_type,
15767 })).toIntern(),
15768 .storage = .{ .elems = elems_ok },
15769 } }));
15770 } else ok: {
15771 // The operand isn't comptime-known; add a runtime comparison.
15949 const neg_one_ref = Air.internedToRef(neg_one.toIntern());15772 const neg_one_ref = Air.internedToRef(neg_one.toIntern());
15950 const rhs_ok = try block.addCmpVector(casted_rhs, neg_one_ref, .neq);15773 break :ok try block.addCmpVector(casted_rhs, neg_one_ref, .neq);
15951 if (ok == .none) {15774 };
15952 ok = rhs_ok;15775
15953 } else {15776 const ok = try block.addInst(.{
15954 ok = try block.addBinOp(.bool_or, ok, rhs_ok);
15955 }
15956 }
15957 assert(ok != .none);
15958 ok = try block.addInst(.{
15959 .tag = .reduce,15777 .tag = .reduce,
15960 .data = .{ .reduce = .{15778 .data = .{ .reduce = .{
15961 .operand = ok,15779 .operand = try block.addBinOp(.bool_or, lhs_ok, rhs_ok),
15962 .operation = .And,15780 .operation = .And,
15963 } },15781 } },
15964 });15782 });
15783 try sema.addSafetyCheck(block, src, ok, .integer_overflow);
15965 } else {15784 } else {
15966 if (maybe_lhs_val == null) {15785 const lhs_ok: Air.Inst.Ref = if (maybe_lhs_val == null) ok: {
15967 const min_int_ref = Air.internedToRef(min_int.toIntern());15786 const min_int_ref = Air.internedToRef(min_int.toIntern());
15968 ok = try block.addBinOp(.cmp_neq, casted_lhs, min_int_ref);15787 break :ok try block.addBinOp(.cmp_neq, casted_lhs, min_int_ref);
15969 }15788 } else .none; // means false
15970 if (maybe_rhs_val == null) {15789 const rhs_ok: Air.Inst.Ref = if (maybe_rhs_val == null) ok: {
15971 const neg_one_ref = Air.internedToRef(neg_one.toIntern());15790 const neg_one_ref = Air.internedToRef(neg_one.toIntern());
15972 const rhs_ok = try block.addBinOp(.cmp_neq, casted_rhs, neg_one_ref);15791 break :ok try block.addBinOp(.cmp_neq, casted_rhs, neg_one_ref);
15973 if (ok == .none) {15792 } else .none; // means false
15974 ok = rhs_ok;15793
15975 } else {15794 const ok = if (lhs_ok != .none and rhs_ok != .none)
15976 ok = try block.addBinOp(.bool_or, ok, rhs_ok);15795 try block.addBinOp(.bool_or, lhs_ok, rhs_ok)
15977 }15796 else if (lhs_ok != .none)
15978 }15797 lhs_ok
15979 assert(ok != .none);15798 else if (rhs_ok != .none)
15799 rhs_ok
15800 else
15801 unreachable;
15802
15803 try sema.addSafetyCheck(block, src, ok, .integer_overflow);
15980 }15804 }
15981 try sema.addSafetyCheck(block, src, ok, .integer_overflow);
15982}15805}
1598315806
15984fn addDivByZeroSafety(15807fn addDivByZeroSafety(
...@@ -16046,13 +15869,10 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -16046,13 +15869,10 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
16046 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15869 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
16047 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15870 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1604815871
16049 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15872 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
16050 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15873 .override = &.{ lhs_src, rhs_src },
16051 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
16052 });15874 });
1605315875
16054 const is_vector = resolved_type.zigTypeTag(zcu) == .vector;
16055
16056 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15876 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
16057 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);15877 const casted_rhs = try sema.coerce(block, resolved_type, rhs, rhs_src);
1605815878
...@@ -16064,96 +15884,66 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -16064,96 +15884,66 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
1606415884
16065 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .mod_rem);15885 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .mod_rem);
1606615886
16067 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15887 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
16068 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15888 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1606915889
16070 const runtime_src = rs: {15890 const lhs_maybe_negative = a: {
16071 // For integers:15891 if (lhs_scalar_ty.isUnsignedInt(zcu)) break :a false;
16072 // Either operand being undef is a compile error because there exists15892 const lhs_val = maybe_lhs_val orelse break :a true;
16073 // a possible value (TODO what is it?) that would invoke illegal behavior.15893 if (lhs_val.compareAllWithZero(.gte, zcu)) break :a false;
16074 // TODO: can lhs undef be handled better?15894 break :a true;
16075 //15895 };
16076 // For floats:15896 const rhs_maybe_negative = a: {
16077 // If the rhs is zero, compile error for division by zero.15897 if (rhs_scalar_ty.isUnsignedInt(zcu)) break :a false;
16078 // If the rhs is undefined, compile error because there is a possible15898 const rhs_val = maybe_rhs_val orelse break :a true;
16079 // value (zero) for which the division would be illegal behavior.15899 if (rhs_val.compareAllWithZero(.gte, zcu)) break :a false;
16080 // If the lhs is undefined, result is undefined.15900 break :a true;
16081 //15901 };
16082 // For either one: if the result would be different between @mod and @rem,15902
16083 // then emit a compile error saying you have to pick one.15903 if (maybe_lhs_val) |lhs_val| {
16084 if (is_int) {
16085 if (maybe_lhs_val) |lhs_val| {
16086 if (lhs_val.isUndef(zcu)) {
16087 return sema.failWithUseOfUndef(block, lhs_src);
16088 }
16089 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
16090 const scalar_zero = switch (scalar_tag) {
16091 .comptime_float, .float => try pt.floatValue(resolved_type.scalarType(zcu), 0.0),
16092 .comptime_int, .int => try pt.intValue(resolved_type.scalarType(zcu), 0),
16093 else => unreachable,
16094 };
16095 const zero_val = if (is_vector) Value.fromInterned(try pt.intern(.{ .aggregate = .{
16096 .ty = resolved_type.toIntern(),
16097 .storage = .{ .repeated_elem = scalar_zero.toIntern() },
16098 } })) else scalar_zero;
16099 return Air.internedToRef(zero_val.toIntern());
16100 }
16101 } else if (lhs_scalar_ty.isSignedInt(zcu)) {
16102 return sema.failWithModRemNegative(block, lhs_src, lhs_ty, rhs_ty);
16103 }
16104 if (maybe_rhs_val) |rhs_val| {
16105 if (rhs_val.isUndef(zcu)) {
16106 return sema.failWithUseOfUndef(block, rhs_src);
16107 }
16108 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
16109 return sema.failWithDivideByZero(block, rhs_src);
16110 }
16111 if (!(try rhs_val.compareAllWithZeroSema(.gte, pt))) {
16112 return sema.failWithModRemNegative(block, rhs_src, lhs_ty, rhs_ty);
16113 }
16114 if (maybe_lhs_val) |lhs_val| {
16115 const rem_result = try sema.intRem(resolved_type, lhs_val, rhs_val);
16116 // If this answer could possibly be different by doing `intMod`,
16117 // we must emit a compile error. Otherwise, it's OK.
16118 if (!(try lhs_val.compareAllWithZeroSema(.gte, pt)) and
16119 !(try rem_result.compareAllWithZeroSema(.eq, pt)))
16120 {
16121 return sema.failWithModRemNegative(block, lhs_src, lhs_ty, rhs_ty);
16122 }
16123 return Air.internedToRef(rem_result.toIntern());
16124 }
16125 break :rs lhs_src;
16126 } else if (rhs_scalar_ty.isSignedInt(zcu)) {
16127 return sema.failWithModRemNegative(block, rhs_src, lhs_ty, rhs_ty);
16128 } else {
16129 break :rs rhs_src;
16130 }
16131 }
16132 // float operands
16133 if (maybe_rhs_val) |rhs_val| {15904 if (maybe_rhs_val) |rhs_val| {
16134 if (rhs_val.isUndef(zcu)) {15905 const result = try arith.modRem(sema, block, resolved_type, lhs_val, rhs_val, lhs_src, rhs_src, .rem);
16135 return sema.failWithUseOfUndef(block, rhs_src);15906 if (lhs_maybe_negative or rhs_maybe_negative) {
16136 }15907 if (!result.compareAllWithZero(.eq, zcu)) {
16137 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {15908 // Non-zero result means ambiguity between mod and rem
16138 return sema.failWithDivideByZero(block, rhs_src);15909 return sema.failWithModRemNegative(block, src: {
16139 }15910 if (lhs_maybe_negative) break :src lhs_src;
16140 if (!(try rhs_val.compareAllWithZeroSema(.gte, pt))) {15911 if (rhs_maybe_negative) break :src rhs_src;
16141 return sema.failWithModRemNegative(block, rhs_src, lhs_ty, rhs_ty);15912 unreachable;
16142 }15913 }, lhs_ty, rhs_ty);
16143 if (maybe_lhs_val) |lhs_val| {
16144 if (lhs_val.isUndef(zcu) or !(try lhs_val.compareAllWithZeroSema(.gte, pt))) {
16145 return sema.failWithModRemNegative(block, lhs_src, lhs_ty, rhs_ty);
16146 }15914 }
16147 return Air.internedToRef((try lhs_val.floatRem(rhs_val, resolved_type, sema.arena, pt)).toIntern());
16148 } else {
16149 return sema.failWithModRemNegative(block, lhs_src, lhs_ty, rhs_ty);
16150 }15915 }
16151 } else {15916 return Air.internedToRef(result.toIntern());
16152 return sema.failWithModRemNegative(block, rhs_src, lhs_ty, rhs_ty);
16153 }15917 }
16154 };15918 }
1615515919
16156 try sema.requireRuntimeBlock(block, src, runtime_src);15920 // Result not comptime-known, so floats and signed integers are illegal due to mod/rem ambiguity
15921 if (lhs_maybe_negative or rhs_maybe_negative) {
15922 return sema.failWithModRemNegative(block, src: {
15923 if (lhs_maybe_negative) break :src lhs_src;
15924 if (rhs_maybe_negative) break :src rhs_src;
15925 unreachable;
15926 }, lhs_ty, rhs_ty);
15927 }
15928
15929 const allow_div_zero = !is_int and
15930 resolved_type.toIntern() != .comptime_float_type and
15931 block.float_mode == .strict;
15932
15933 if (maybe_lhs_val) |lhs_val| {
15934 if (allow_div_zero) {
15935 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15936 } else {
15937 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
15938 }
15939 } else if (maybe_rhs_val) |rhs_val| {
15940 if (allow_div_zero) {
15941 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
15942 } else {
15943 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
15944 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
15945 }
15946 }
1615715947
16158 if (block.wantSafety()) {15948 if (block.wantSafety()) {
16159 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);15949 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);
...@@ -16163,58 +15953,6 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -16163,58 +15953,6 @@ fn zirModRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
16163 return block.addBinOp(air_tag, casted_lhs, casted_rhs);15953 return block.addBinOp(air_tag, casted_lhs, casted_rhs);
16164}15954}
1616515955
16166fn intRem(
16167 sema: *Sema,
16168 ty: Type,
16169 lhs: Value,
16170 rhs: Value,
16171) CompileError!Value {
16172 const pt = sema.pt;
16173 const zcu = pt.zcu;
16174 if (ty.zigTypeTag(zcu) == .vector) {
16175 const result_data = try sema.arena.alloc(InternPool.Index, ty.vectorLen(zcu));
16176 const scalar_ty = ty.scalarType(zcu);
16177 for (result_data, 0..) |*scalar, i| {
16178 const lhs_elem = try lhs.elemValue(pt, i);
16179 const rhs_elem = try rhs.elemValue(pt, i);
16180 scalar.* = (try sema.intRemScalar(lhs_elem, rhs_elem, scalar_ty)).toIntern();
16181 }
16182 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
16183 .ty = ty.toIntern(),
16184 .storage = .{ .elems = result_data },
16185 } }));
16186 }
16187 return sema.intRemScalar(lhs, rhs, ty);
16188}
16189
16190fn intRemScalar(sema: *Sema, lhs: Value, rhs: Value, scalar_ty: Type) CompileError!Value {
16191 const pt = sema.pt;
16192 // TODO is this a performance issue? maybe we should try the operation without
16193 // resorting to BigInt first.
16194 var lhs_space: Value.BigIntSpace = undefined;
16195 var rhs_space: Value.BigIntSpace = undefined;
16196 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
16197 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
16198 const limbs_q = try sema.arena.alloc(
16199 math.big.Limb,
16200 lhs_bigint.limbs.len,
16201 );
16202 const limbs_r = try sema.arena.alloc(
16203 math.big.Limb,
16204 // TODO: consider reworking Sema to re-use Values rather than
16205 // always producing new Value objects.
16206 rhs_bigint.limbs.len,
16207 );
16208 const limbs_buffer = try sema.arena.alloc(
16209 math.big.Limb,
16210 math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
16211 );
16212 var result_q = math.big.int.Mutable{ .limbs = limbs_q, .positive = undefined, .len = undefined };
16213 var result_r = math.big.int.Mutable{ .limbs = limbs_r, .positive = undefined, .len = undefined };
16214 result_q.divTrunc(&result_r, lhs_bigint, rhs_bigint, limbs_buffer);
16215 return pt.intValue_big(scalar_ty, result_r.toConst());
16216}
16217
16218fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {15956fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
16219 const pt = sema.pt;15957 const pt = sema.pt;
16220 const zcu = pt.zcu;15958 const zcu = pt.zcu;
...@@ -16232,9 +15970,8 @@ fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -16232,9 +15970,8 @@ fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
16232 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);15970 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
16233 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);15971 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1623415972
16235 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };15973 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
16236 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{15974 .override = &.{ lhs_src, rhs_src },
16237 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
16238 });15975 });
1623915976
16240 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);15977 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
...@@ -16246,62 +15983,31 @@ fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -16246,62 +15983,31 @@ fn zirMod(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
1624615983
16247 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .mod);15984 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .mod);
1624815985
16249 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);15986 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
16250 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);15987 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1625115988
16252 const runtime_src = rs: {15989 const allow_div_zero = !is_int and
16253 // For integers:15990 resolved_type.toIntern() != .comptime_float_type and
16254 // Either operand being undef is a compile error because there exists15991 block.float_mode == .strict;
16255 // a possible value (TODO what is it?) that would invoke illegal behavior.15992
16256 // TODO: can lhs zero be handled better?15993 if (maybe_lhs_val) |lhs_val| {
16257 // TODO: can lhs undef be handled better?
16258 //
16259 // For floats:
16260 // If the rhs is zero, compile error for division by zero.
16261 // If the rhs is undefined, compile error because there is a possible
16262 // value (zero) for which the division would be illegal behavior.
16263 // If the lhs is undefined, result is undefined.
16264 if (is_int) {
16265 if (maybe_lhs_val) |lhs_val| {
16266 if (lhs_val.isUndef(zcu)) {
16267 return sema.failWithUseOfUndef(block, lhs_src);
16268 }
16269 }
16270 if (maybe_rhs_val) |rhs_val| {
16271 if (rhs_val.isUndef(zcu)) {
16272 return sema.failWithUseOfUndef(block, rhs_src);
16273 }
16274 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
16275 return sema.failWithDivideByZero(block, rhs_src);
16276 }
16277 if (maybe_lhs_val) |lhs_val| {
16278 return Air.internedToRef((try lhs_val.intMod(rhs_val, resolved_type, sema.arena, pt)).toIntern());
16279 }
16280 break :rs lhs_src;
16281 } else {
16282 break :rs rhs_src;
16283 }
16284 }
16285 // float operands
16286 if (maybe_rhs_val) |rhs_val| {15994 if (maybe_rhs_val) |rhs_val| {
16287 if (rhs_val.isUndef(zcu)) {15995 const result = try arith.modRem(sema, block, resolved_type, lhs_val, rhs_val, lhs_src, rhs_src, .mod);
16288 return sema.failWithUseOfUndef(block, rhs_src);15996 return Air.internedToRef(result.toIntern());
16289 }
16290 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
16291 return sema.failWithDivideByZero(block, rhs_src);
16292 }
16293 }15997 }
16294 if (maybe_lhs_val) |lhs_val| {15998 if (allow_div_zero) {
16295 if (lhs_val.isUndef(zcu)) {15999 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16296 return pt.undefRef(resolved_type);16000 } else {
16297 }16001 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
16298 if (maybe_rhs_val) |rhs_val| {16002 }
16299 return Air.internedToRef((try lhs_val.floatMod(rhs_val, resolved_type, sema.arena, pt)).toIntern());16003 } else if (maybe_rhs_val) |rhs_val| {
16300 } else break :rs rhs_src;16004 if (allow_div_zero) {
16301 } else break :rs lhs_src;16005 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16302 };16006 } else {
1630316007 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
16304 try sema.requireRuntimeBlock(block, src, runtime_src);16008 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
16009 }
16010 }
1630516011
16306 if (block.wantSafety()) {16012 if (block.wantSafety()) {
16307 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);16013 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);
...@@ -16328,9 +16034,8 @@ fn zirRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -16328,9 +16034,8 @@ fn zirRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
16328 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);16034 try sema.checkVectorizableBinaryOperands(block, src, lhs_ty, rhs_ty, lhs_src, rhs_src);
16329 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);16035 try sema.checkInvalidPtrIntArithmetic(block, src, lhs_ty);
1633016036
16331 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };16037 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
16332 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{16038 .override = &.{ lhs_src, rhs_src },
16333 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
16334 });16039 });
1633516040
16336 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);16041 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
...@@ -16342,62 +16047,31 @@ fn zirRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins...@@ -16342,62 +16047,31 @@ fn zirRem(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins
1634216047
16343 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .rem);16048 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, .rem);
1634416049
16345 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);16050 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
16346 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);16051 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
1634716052
16348 const runtime_src = rs: {16053 const allow_div_zero = !is_int and
16349 // For integers:16054 resolved_type.toIntern() != .comptime_float_type and
16350 // Either operand being undef is a compile error because there exists16055 block.float_mode == .strict;
16351 // a possible value (TODO what is it?) that would invoke illegal behavior.16056
16352 // TODO: can lhs zero be handled better?16057 if (maybe_lhs_val) |lhs_val| {
16353 // TODO: can lhs undef be handled better?
16354 //
16355 // For floats:
16356 // If the rhs is zero, compile error for division by zero.
16357 // If the rhs is undefined, compile error because there is a possible
16358 // value (zero) for which the division would be illegal behavior.
16359 // If the lhs is undefined, result is undefined.
16360 if (is_int) {
16361 if (maybe_lhs_val) |lhs_val| {
16362 if (lhs_val.isUndef(zcu)) {
16363 return sema.failWithUseOfUndef(block, lhs_src);
16364 }
16365 }
16366 if (maybe_rhs_val) |rhs_val| {
16367 if (rhs_val.isUndef(zcu)) {
16368 return sema.failWithUseOfUndef(block, rhs_src);
16369 }
16370 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
16371 return sema.failWithDivideByZero(block, rhs_src);
16372 }
16373 if (maybe_lhs_val) |lhs_val| {
16374 return Air.internedToRef((try sema.intRem(resolved_type, lhs_val, rhs_val)).toIntern());
16375 }
16376 break :rs lhs_src;
16377 } else {
16378 break :rs rhs_src;
16379 }
16380 }
16381 // float operands
16382 if (maybe_rhs_val) |rhs_val| {16058 if (maybe_rhs_val) |rhs_val| {
16383 if (rhs_val.isUndef(zcu)) {16059 const result = try arith.modRem(sema, block, resolved_type, lhs_val, rhs_val, lhs_src, rhs_src, .rem);
16384 return sema.failWithUseOfUndef(block, rhs_src);16060 return Air.internedToRef(result.toIntern());
16385 }
16386 if (!(try rhs_val.compareAllWithZeroSema(.neq, pt))) {
16387 return sema.failWithDivideByZero(block, rhs_src);
16388 }
16389 }16061 }
16390 if (maybe_lhs_val) |lhs_val| {16062 if (allow_div_zero) {
16391 if (lhs_val.isUndef(zcu)) {16063 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16392 return pt.undefRef(resolved_type);16064 } else {
16393 }16065 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
16394 if (maybe_rhs_val) |rhs_val| {16066 }
16395 return Air.internedToRef((try lhs_val.floatRem(rhs_val, resolved_type, sema.arena, pt)).toIntern());16067 } else if (maybe_rhs_val) |rhs_val| {
16396 } else break :rs rhs_src;16068 if (allow_div_zero) {
16397 } else break :rs lhs_src;16069 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16398 };16070 } else {
1639916071 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
16400 try sema.requireRuntimeBlock(block, src, runtime_src);16072 if (rhs_val.anyScalarIsZero(zcu)) return sema.failWithDivideByZero(block, rhs_src);
16073 }
16074 }
1640116075
16402 if (block.wantSafety()) {16076 if (block.wantSafety()) {
16403 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);16077 try sema.addDivByZeroSafety(block, src, resolved_type, maybe_rhs_val, casted_rhs, is_int);
...@@ -16486,7 +16160,7 @@ fn zirOverflowArithmetic(...@@ -16486,7 +16160,7 @@ fn zirOverflowArithmetic(
16486 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };16160 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };
16487 }16161 }
1648816162
16489 const result = try sema.intAddWithOverflow(lhs_val, rhs_val, dest_ty);16163 const result = try arith.addWithOverflow(sema, dest_ty, lhs_val, rhs_val);
16490 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };16164 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };
16491 }16165 }
16492 }16166 }
...@@ -16504,7 +16178,7 @@ fn zirOverflowArithmetic(...@@ -16504,7 +16178,7 @@ fn zirOverflowArithmetic(
16504 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };16178 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };
16505 }16179 }
1650616180
16507 const result = try sema.intSubWithOverflow(lhs_val, rhs_val, dest_ty);16181 const result = try arith.subWithOverflow(sema, dest_ty, lhs_val, rhs_val);
16508 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };16182 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };
16509 }16183 }
16510 }16184 }
...@@ -16540,7 +16214,7 @@ fn zirOverflowArithmetic(...@@ -16540,7 +16214,7 @@ fn zirOverflowArithmetic(
16540 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };16214 break :result .{ .overflow_bit = Value.undef, .wrapped = Value.undef };
16541 }16215 }
1654216216
16543 const result = try lhs_val.intMulWithOverflow(rhs_val, dest_ty, sema.arena, pt);16217 const result = try arith.mulWithOverflow(sema, dest_ty, lhs_val, rhs_val);
16544 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };16218 break :result .{ .overflow_bit = result.overflow_bit, .wrapped = result.wrapped_result };
16545 }16219 }
16546 }16220 }
...@@ -16741,9 +16415,8 @@ fn analyzeArithmetic(...@@ -16741,9 +16415,8 @@ fn analyzeArithmetic(
16741 }16415 }
16742 }16416 }
1674316417
16744 const instructions = &[_]Air.Inst.Ref{ lhs, rhs };16418 const resolved_type = try sema.resolvePeerTypes(block, src, &.{ lhs, rhs }, .{
16745 const resolved_type = try sema.resolvePeerTypes(block, src, instructions, .{16419 .override = &.{ lhs_src, rhs_src },
16746 .override = &[_]?LazySrcLoc{ lhs_src, rhs_src },
16747 });16420 });
1674816421
16749 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);16422 const casted_lhs = try sema.coerce(block, resolved_type, lhs, lhs_src);
...@@ -16752,407 +16425,74 @@ fn analyzeArithmetic(...@@ -16752,407 +16425,74 @@ fn analyzeArithmetic(
16752 const scalar_type = resolved_type.scalarType(zcu);16425 const scalar_type = resolved_type.scalarType(zcu);
16753 const scalar_tag = scalar_type.zigTypeTag(zcu);16426 const scalar_tag = scalar_type.zigTypeTag(zcu);
1675416427
16755 const is_int = scalar_tag == .int or scalar_tag == .comptime_int;
16756
16757 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, zir_tag);16428 try sema.checkArithmeticOp(block, src, scalar_tag, lhs_zig_ty_tag, rhs_zig_ty_tag, zir_tag);
1675816429
16759 const maybe_lhs_val = try sema.resolveValueIntable(casted_lhs);16430 // The rules we'll implement below are as follows:
16760 const maybe_rhs_val = try sema.resolveValueIntable(casted_rhs);16431 //
16761 const runtime_src: LazySrcLoc, const air_tag: Air.Inst.Tag, const air_tag_safe: Air.Inst.Tag = rs: {16432 // * If both operands are comptime-known, we call the corresponding function in `arith` to get
16762 switch (zir_tag) {16433 // the comptime-known result. Inputs which would be IB at runtime are compile errors.
16763 .add, .add_unsafe => {16434 //
16764 // For integers:intAddSat16435 // * Otherwise, if one operand is comptime-known `undefined`, we trigger a compile error if this
16765 // If either of the operands are zero, then the other operand is16436 // operator can ever possibly trigger IB, or otherwise return comptime-known `undefined`.
16766 // returned, even if it is undefined.16437 //
16767 // If either of the operands are undefined, it's a compile error16438 // * No other comptime operand detemines a comptime result; e.g. `0 * x` isn't always `0` because
16768 // because there is a possible value for which the addition would16439 // of `undefined`. Therefore, the remaining cases all become runtime operations.
16769 // overflow (max_int), causing illegal behavior.
16770 // For floats: either operand being undef makes the result undef.
16771 if (maybe_lhs_val) |lhs_val| {
16772 if (!lhs_val.isUndef(zcu) and (try lhs_val.compareAllWithZeroSema(.eq, pt))) {
16773 return casted_rhs;
16774 }
16775 }
16776 if (maybe_rhs_val) |rhs_val| {
16777 if (rhs_val.isUndef(zcu)) {
16778 if (is_int) {
16779 return sema.failWithUseOfUndef(block, rhs_src);
16780 } else {
16781 return pt.undefRef(resolved_type);
16782 }
16783 }
16784 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16785 return casted_lhs;
16786 }
16787 }
16788 const air_tag: Air.Inst.Tag = if (block.float_mode == .optimized) .add_optimized else .add;
16789 if (maybe_lhs_val) |lhs_val| {
16790 if (lhs_val.isUndef(zcu)) {
16791 if (is_int) {
16792 return sema.failWithUseOfUndef(block, lhs_src);
16793 } else {
16794 return pt.undefRef(resolved_type);
16795 }
16796 }
16797 if (maybe_rhs_val) |rhs_val| {
16798 if (is_int) {
16799 var overflow_idx: ?usize = null;
16800 const sum = try sema.intAdd(lhs_val, rhs_val, resolved_type, &overflow_idx);
16801 if (overflow_idx) |vec_idx| {
16802 return sema.failWithIntegerOverflow(block, src, resolved_type, sum, vec_idx);
16803 }
16804 return Air.internedToRef(sum.toIntern());
16805 } else {
16806 return Air.internedToRef((try Value.floatAdd(lhs_val, rhs_val, resolved_type, sema.arena, pt)).toIntern());
16807 }
16808 } else break :rs .{ rhs_src, air_tag, .add_safe };
16809 } else break :rs .{ lhs_src, air_tag, .add_safe };
16810 },
16811 .addwrap => {
16812 // Integers only; floats are checked above.
16813 // If either of the operands are zero, the other operand is returned.
16814 // If either of the operands are undefined, the result is undefined.
16815 if (maybe_lhs_val) |lhs_val| {
16816 if (!lhs_val.isUndef(zcu) and (try lhs_val.compareAllWithZeroSema(.eq, pt))) {
16817 return casted_rhs;
16818 }
16819 }
16820 if (maybe_rhs_val) |rhs_val| {
16821 if (rhs_val.isUndef(zcu)) {
16822 return pt.undefRef(resolved_type);
16823 }
16824 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16825 return casted_lhs;
16826 }
16827 if (maybe_lhs_val) |lhs_val| {
16828 return Air.internedToRef((try sema.numberAddWrapScalar(lhs_val, rhs_val, resolved_type)).toIntern());
16829 } else break :rs .{ lhs_src, .add_wrap, .add_wrap };
16830 } else break :rs .{ rhs_src, .add_wrap, .add_wrap };
16831 },
16832 .add_sat => {
16833 // Integers only; floats are checked above.
16834 // If either of the operands are zero, then the other operand is returned.
16835 // If either of the operands are undefined, the result is undefined.
16836 if (maybe_lhs_val) |lhs_val| {
16837 if (!lhs_val.isUndef(zcu) and (try lhs_val.compareAllWithZeroSema(.eq, pt))) {
16838 return casted_rhs;
16839 }
16840 }
16841 if (maybe_rhs_val) |rhs_val| {
16842 if (rhs_val.isUndef(zcu)) {
16843 return pt.undefRef(resolved_type);
16844 }
16845 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16846 return casted_lhs;
16847 }
16848 if (maybe_lhs_val) |lhs_val| {
16849 if (lhs_val.isUndef(zcu)) {
16850 return pt.undefRef(resolved_type);
16851 }
16852
16853 const val = if (scalar_tag == .comptime_int)
16854 try sema.intAdd(lhs_val, rhs_val, resolved_type, undefined)
16855 else
16856 try lhs_val.intAddSat(rhs_val, resolved_type, sema.arena, pt);
1685716440
16858 return Air.internedToRef(val.toIntern());16441 const is_int = switch (scalar_tag) {
16859 } else break :rs .{16442 .int, .comptime_int => true,
16860 lhs_src,16443 .float, .comptime_float => false,
16861 .add_sat,16444 else => unreachable,
16862 .add_sat,16445 };
16863 };
16864 } else break :rs .{
16865 rhs_src,
16866 .add_sat,
16867 .add_sat,
16868 };
16869 },
16870 .sub => {
16871 // For integers:
16872 // If the rhs is zero, then the other operand is
16873 // returned, even if it is undefined.
16874 // If either of the operands are undefined, it's a compile error
16875 // because there is a possible value for which the subtraction would
16876 // overflow, causing illegal behavior.
16877 // For floats: either operand being undef makes the result undef.
16878 if (maybe_rhs_val) |rhs_val| {
16879 if (rhs_val.isUndef(zcu)) {
16880 if (is_int) {
16881 return sema.failWithUseOfUndef(block, rhs_src);
16882 } else {
16883 return pt.undefRef(resolved_type);
16884 }
16885 }
16886 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16887 return casted_lhs;
16888 }
16889 }
16890 const air_tag: Air.Inst.Tag = if (block.float_mode == .optimized) .sub_optimized else .sub;
16891 if (maybe_lhs_val) |lhs_val| {
16892 if (lhs_val.isUndef(zcu)) {
16893 if (is_int) {
16894 return sema.failWithUseOfUndef(block, lhs_src);
16895 } else {
16896 return pt.undefRef(resolved_type);
16897 }
16898 }
16899 if (maybe_rhs_val) |rhs_val| {
16900 if (is_int) {
16901 var overflow_idx: ?usize = null;
16902 const diff = try sema.intSub(lhs_val, rhs_val, resolved_type, &overflow_idx);
16903 if (overflow_idx) |vec_idx| {
16904 return sema.failWithIntegerOverflow(block, src, resolved_type, diff, vec_idx);
16905 }
16906 return Air.internedToRef(diff.toIntern());
16907 } else {
16908 return Air.internedToRef((try Value.floatSub(lhs_val, rhs_val, resolved_type, sema.arena, pt)).toIntern());
16909 }
16910 } else break :rs .{ rhs_src, air_tag, .sub_safe };
16911 } else break :rs .{ lhs_src, air_tag, .sub_safe };
16912 },
16913 .subwrap => {
16914 // Integers only; floats are checked above.
16915 // If the RHS is zero, then the LHS is returned, even if it is undefined.
16916 // If either of the operands are undefined, the result is undefined.
16917 if (maybe_rhs_val) |rhs_val| {
16918 if (rhs_val.isUndef(zcu)) {
16919 return pt.undefRef(resolved_type);
16920 }
16921 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16922 return casted_lhs;
16923 }
16924 }
16925 if (maybe_lhs_val) |lhs_val| {
16926 if (lhs_val.isUndef(zcu)) {
16927 return pt.undefRef(resolved_type);
16928 }
16929 if (maybe_rhs_val) |rhs_val| {
16930 return Air.internedToRef((try sema.numberSubWrapScalar(lhs_val, rhs_val, resolved_type)).toIntern());
16931 } else break :rs .{ rhs_src, .sub_wrap, .sub_wrap };
16932 } else break :rs .{ lhs_src, .sub_wrap, .sub_wrap };
16933 },
16934 .sub_sat => {
16935 // Integers only; floats are checked above.
16936 // If the RHS is zero, then the LHS is returned, even if it is undefined.
16937 // If either of the operands are undefined, the result is undefined.
16938 if (maybe_rhs_val) |rhs_val| {
16939 if (rhs_val.isUndef(zcu)) {
16940 return pt.undefRef(resolved_type);
16941 }
16942 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
16943 return casted_lhs;
16944 }
16945 }
16946 if (maybe_lhs_val) |lhs_val| {
16947 if (lhs_val.isUndef(zcu)) {
16948 return pt.undefRef(resolved_type);
16949 }
16950 if (maybe_rhs_val) |rhs_val| {
16951 const val = if (scalar_tag == .comptime_int)
16952 try sema.intSub(lhs_val, rhs_val, resolved_type, undefined)
16953 else
16954 try lhs_val.intSubSat(rhs_val, resolved_type, sema.arena, pt);
16955
16956 return Air.internedToRef(val.toIntern());
16957 } else break :rs .{ rhs_src, .sub_sat, .sub_sat };
16958 } else break :rs .{ lhs_src, .sub_sat, .sub_sat };
16959 },
16960 .mul => {
16961 // For integers:
16962 // If either of the operands are zero, the result is zero.
16963 // If either of the operands are one, the result is the other
16964 // operand, even if it is undefined.
16965 // If either of the operands are undefined, it's a compile error
16966 // because there is a possible value for which the addition would
16967 // overflow (max_int), causing illegal behavior.
16968 //
16969 // For floats:
16970 // If either of the operands are undefined, the result is undefined.
16971 // If either of the operands are inf, and the other operand is zero,
16972 // the result is nan.
16973 // If either of the operands are nan, the result is nan.
16974 const scalar_zero = switch (scalar_tag) {
16975 .comptime_float, .float => try pt.floatValue(scalar_type, 0.0),
16976 .comptime_int, .int => try pt.intValue(scalar_type, 0),
16977 else => unreachable,
16978 };
16979 const scalar_one = switch (scalar_tag) {
16980 .comptime_float, .float => try pt.floatValue(scalar_type, 1.0),
16981 .comptime_int, .int => try pt.intValue(scalar_type, 1),
16982 else => unreachable,
16983 };
16984 if (maybe_lhs_val) |lhs_val| {
16985 if (!lhs_val.isUndef(zcu)) {
16986 if (lhs_val.isNan(zcu)) {
16987 return Air.internedToRef(lhs_val.toIntern());
16988 }
16989 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) lz: {
16990 if (maybe_rhs_val) |rhs_val| {
16991 if (rhs_val.isNan(zcu)) {
16992 return Air.internedToRef(rhs_val.toIntern());
16993 }
16994 if (rhs_val.isInf(zcu)) {
16995 return Air.internedToRef((try pt.floatValue(resolved_type, std.math.nan(f128))).toIntern());
16996 }
16997 } else if (resolved_type.isAnyFloat()) {
16998 break :lz;
16999 }
17000 const zero_val = try sema.splat(resolved_type, scalar_zero);
17001 return Air.internedToRef(zero_val.toIntern());
17002 }
17003 if (try sema.compareAll(lhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17004 return casted_rhs;
17005 }
17006 }
17007 }
17008 const air_tag: Air.Inst.Tag = if (block.float_mode == .optimized) .mul_optimized else .mul;
17009 if (maybe_rhs_val) |rhs_val| {
17010 if (rhs_val.isUndef(zcu)) {
17011 if (is_int) {
17012 return sema.failWithUseOfUndef(block, rhs_src);
17013 } else {
17014 return pt.undefRef(resolved_type);
17015 }
17016 }
17017 if (rhs_val.isNan(zcu)) {
17018 return Air.internedToRef(rhs_val.toIntern());
17019 }
17020 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) rz: {
17021 if (maybe_lhs_val) |lhs_val| {
17022 if (lhs_val.isInf(zcu)) {
17023 return Air.internedToRef((try pt.floatValue(resolved_type, std.math.nan(f128))).toIntern());
17024 }
17025 } else if (resolved_type.isAnyFloat()) {
17026 break :rz;
17027 }
17028 const zero_val = try sema.splat(resolved_type, scalar_zero);
17029 return Air.internedToRef(zero_val.toIntern());
17030 }
17031 if (try sema.compareAll(rhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17032 return casted_lhs;
17033 }
17034 if (maybe_lhs_val) |lhs_val| {
17035 if (lhs_val.isUndef(zcu)) {
17036 if (is_int) {
17037 return sema.failWithUseOfUndef(block, lhs_src);
17038 } else {
17039 return pt.undefRef(resolved_type);
17040 }
17041 }
17042 if (is_int) {
17043 var overflow_idx: ?usize = null;
17044 const product = try lhs_val.intMul(rhs_val, resolved_type, &overflow_idx, sema.arena, pt);
17045 if (overflow_idx) |vec_idx| {
17046 return sema.failWithIntegerOverflow(block, src, resolved_type, product, vec_idx);
17047 }
17048 return Air.internedToRef(product.toIntern());
17049 } else {
17050 return Air.internedToRef((try lhs_val.floatMul(rhs_val, resolved_type, sema.arena, pt)).toIntern());
17051 }
17052 } else break :rs .{ lhs_src, air_tag, .mul_safe };
17053 } else break :rs .{ rhs_src, air_tag, .mul_safe };
17054 },
17055 .mulwrap => {
17056 // Integers only; floats are handled above.
17057 // If either of the operands are zero, result is zero.
17058 // If either of the operands are one, result is the other operand.
17059 // If either of the operands are undefined, result is undefined.
17060 const scalar_zero = switch (scalar_tag) {
17061 .comptime_float, .float => try pt.floatValue(scalar_type, 0.0),
17062 .comptime_int, .int => try pt.intValue(scalar_type, 0),
17063 else => unreachable,
17064 };
17065 const scalar_one = switch (scalar_tag) {
17066 .comptime_float, .float => try pt.floatValue(scalar_type, 1.0),
17067 .comptime_int, .int => try pt.intValue(scalar_type, 1),
17068 else => unreachable,
17069 };
17070 if (maybe_lhs_val) |lhs_val| {
17071 if (!lhs_val.isUndef(zcu)) {
17072 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
17073 const zero_val = try sema.splat(resolved_type, scalar_zero);
17074 return Air.internedToRef(zero_val.toIntern());
17075 }
17076 if (try sema.compareAll(lhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17077 return casted_rhs;
17078 }
17079 }
17080 }
17081 if (maybe_rhs_val) |rhs_val| {
17082 if (rhs_val.isUndef(zcu)) {
17083 return pt.undefRef(resolved_type);
17084 }
17085 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
17086 const zero_val = try sema.splat(resolved_type, scalar_zero);
17087 return Air.internedToRef(zero_val.toIntern());
17088 }
17089 if (try sema.compareAll(rhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17090 return casted_lhs;
17091 }
17092 if (maybe_lhs_val) |lhs_val| {
17093 if (lhs_val.isUndef(zcu)) {
17094 return pt.undefRef(resolved_type);
17095 }
17096 return Air.internedToRef((try lhs_val.numberMulWrap(rhs_val, resolved_type, sema.arena, pt)).toIntern());
17097 } else break :rs .{ lhs_src, .mul_wrap, .mul_wrap };
17098 } else break :rs .{ rhs_src, .mul_wrap, .mul_wrap };
17099 },
17100 .mul_sat => {
17101 // Integers only; floats are checked above.
17102 // If either of the operands are zero, result is zero.
17103 // If either of the operands are one, result is the other operand.
17104 // If either of the operands are undefined, result is undefined.
17105 const scalar_zero = switch (scalar_tag) {
17106 .comptime_float, .float => try pt.floatValue(scalar_type, 0.0),
17107 .comptime_int, .int => try pt.intValue(scalar_type, 0),
17108 else => unreachable,
17109 };
17110 const scalar_one = switch (scalar_tag) {
17111 .comptime_float, .float => try pt.floatValue(scalar_type, 1.0),
17112 .comptime_int, .int => try pt.intValue(scalar_type, 1),
17113 else => unreachable,
17114 };
17115 if (maybe_lhs_val) |lhs_val| {
17116 if (!lhs_val.isUndef(zcu)) {
17117 if (try lhs_val.compareAllWithZeroSema(.eq, pt)) {
17118 const zero_val = try sema.splat(resolved_type, scalar_zero);
17119 return Air.internedToRef(zero_val.toIntern());
17120 }
17121 if (try sema.compareAll(lhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17122 return casted_rhs;
17123 }
17124 }
17125 }
17126 if (maybe_rhs_val) |rhs_val| {
17127 if (rhs_val.isUndef(zcu)) {
17128 return pt.undefRef(resolved_type);
17129 }
17130 if (try rhs_val.compareAllWithZeroSema(.eq, pt)) {
17131 const zero_val = try sema.splat(resolved_type, scalar_zero);
17132 return Air.internedToRef(zero_val.toIntern());
17133 }
17134 if (try sema.compareAll(rhs_val, .eq, try sema.splat(resolved_type, scalar_one), resolved_type)) {
17135 return casted_lhs;
17136 }
17137 if (maybe_lhs_val) |lhs_val| {
17138 if (lhs_val.isUndef(zcu)) {
17139 return pt.undefRef(resolved_type);
17140 }
1714116446
17142 const val = if (scalar_tag == .comptime_int)16447 const maybe_lhs_val = try sema.resolveValueResolveLazy(casted_lhs);
17143 try lhs_val.intMul(rhs_val, resolved_type, undefined, sema.arena, pt)16448 const maybe_rhs_val = try sema.resolveValueResolveLazy(casted_rhs);
17144 else
17145 try lhs_val.intMulSat(rhs_val, resolved_type, sema.arena, pt);
1714616449
17147 return Air.internedToRef(val.toIntern());16450 if (maybe_lhs_val) |lhs_val| {
17148 } else break :rs .{ lhs_src, .mul_sat, .mul_sat };16451 if (maybe_rhs_val) |rhs_val| {
17149 } else break :rs .{ rhs_src, .mul_sat, .mul_sat };16452 const result_val = switch (zir_tag) {
17150 },16453 .add, .add_unsafe => try arith.add(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src),
17151 else => unreachable,16454 .addwrap => try arith.addWrap(sema, resolved_type, lhs_val, rhs_val),
16455 .add_sat => try arith.addSat(sema, resolved_type, lhs_val, rhs_val),
16456 .sub => try arith.sub(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src),
16457 .subwrap => try arith.subWrap(sema, resolved_type, lhs_val, rhs_val),
16458 .sub_sat => try arith.subSat(sema, resolved_type, lhs_val, rhs_val),
16459 .mul => try arith.mul(sema, block, resolved_type, lhs_val, rhs_val, src, lhs_src, rhs_src),
16460 .mulwrap => try arith.mulWrap(sema, resolved_type, lhs_val, rhs_val),
16461 .mul_sat => try arith.mulSat(sema, resolved_type, lhs_val, rhs_val),
16462 else => unreachable,
16463 };
16464 return Air.internedToRef(result_val.toIntern());
17152 }16465 }
16466 }
16467
16468 const air_tag: Air.Inst.Tag, const air_tag_safe: Air.Inst.Tag, const allow_undef: bool = switch (zir_tag) {
16469 .add, .add_unsafe => .{ if (block.float_mode == .optimized) .add_optimized else .add, .add_safe, !is_int },
16470 .addwrap => .{ .add_wrap, .add_wrap, true },
16471 .add_sat => .{ .add_sat, .add_sat, true },
16472 .sub => .{ if (block.float_mode == .optimized) .sub_optimized else .sub, .sub_safe, !is_int },
16473 .subwrap => .{ .sub_wrap, .sub_wrap, true },
16474 .sub_sat => .{ .sub_sat, .sub_sat, true },
16475 .mul => .{ if (block.float_mode == .optimized) .mul_optimized else .mul, .mul_safe, !is_int },
16476 .mulwrap => .{ .mul_wrap, .mul_wrap, true },
16477 .mul_sat => .{ .mul_sat, .mul_sat, true },
16478 else => unreachable,
17153 };16479 };
1715416480
17155 try sema.requireRuntimeBlock(block, src, runtime_src);16481 if (allow_undef) {
16482 if (maybe_lhs_val) |lhs_val| {
16483 if (lhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16484 }
16485 if (maybe_rhs_val) |rhs_val| {
16486 if (rhs_val.isUndefDeep(zcu)) return pt.undefRef(resolved_type);
16487 }
16488 } else {
16489 if (maybe_lhs_val) |lhs_val| {
16490 if (lhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
16491 }
16492 if (maybe_rhs_val) |rhs_val| {
16493 if (rhs_val.anyScalarIsUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
16494 }
16495 }
1715616496
17157 if (block.wantSafety() and want_safety and scalar_tag == .int) {16497 if (block.wantSafety() and want_safety and scalar_tag == .int) {
17158 if (zcu.backendSupportsFeature(.safety_checked_instructions)) {16498 if (zcu.backendSupportsFeature(.safety_checked_instructions)) {
...@@ -24124,7 +23464,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -24124,7 +23464,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
24124 }23464 }
24125 }23465 }
2412623466
24127 if (try sema.resolveValueIntable(operand)) |val| {23467 if (try sema.resolveValueResolveLazy(operand)) |val| {
24128 if (val.isUndef(zcu)) return pt.undefRef(dest_ty);23468 if (val.isUndef(zcu)) return pt.undefRef(dest_ty);
24129 if (!dest_is_vector) {23469 if (!dest_is_vector) {
24130 return Air.internedToRef((try pt.getCoerced(23470 return Air.internedToRef((try pt.getCoerced(
...@@ -25087,8 +24427,8 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air....@@ -25087,8 +24427,8 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
25087 .Xor => accum = try accum.bitwiseXor(elem_val, scalar_ty, sema.arena, pt),24427 .Xor => accum = try accum.bitwiseXor(elem_val, scalar_ty, sema.arena, pt),
25088 .Min => accum = accum.numberMin(elem_val, zcu),24428 .Min => accum = accum.numberMin(elem_val, zcu),
25089 .Max => accum = accum.numberMax(elem_val, zcu),24429 .Max => accum = accum.numberMax(elem_val, zcu),
25090 .Add => accum = try sema.numberAddWrapScalar(accum, elem_val, scalar_ty),24430 .Add => accum = try arith.addMaybeWrap(sema, scalar_ty, accum, elem_val),
25091 .Mul => accum = try accum.numberMulWrap(elem_val, scalar_ty, sema.arena, pt),24431 .Mul => accum = try arith.mulMaybeWrap(sema, scalar_ty, accum, elem_val),
25092 }24432 }
25093 }24433 }
25094 return Air.internedToRef(accum.toIntern());24434 return Air.internedToRef(accum.toIntern());
...@@ -25485,14 +24825,14 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -25485,14 +24825,14 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
25485 const new_val = switch (op) {24825 const new_val = switch (op) {
25486 // zig fmt: off24826 // zig fmt: off
25487 .Xchg => operand_val,24827 .Xchg => operand_val,
25488 .Add => try sema.numberAddWrapScalar(stored_val, operand_val, elem_ty),24828 .Add => try arith.addMaybeWrap(sema, elem_ty, stored_val, operand_val),
25489 .Sub => try sema.numberSubWrapScalar(stored_val, operand_val, elem_ty),24829 .Sub => try arith.subMaybeWrap(sema, elem_ty, stored_val, operand_val),
25490 .And => try stored_val.bitwiseAnd (operand_val, elem_ty, sema.arena, pt ),24830 .And => try stored_val.bitwiseAnd (operand_val, elem_ty, sema.arena, pt ),
25491 .Nand => try stored_val.bitwiseNand (operand_val, elem_ty, sema.arena, pt ),24831 .Nand => try stored_val.bitwiseNand (operand_val, elem_ty, sema.arena, pt ),
25492 .Or => try stored_val.bitwiseOr (operand_val, elem_ty, sema.arena, pt ),24832 .Or => try stored_val.bitwiseOr (operand_val, elem_ty, sema.arena, pt ),
25493 .Xor => try stored_val.bitwiseXor (operand_val, elem_ty, sema.arena, pt ),24833 .Xor => try stored_val.bitwiseXor (operand_val, elem_ty, sema.arena, pt ),
25494 .Max => stored_val.numberMax (operand_val, zcu),24834 .Max => stored_val.numberMax (operand_val, zcu),
25495 .Min => stored_val.numberMin (operand_val, zcu),24835 .Min => stored_val.numberMin (operand_val, zcu),
25496 // zig fmt: on24836 // zig fmt: on
25497 };24837 };
25498 try sema.storePtrVal(block, src, ptr_val, new_val, elem_ty);24838 try sema.storePtrVal(block, src, ptr_val, new_val, elem_ty);
...@@ -31437,16 +30777,12 @@ fn storePtr2(...@@ -31437,16 +30777,12 @@ fn storePtr2(
31437 };30777 };
31438 const maybe_operand_val = try sema.resolveValue(operand);30778 const maybe_operand_val = try sema.resolveValue(operand);
3143930779
31440 const runtime_src = if (try sema.resolveDefinedValue(block, ptr_src, ptr)) |ptr_val| rs: {30780 const runtime_src = rs: {
31441 const operand_val = maybe_operand_val orelse {30781 const ptr_val = try sema.resolveDefinedValue(block, ptr_src, ptr) orelse break :rs ptr_src;
31442 try sema.checkPtrIsNotComptimeMutable(block, ptr_val, ptr_src, operand_src);30782 if (!sema.isComptimeMutablePtr(ptr_val)) break :rs ptr_src;
31443 break :rs operand_src;30783 const operand_val = maybe_operand_val orelse return sema.fail(block, ptr_src, "cannot store runtime value in compile time variable", .{});
31444 };30784 return sema.storePtrVal(block, src, ptr_val, operand_val, elem_ty);
31445 if (sema.isComptimeMutablePtr(ptr_val)) {30785 };
31446 try sema.storePtrVal(block, src, ptr_val, operand_val, elem_ty);
31447 return;
31448 } else break :rs ptr_src;
31449 } else ptr_src;
3145030786
31451 // We're performing the store at runtime; as such, we need to make sure the pointee type30787 // We're performing the store at runtime; as such, we need to make sure the pointee type
31452 // is not comptime-only. We can hit this case with a `@ptrFromInt` pointer.30788 // is not comptime-only. We can hit this case with a `@ptrFromInt` pointer.
...@@ -36719,13 +36055,19 @@ fn unionFields(...@@ -36719,13 +36055,19 @@ fn unionFields(
3671936055
36720 break :blk val;36056 break :blk val;
36721 } else blk: {36057 } else blk: {
36722 const val = if (last_tag_val) |val|36058 if (last_tag_val) |last_tag| {
36723 try sema.intAdd(val, Value.one_comptime_int, int_tag_ty, undefined)36059 const result = try arith.incrementDefinedInt(sema, int_tag_ty, last_tag);
36724 else36060 if (result.overflow) return sema.fail(
36725 try pt.intValue(int_tag_ty, 0);36061 &block_scope,
36726 last_tag_val = val;36062 value_src,
3672736063 "enumeration value '{}' too large for type '{}'",
36728 break :blk val;36064 .{ result.val.fmtValueSema(pt, sema), int_tag_ty.fmt(pt) },
36065 );
36066 last_tag_val = result.val;
36067 } else {
36068 last_tag_val = try pt.intValue(int_tag_ty, 0);
36069 }
36070 break :blk last_tag_val.?;
36729 };36071 };
36730 const gop = enum_field_vals.getOrPutAssumeCapacity(enum_tag_val.toIntern());36072 const gop = enum_field_vals.getOrPutAssumeCapacity(enum_tag_val.toIntern());
36731 if (gop.found_existing) {36073 if (gop.found_existing) {
...@@ -37532,260 +36874,6 @@ fn structFieldIndex(...@@ -37532,260 +36874,6 @@ fn structFieldIndex(
37532 return sema.failWithBadStructFieldAccess(block, struct_ty, struct_type, field_src, field_name);36874 return sema.failWithBadStructFieldAccess(block, struct_ty, struct_type, field_src, field_name);
37533}36875}
3753436876
37535/// If the value overflowed the type, returns a comptime_int (or vector thereof) instead, setting
37536/// overflow_idx to the vector index the overflow was at (or 0 for a scalar).
37537fn intAdd(sema: *Sema, lhs: Value, rhs: Value, ty: Type, overflow_idx: *?usize) !Value {
37538 const pt = sema.pt;
37539 var overflow: usize = undefined;
37540 return sema.intAddInner(lhs, rhs, ty, &overflow) catch |err| switch (err) {
37541 error.Overflow => {
37542 const is_vec = ty.isVector(pt.zcu);
37543 overflow_idx.* = if (is_vec) overflow else 0;
37544 const safe_ty = if (is_vec) try pt.vectorType(.{
37545 .len = ty.vectorLen(pt.zcu),
37546 .child = .comptime_int_type,
37547 }) else Type.comptime_int;
37548 return sema.intAddInner(lhs, rhs, safe_ty, undefined) catch |err1| switch (err1) {
37549 error.Overflow => unreachable,
37550 else => |e| return e,
37551 };
37552 },
37553 else => |e| return e,
37554 };
37555}
37556
37557fn intAddInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type, overflow_idx: *usize) !Value {
37558 const pt = sema.pt;
37559 const zcu = pt.zcu;
37560 if (ty.zigTypeTag(zcu) == .vector) {
37561 const result_data = try sema.arena.alloc(InternPool.Index, ty.vectorLen(zcu));
37562 const scalar_ty = ty.scalarType(zcu);
37563 for (result_data, 0..) |*scalar, i| {
37564 const lhs_elem = try lhs.elemValue(pt, i);
37565 const rhs_elem = try rhs.elemValue(pt, i);
37566 const val = sema.intAddScalar(lhs_elem, rhs_elem, scalar_ty) catch |err| switch (err) {
37567 error.Overflow => {
37568 overflow_idx.* = i;
37569 return error.Overflow;
37570 },
37571 else => |e| return e,
37572 };
37573 scalar.* = val.toIntern();
37574 }
37575 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
37576 .ty = ty.toIntern(),
37577 .storage = .{ .elems = result_data },
37578 } }));
37579 }
37580 return sema.intAddScalar(lhs, rhs, ty);
37581}
37582
37583fn intAddScalar(sema: *Sema, lhs: Value, rhs: Value, scalar_ty: Type) !Value {
37584 const pt = sema.pt;
37585 if (scalar_ty.toIntern() != .comptime_int_type) {
37586 const res = try sema.intAddWithOverflowScalar(lhs, rhs, scalar_ty);
37587 if (res.overflow_bit.compareAllWithZero(.neq, pt.zcu)) return error.Overflow;
37588 return res.wrapped_result;
37589 }
37590 // TODO is this a performance issue? maybe we should try the operation without
37591 // resorting to BigInt first.
37592 var lhs_space: Value.BigIntSpace = undefined;
37593 var rhs_space: Value.BigIntSpace = undefined;
37594 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
37595 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
37596 const limbs = try sema.arena.alloc(
37597 std.math.big.Limb,
37598 @max(lhs_bigint.limbs.len, rhs_bigint.limbs.len) + 1,
37599 );
37600 var result_bigint = std.math.big.int.Mutable{ .limbs = limbs, .positive = undefined, .len = undefined };
37601 result_bigint.add(lhs_bigint, rhs_bigint);
37602 return pt.intValue_big(scalar_ty, result_bigint.toConst());
37603}
37604
37605/// Supports both floats and ints; handles undefined.
37606fn numberAddWrapScalar(
37607 sema: *Sema,
37608 lhs: Value,
37609 rhs: Value,
37610 ty: Type,
37611) !Value {
37612 const pt = sema.pt;
37613 const zcu = pt.zcu;
37614 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return pt.undefValue(ty);
37615
37616 if (ty.zigTypeTag(zcu) == .comptime_int) {
37617 return sema.intAdd(lhs, rhs, ty, undefined);
37618 }
37619
37620 if (ty.isAnyFloat()) {
37621 return Value.floatAdd(lhs, rhs, ty, sema.arena, pt);
37622 }
37623
37624 const overflow_result = try sema.intAddWithOverflow(lhs, rhs, ty);
37625 return overflow_result.wrapped_result;
37626}
37627
37628/// If the value overflowed the type, returns a comptime_int (or vector thereof) instead, setting
37629/// overflow_idx to the vector index the overflow was at (or 0 for a scalar).
37630fn intSub(sema: *Sema, lhs: Value, rhs: Value, ty: Type, overflow_idx: *?usize) !Value {
37631 const pt = sema.pt;
37632 var overflow: usize = undefined;
37633 return sema.intSubInner(lhs, rhs, ty, &overflow) catch |err| switch (err) {
37634 error.Overflow => {
37635 const is_vec = ty.isVector(pt.zcu);
37636 overflow_idx.* = if (is_vec) overflow else 0;
37637 const safe_ty = if (is_vec) try pt.vectorType(.{
37638 .len = ty.vectorLen(pt.zcu),
37639 .child = .comptime_int_type,
37640 }) else Type.comptime_int;
37641 return sema.intSubInner(lhs, rhs, safe_ty, undefined) catch |err1| switch (err1) {
37642 error.Overflow => unreachable,
37643 else => |e| return e,
37644 };
37645 },
37646 else => |e| return e,
37647 };
37648}
37649
37650fn intSubInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type, overflow_idx: *usize) !Value {
37651 const pt = sema.pt;
37652 if (ty.zigTypeTag(pt.zcu) == .vector) {
37653 const result_data = try sema.arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
37654 const scalar_ty = ty.scalarType(pt.zcu);
37655 for (result_data, 0..) |*scalar, i| {
37656 const lhs_elem = try lhs.elemValue(pt, i);
37657 const rhs_elem = try rhs.elemValue(pt, i);
37658 const val = sema.intSubScalar(lhs_elem, rhs_elem, scalar_ty) catch |err| switch (err) {
37659 error.Overflow => {
37660 overflow_idx.* = i;
37661 return error.Overflow;
37662 },
37663 else => |e| return e,
37664 };
37665 scalar.* = val.toIntern();
37666 }
37667 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
37668 .ty = ty.toIntern(),
37669 .storage = .{ .elems = result_data },
37670 } }));
37671 }
37672 return sema.intSubScalar(lhs, rhs, ty);
37673}
37674
37675fn intSubScalar(sema: *Sema, lhs: Value, rhs: Value, scalar_ty: Type) !Value {
37676 const pt = sema.pt;
37677 const zcu = pt.zcu;
37678 if (scalar_ty.toIntern() != .comptime_int_type) {
37679 const res = try sema.intSubWithOverflowScalar(lhs, rhs, scalar_ty);
37680 if (res.overflow_bit.compareAllWithZero(.neq, zcu)) return error.Overflow;
37681 return res.wrapped_result;
37682 }
37683 // TODO is this a performance issue? maybe we should try the operation without
37684 // resorting to BigInt first.
37685 var lhs_space: Value.BigIntSpace = undefined;
37686 var rhs_space: Value.BigIntSpace = undefined;
37687 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
37688 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
37689 const limbs = try sema.arena.alloc(
37690 std.math.big.Limb,
37691 @max(lhs_bigint.limbs.len, rhs_bigint.limbs.len) + 1,
37692 );
37693 var result_bigint = std.math.big.int.Mutable{ .limbs = limbs, .positive = undefined, .len = undefined };
37694 result_bigint.sub(lhs_bigint, rhs_bigint);
37695 return pt.intValue_big(scalar_ty, result_bigint.toConst());
37696}
37697
37698/// Supports both floats and ints; handles undefined.
37699fn numberSubWrapScalar(
37700 sema: *Sema,
37701 lhs: Value,
37702 rhs: Value,
37703 ty: Type,
37704) !Value {
37705 const pt = sema.pt;
37706 const zcu = pt.zcu;
37707 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return pt.undefValue(ty);
37708
37709 if (ty.zigTypeTag(zcu) == .comptime_int) {
37710 return sema.intSub(lhs, rhs, ty, undefined);
37711 }
37712
37713 if (ty.isAnyFloat()) {
37714 return Value.floatSub(lhs, rhs, ty, sema.arena, pt);
37715 }
37716
37717 const overflow_result = try sema.intSubWithOverflow(lhs, rhs, ty);
37718 return overflow_result.wrapped_result;
37719}
37720
37721fn intSubWithOverflow(
37722 sema: *Sema,
37723 lhs: Value,
37724 rhs: Value,
37725 ty: Type,
37726) !Value.OverflowArithmeticResult {
37727 const pt = sema.pt;
37728 const zcu = pt.zcu;
37729 if (ty.zigTypeTag(zcu) == .vector) {
37730 const vec_len = ty.vectorLen(zcu);
37731 const overflowed_data = try sema.arena.alloc(InternPool.Index, vec_len);
37732 const result_data = try sema.arena.alloc(InternPool.Index, vec_len);
37733 const scalar_ty = ty.scalarType(zcu);
37734 for (overflowed_data, result_data, 0..) |*of, *scalar, i| {
37735 const lhs_elem = try lhs.elemValue(pt, i);
37736 const rhs_elem = try rhs.elemValue(pt, i);
37737 const of_math_result = try sema.intSubWithOverflowScalar(lhs_elem, rhs_elem, scalar_ty);
37738 of.* = of_math_result.overflow_bit.toIntern();
37739 scalar.* = of_math_result.wrapped_result.toIntern();
37740 }
37741 return Value.OverflowArithmeticResult{
37742 .overflow_bit = Value.fromInterned(try pt.intern(.{ .aggregate = .{
37743 .ty = (try pt.vectorType(.{ .len = vec_len, .child = .u1_type })).toIntern(),
37744 .storage = .{ .elems = overflowed_data },
37745 } })),
37746 .wrapped_result = Value.fromInterned(try pt.intern(.{ .aggregate = .{
37747 .ty = ty.toIntern(),
37748 .storage = .{ .elems = result_data },
37749 } })),
37750 };
37751 }
37752 return sema.intSubWithOverflowScalar(lhs, rhs, ty);
37753}
37754
37755fn intSubWithOverflowScalar(
37756 sema: *Sema,
37757 lhs: Value,
37758 rhs: Value,
37759 ty: Type,
37760) !Value.OverflowArithmeticResult {
37761 const pt = sema.pt;
37762 const zcu = pt.zcu;
37763 const info = ty.intInfo(zcu);
37764
37765 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) {
37766 return .{
37767 .overflow_bit = try pt.undefValue(Type.u1),
37768 .wrapped_result = try pt.undefValue(ty),
37769 };
37770 }
37771
37772 var lhs_space: Value.BigIntSpace = undefined;
37773 var rhs_space: Value.BigIntSpace = undefined;
37774 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
37775 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
37776 const limbs = try sema.arena.alloc(
37777 std.math.big.Limb,
37778 std.math.big.int.calcTwosCompLimbCount(info.bits),
37779 );
37780 var result_bigint = std.math.big.int.Mutable{ .limbs = limbs, .positive = undefined, .len = undefined };
37781 const overflowed = result_bigint.subWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
37782 const wrapped_result = try pt.intValue_big(ty, result_bigint.toConst());
37783 return Value.OverflowArithmeticResult{
37784 .overflow_bit = try pt.intValue(Type.u1, @intFromBool(overflowed)),
37785 .wrapped_result = wrapped_result,
37786 };
37787}
37788
37789const IntFromFloatMode = enum { exact, truncate };36877const IntFromFloatMode = enum { exact, truncate };
3779036878
37791fn intFromFloat(36879fn intFromFloat(
...@@ -37982,74 +37070,6 @@ fn enumHasInt(sema: *Sema, ty: Type, int: Value) CompileError!bool {...@@ -37982,74 +37070,6 @@ fn enumHasInt(sema: *Sema, ty: Type, int: Value) CompileError!bool {
37982 return enum_type.tagValueIndex(&zcu.intern_pool, int_coerced.toIntern()) != null;37070 return enum_type.tagValueIndex(&zcu.intern_pool, int_coerced.toIntern()) != null;
37983}37071}
3798437072
37985fn intAddWithOverflow(
37986 sema: *Sema,
37987 lhs: Value,
37988 rhs: Value,
37989 ty: Type,
37990) !Value.OverflowArithmeticResult {
37991 const pt = sema.pt;
37992 const zcu = pt.zcu;
37993 if (ty.zigTypeTag(zcu) == .vector) {
37994 const vec_len = ty.vectorLen(zcu);
37995 const overflowed_data = try sema.arena.alloc(InternPool.Index, vec_len);
37996 const result_data = try sema.arena.alloc(InternPool.Index, vec_len);
37997 const scalar_ty = ty.scalarType(zcu);
37998 for (overflowed_data, result_data, 0..) |*of, *scalar, i| {
37999 const lhs_elem = try lhs.elemValue(pt, i);
38000 const rhs_elem = try rhs.elemValue(pt, i);
38001 const of_math_result = try sema.intAddWithOverflowScalar(lhs_elem, rhs_elem, scalar_ty);
38002 of.* = of_math_result.overflow_bit.toIntern();
38003 scalar.* = of_math_result.wrapped_result.toIntern();
38004 }
38005 return Value.OverflowArithmeticResult{
38006 .overflow_bit = Value.fromInterned(try pt.intern(.{ .aggregate = .{
38007 .ty = (try pt.vectorType(.{ .len = vec_len, .child = .u1_type })).toIntern(),
38008 .storage = .{ .elems = overflowed_data },
38009 } })),
38010 .wrapped_result = Value.fromInterned(try pt.intern(.{ .aggregate = .{
38011 .ty = ty.toIntern(),
38012 .storage = .{ .elems = result_data },
38013 } })),
38014 };
38015 }
38016 return sema.intAddWithOverflowScalar(lhs, rhs, ty);
38017}
38018
38019fn intAddWithOverflowScalar(
38020 sema: *Sema,
38021 lhs: Value,
38022 rhs: Value,
38023 ty: Type,
38024) !Value.OverflowArithmeticResult {
38025 const pt = sema.pt;
38026 const zcu = pt.zcu;
38027 const info = ty.intInfo(zcu);
38028
38029 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) {
38030 return .{
38031 .overflow_bit = try pt.undefValue(Type.u1),
38032 .wrapped_result = try pt.undefValue(ty),
38033 };
38034 }
38035
38036 var lhs_space: Value.BigIntSpace = undefined;
38037 var rhs_space: Value.BigIntSpace = undefined;
38038 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
38039 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
38040 const limbs = try sema.arena.alloc(
38041 std.math.big.Limb,
38042 std.math.big.int.calcTwosCompLimbCount(info.bits),
38043 );
38044 var result_bigint = std.math.big.int.Mutable{ .limbs = limbs, .positive = undefined, .len = undefined };
38045 const overflowed = result_bigint.addWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
38046 const result = try pt.intValue_big(ty, result_bigint.toConst());
38047 return Value.OverflowArithmeticResult{
38048 .overflow_bit = try pt.intValue(Type.u1, @intFromBool(overflowed)),
38049 .wrapped_result = result,
38050 };
38051}
38052
38053/// Asserts the values are comparable. Both operands have type `ty`.37073/// Asserts the values are comparable. Both operands have type `ty`.
38054/// For vectors, returns true if the comparison is true for ALL elements.37074/// For vectors, returns true if the comparison is true for ALL elements.
38055///37075///
...@@ -38736,12 +37756,13 @@ fn resolveDeclaredEnumInner(...@@ -38736,12 +37756,13 @@ fn resolveDeclaredEnumInner(
38736 }37756 }
38737 break :overflow false;37757 break :overflow false;
38738 } else if (any_values) overflow: {37758 } else if (any_values) overflow: {
38739 var overflow: ?usize = null;37759 if (last_tag_val) |last_tag| {
38740 last_tag_val = if (last_tag_val) |val|37760 const result = try arith.incrementDefinedInt(sema, int_tag_ty, last_tag);
38741 try sema.intAdd(val, try pt.intValue(int_tag_ty, 1), int_tag_ty, &overflow)37761 last_tag_val = result.val;
38742 else37762 if (result.overflow) break :overflow true;
38743 try pt.intValue(int_tag_ty, 0);37763 } else {
38744 if (overflow != null) break :overflow true;37764 last_tag_val = try pt.intValue(int_tag_ty, 0);
37765 }
38745 if (wip_ty.nextField(ip, field_name, last_tag_val.?.toIntern())) |conflict| {37766 if (wip_ty.nextField(ip, field_name, last_tag_val.?.toIntern())) |conflict| {
38746 assert(conflict.kind == .value); // AstGen validated names are unique37767 assert(conflict.kind == .value); // AstGen validated names are unique
38747 const other_field_src: LazySrcLoc = .{37768 const other_field_src: LazySrcLoc = .{
src/Sema/arith.zig created+1609
...@@ -0,0 +1,1609 @@
1//! This file encapsules all arithmetic operations on comptime-known integers, floats, and vectors.
2//!
3//! It is only used in cases where both operands are comptime-known; a single comptime-known operand
4//! is handled directly by `Sema.zig`.
5//!
6//! Functions starting with `int`, `comptimeInt`, or `float` are low-level primitives which operate
7//! on defined scalar values; generally speaking, they are at the bottom of this file and non-`pub`.
8
9/// Asserts that `ty` is a scalar integer type, and that `prev_val` is of type `ty`.
10/// Returns a value one greater than `prev_val`. If this would overflow `ty,` then the
11/// return value has `overflow` set, and `val` is instead a `comptime_int`.
12pub fn incrementDefinedInt(
13 sema: *Sema,
14 ty: Type,
15 prev_val: Value,
16) CompileError!struct { overflow: bool, val: Value } {
17 const pt = sema.pt;
18 const zcu = pt.zcu;
19 assert(prev_val.typeOf(zcu).toIntern() == ty.toIntern());
20 assert(!prev_val.isUndef(zcu));
21 const res = try intAdd(sema, prev_val, try pt.intValue(ty, 1), ty);
22 return .{ .overflow = res.overflow, .val = res.val };
23}
24
25/// `val` is of type `ty`.
26/// `ty` is a float, comptime_float, or vector thereof.
27pub fn negateFloat(
28 sema: *Sema,
29 ty: Type,
30 val: Value,
31) CompileError!Value {
32 const pt = sema.pt;
33 const zcu = pt.zcu;
34 if (val.isUndef(zcu)) return val;
35 switch (ty.zigTypeTag(zcu)) {
36 .vector => {
37 const scalar_ty = ty.childType(zcu);
38 const len = ty.vectorLen(zcu);
39 const result_elems = try sema.arena.alloc(InternPool.Index, len);
40 for (result_elems, 0..) |*result_elem, elem_idx| {
41 const elem = try val.elemValue(pt, elem_idx);
42 if (elem.isUndef(zcu)) {
43 result_elem.* = elem.toIntern();
44 } else {
45 result_elem.* = (try floatNeg(sema, elem, scalar_ty)).toIntern();
46 }
47 }
48 const result_val = try pt.intern(.{ .aggregate = .{
49 .ty = ty.toIntern(),
50 .storage = .{ .elems = result_elems },
51 } });
52 return .fromInterned(result_val);
53 },
54 .float, .comptime_float => return floatNeg(sema, val, ty),
55 else => unreachable,
56 }
57}
58
59/// Wraps on integers, but accepts floats.
60/// `lhs_val` and `rhs_val` are both of type `ty`.
61/// `ty` is an int, float, comptime_int, or comptime_float; *not* a vector.
62pub fn addMaybeWrap(
63 sema: *Sema,
64 ty: Type,
65 lhs: Value,
66 rhs: Value,
67) CompileError!Value {
68 const zcu = sema.pt.zcu;
69 if (lhs.isUndef(zcu)) return lhs;
70 if (lhs.isUndef(zcu)) return rhs;
71 switch (ty.zigTypeTag(zcu)) {
72 .int, .comptime_int => return (try intAddWithOverflow(sema, lhs, rhs, ty)).wrapped_result,
73 .float, .comptime_float => return floatAdd(sema, lhs, rhs, ty),
74 else => unreachable,
75 }
76}
77
78/// Wraps on integers, but accepts floats.
79/// `lhs_val` and `rhs_val` are both of type `ty`.
80/// `ty` is an int, float, comptime_int, or comptime_float; *not* a vector.
81pub fn subMaybeWrap(
82 sema: *Sema,
83 ty: Type,
84 lhs: Value,
85 rhs: Value,
86) CompileError!Value {
87 const zcu = sema.pt.zcu;
88 if (lhs.isUndef(zcu)) return lhs;
89 if (lhs.isUndef(zcu)) return rhs;
90 switch (ty.zigTypeTag(zcu)) {
91 .int, .comptime_int => return (try intSubWithOverflow(sema, lhs, rhs, ty)).wrapped_result,
92 .float, .comptime_float => return floatSub(sema, lhs, rhs, ty),
93 else => unreachable,
94 }
95}
96
97/// Wraps on integers, but accepts floats.
98/// `lhs_val` and `rhs_val` are both of type `ty`.
99/// `ty` is an int, float, comptime_int, or comptime_float; *not* a vector.
100pub fn mulMaybeWrap(
101 sema: *Sema,
102 ty: Type,
103 lhs: Value,
104 rhs: Value,
105) CompileError!Value {
106 const zcu = sema.pt.zcu;
107 if (lhs.isUndef(zcu)) return lhs;
108 if (lhs.isUndef(zcu)) return rhs;
109 switch (ty.zigTypeTag(zcu)) {
110 .int, .comptime_int => return (try intMulWithOverflow(sema, lhs, rhs, ty)).wrapped_result,
111 .float, .comptime_float => return floatMul(sema, lhs, rhs, ty),
112 else => unreachable,
113 }
114}
115
116/// `lhs` and `rhs` are of type `ty`.
117/// `ty` is an int, comptime_int, or vector thereof.
118pub fn addWithOverflow(
119 sema: *Sema,
120 ty: Type,
121 lhs: Value,
122 rhs: Value,
123) CompileError!Value.OverflowArithmeticResult {
124 const pt = sema.pt;
125 const zcu = pt.zcu;
126 switch (ty.zigTypeTag(zcu)) {
127 .int, .comptime_int => return addWithOverflowScalar(sema, ty, lhs, rhs),
128 .vector => {
129 const scalar_ty = ty.childType(zcu);
130 const len = ty.vectorLen(zcu);
131 switch (scalar_ty.zigTypeTag(zcu)) {
132 .int, .comptime_int => {},
133 else => unreachable,
134 }
135 const overflow_bits = try sema.arena.alloc(InternPool.Index, len);
136 const wrapped_results = try sema.arena.alloc(InternPool.Index, len);
137 for (overflow_bits, wrapped_results, 0..) |*ob, *wr, elem_idx| {
138 const lhs_elem = try lhs.elemValue(pt, elem_idx);
139 const rhs_elem = try rhs.elemValue(pt, elem_idx);
140 const elem_result = try addWithOverflowScalar(sema, scalar_ty, lhs_elem, rhs_elem);
141 ob.* = elem_result.overflow_bit.toIntern();
142 wr.* = elem_result.wrapped_result.toIntern();
143 }
144 return .{
145 .overflow_bit = .fromInterned(try pt.intern(.{ .aggregate = .{
146 .ty = (try pt.vectorType(.{ .len = len, .child = .u1_type })).toIntern(),
147 .storage = .{ .elems = overflow_bits },
148 } })),
149 .wrapped_result = .fromInterned(try pt.intern(.{ .aggregate = .{
150 .ty = ty.toIntern(),
151 .storage = .{ .elems = wrapped_results },
152 } })),
153 };
154 },
155 else => unreachable,
156 }
157}
158fn addWithOverflowScalar(
159 sema: *Sema,
160 ty: Type,
161 lhs: Value,
162 rhs: Value,
163) CompileError!Value.OverflowArithmeticResult {
164 const pt = sema.pt;
165 const zcu = pt.zcu;
166 switch (ty.zigTypeTag(zcu)) {
167 .int, .comptime_int => {},
168 else => unreachable,
169 }
170 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return .{
171 .overflow_bit = try pt.undefValue(.u1),
172 .wrapped_result = try pt.undefValue(ty),
173 };
174 return intAddWithOverflow(sema, lhs, rhs, ty);
175}
176
177/// `lhs` and `rhs` are of type `ty`.
178/// `ty` is an int, comptime_int, or vector thereof.
179pub fn subWithOverflow(
180 sema: *Sema,
181 ty: Type,
182 lhs: Value,
183 rhs: Value,
184) CompileError!Value.OverflowArithmeticResult {
185 const pt = sema.pt;
186 const zcu = pt.zcu;
187 switch (ty.zigTypeTag(zcu)) {
188 .int, .comptime_int => return subWithOverflowScalar(sema, ty, lhs, rhs),
189 .vector => {
190 const scalar_ty = ty.childType(zcu);
191 const len = ty.vectorLen(zcu);
192 switch (scalar_ty.zigTypeTag(zcu)) {
193 .int, .comptime_int => {},
194 else => unreachable,
195 }
196 const overflow_bits = try sema.arena.alloc(InternPool.Index, len);
197 const wrapped_results = try sema.arena.alloc(InternPool.Index, len);
198 for (overflow_bits, wrapped_results, 0..) |*ob, *wr, elem_idx| {
199 const lhs_elem = try lhs.elemValue(pt, elem_idx);
200 const rhs_elem = try rhs.elemValue(pt, elem_idx);
201 const elem_result = try subWithOverflowScalar(sema, scalar_ty, lhs_elem, rhs_elem);
202 ob.* = elem_result.overflow_bit.toIntern();
203 wr.* = elem_result.wrapped_result.toIntern();
204 }
205 return .{
206 .overflow_bit = .fromInterned(try pt.intern(.{ .aggregate = .{
207 .ty = (try pt.vectorType(.{ .len = len, .child = .u1_type })).toIntern(),
208 .storage = .{ .elems = overflow_bits },
209 } })),
210 .wrapped_result = .fromInterned(try pt.intern(.{ .aggregate = .{
211 .ty = ty.toIntern(),
212 .storage = .{ .elems = wrapped_results },
213 } })),
214 };
215 },
216 else => unreachable,
217 }
218}
219fn subWithOverflowScalar(
220 sema: *Sema,
221 ty: Type,
222 lhs: Value,
223 rhs: Value,
224) CompileError!Value.OverflowArithmeticResult {
225 const pt = sema.pt;
226 const zcu = pt.zcu;
227 switch (ty.zigTypeTag(zcu)) {
228 .int, .comptime_int => {},
229 else => unreachable,
230 }
231 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return .{
232 .overflow_bit = try pt.undefValue(.u1),
233 .wrapped_result = try pt.undefValue(ty),
234 };
235 return intSubWithOverflow(sema, lhs, rhs, ty);
236}
237
238/// `lhs` and `rhs` are of type `ty`.
239/// `ty` is an int, comptime_int, or vector thereof.
240pub fn mulWithOverflow(
241 sema: *Sema,
242 ty: Type,
243 lhs: Value,
244 rhs: Value,
245) CompileError!Value.OverflowArithmeticResult {
246 const pt = sema.pt;
247 const zcu = pt.zcu;
248 switch (ty.zigTypeTag(zcu)) {
249 .int, .comptime_int => return mulWithOverflowScalar(sema, ty, lhs, rhs),
250 .vector => {
251 const scalar_ty = ty.childType(zcu);
252 const len = ty.vectorLen(zcu);
253 switch (scalar_ty.zigTypeTag(zcu)) {
254 .int, .comptime_int => {},
255 else => unreachable,
256 }
257 const overflow_bits = try sema.arena.alloc(InternPool.Index, len);
258 const wrapped_results = try sema.arena.alloc(InternPool.Index, len);
259 for (overflow_bits, wrapped_results, 0..) |*ob, *wr, elem_idx| {
260 const lhs_elem = try lhs.elemValue(pt, elem_idx);
261 const rhs_elem = try rhs.elemValue(pt, elem_idx);
262 const elem_result = try mulWithOverflowScalar(sema, scalar_ty, lhs_elem, rhs_elem);
263 ob.* = elem_result.overflow_bit.toIntern();
264 wr.* = elem_result.wrapped_result.toIntern();
265 }
266 return .{
267 .overflow_bit = .fromInterned(try pt.intern(.{ .aggregate = .{
268 .ty = (try pt.vectorType(.{ .len = len, .child = .u1_type })).toIntern(),
269 .storage = .{ .elems = overflow_bits },
270 } })),
271 .wrapped_result = .fromInterned(try pt.intern(.{ .aggregate = .{
272 .ty = ty.toIntern(),
273 .storage = .{ .elems = wrapped_results },
274 } })),
275 };
276 },
277 else => unreachable,
278 }
279}
280fn mulWithOverflowScalar(
281 sema: *Sema,
282 ty: Type,
283 lhs: Value,
284 rhs: Value,
285) CompileError!Value.OverflowArithmeticResult {
286 const pt = sema.pt;
287 const zcu = pt.zcu;
288 switch (ty.zigTypeTag(zcu)) {
289 .int, .comptime_int => {},
290 else => unreachable,
291 }
292 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return .{
293 .overflow_bit = try pt.undefValue(.u1),
294 .wrapped_result = try pt.undefValue(ty),
295 };
296 return intMulWithOverflow(sema, lhs, rhs, ty);
297}
298
299/// Applies the `+` operator to comptime-known values.
300/// `lhs_val` and `rhs_val` are both of type `ty`.
301/// `ty` is an int, float, comptime_int, comptime_float, or vector.
302pub fn add(
303 sema: *Sema,
304 block: *Block,
305 ty: Type,
306 lhs_val: Value,
307 rhs_val: Value,
308 src: LazySrcLoc,
309 lhs_src: LazySrcLoc,
310 rhs_src: LazySrcLoc,
311) CompileError!Value {
312 const pt = sema.pt;
313 const zcu = pt.zcu;
314 switch (ty.zigTypeTag(zcu)) {
315 .vector => {
316 const elem_ty = ty.childType(zcu);
317 const len = ty.vectorLen(zcu);
318
319 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
320 for (elem_vals, 0..) |*result_elem, elem_idx| {
321 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
322 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
323 result_elem.* = (try addScalar(sema, block, elem_ty, lhs_elem, rhs_elem, src, lhs_src, rhs_src, elem_idx)).toIntern();
324 }
325
326 const result_val = try pt.intern(.{ .aggregate = .{
327 .ty = ty.toIntern(),
328 .storage = .{ .elems = elem_vals },
329 } });
330 return .fromInterned(result_val);
331 },
332 else => return addScalar(sema, block, ty, lhs_val, rhs_val, src, lhs_src, rhs_src, null),
333 }
334}
335fn addScalar(
336 sema: *Sema,
337 block: *Block,
338 ty: Type,
339 lhs_val: Value,
340 rhs_val: Value,
341 src: LazySrcLoc,
342 lhs_src: LazySrcLoc,
343 rhs_src: LazySrcLoc,
344 vec_idx: ?usize,
345) CompileError!Value {
346 const pt = sema.pt;
347 const zcu = pt.zcu;
348 const is_int = switch (ty.zigTypeTag(zcu)) {
349 .int, .comptime_int => true,
350 .float, .comptime_float => false,
351 else => unreachable,
352 };
353
354 if (is_int) {
355 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
356 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
357 const res = try intAdd(sema, lhs_val, rhs_val, ty);
358 if (res.overflow) return sema.failWithIntegerOverflow(block, src, ty, res.val, vec_idx);
359 return res.val;
360 } else {
361 if (lhs_val.isUndef(zcu)) return lhs_val;
362 if (rhs_val.isUndef(zcu)) return rhs_val;
363 return floatAdd(sema, lhs_val, rhs_val, ty);
364 }
365}
366
367/// Applies the `+%` operator to comptime-known values.
368/// `lhs_val` and `rhs_val` are both of type `ty`.
369/// `ty` is an int, comptime_int, or vector thereof.
370pub fn addWrap(
371 sema: *Sema,
372 ty: Type,
373 lhs_val: Value,
374 rhs_val: Value,
375) CompileError!Value {
376 const pt = sema.pt;
377 const zcu = pt.zcu;
378 switch (ty.zigTypeTag(zcu)) {
379 .vector => {
380 const elem_ty = ty.childType(zcu);
381 const len = ty.vectorLen(zcu);
382
383 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
384 for (elem_vals, 0..) |*result_elem, elem_idx| {
385 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
386 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
387 result_elem.* = (try addWrapScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
388 }
389
390 const result_val = try pt.intern(.{ .aggregate = .{
391 .ty = ty.toIntern(),
392 .storage = .{ .elems = elem_vals },
393 } });
394 return .fromInterned(result_val);
395 },
396 else => return addWrapScalar(sema, ty, lhs_val, rhs_val),
397 }
398}
399fn addWrapScalar(
400 sema: *Sema,
401 ty: Type,
402 lhs_val: Value,
403 rhs_val: Value,
404) CompileError!Value {
405 return (try addWithOverflowScalar(sema, ty, lhs_val, rhs_val)).wrapped_result;
406}
407
408/// Applies the `+|` operator to comptime-known values.
409/// `lhs_val` and `rhs_val` are both of type `ty`.
410/// `ty` is an int, comptime_int, or vector thereof.
411pub fn addSat(
412 sema: *Sema,
413 ty: Type,
414 lhs_val: Value,
415 rhs_val: Value,
416) CompileError!Value {
417 const pt = sema.pt;
418 const zcu = pt.zcu;
419 switch (ty.zigTypeTag(zcu)) {
420 .vector => {
421 const elem_ty = ty.childType(zcu);
422 const len = ty.vectorLen(zcu);
423
424 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
425 for (elem_vals, 0..) |*result_elem, elem_idx| {
426 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
427 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
428 result_elem.* = (try addSatScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
429 }
430
431 const result_val = try pt.intern(.{ .aggregate = .{
432 .ty = ty.toIntern(),
433 .storage = .{ .elems = elem_vals },
434 } });
435 return .fromInterned(result_val);
436 },
437 else => return addSatScalar(sema, ty, lhs_val, rhs_val),
438 }
439}
440fn addSatScalar(
441 sema: *Sema,
442 ty: Type,
443 lhs_val: Value,
444 rhs_val: Value,
445) CompileError!Value {
446 const pt = sema.pt;
447 const zcu = pt.zcu;
448 const is_comptime_int = switch (ty.zigTypeTag(zcu)) {
449 .int => false,
450 .comptime_int => true,
451 else => unreachable,
452 };
453 if (lhs_val.isUndef(zcu)) return lhs_val;
454 if (rhs_val.isUndef(zcu)) return rhs_val;
455 if (is_comptime_int) {
456 const res = try intAdd(sema, lhs_val, rhs_val, ty);
457 assert(!res.overflow);
458 return res.val;
459 } else {
460 return intAddSat(sema, lhs_val, rhs_val, ty);
461 }
462}
463
464/// Applies the `-` operator to comptime-known values.
465/// `lhs_val` and `rhs_val` are both of type `ty`.
466/// `ty` is an int, float, comptime_int, comptime_float, or vector.
467pub fn sub(
468 sema: *Sema,
469 block: *Block,
470 ty: Type,
471 lhs_val: Value,
472 rhs_val: Value,
473 src: LazySrcLoc,
474 lhs_src: LazySrcLoc,
475 rhs_src: LazySrcLoc,
476) CompileError!Value {
477 const pt = sema.pt;
478 const zcu = pt.zcu;
479 switch (ty.zigTypeTag(zcu)) {
480 .vector => {
481 const elem_ty = ty.childType(zcu);
482 const len = ty.vectorLen(zcu);
483
484 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
485 for (elem_vals, 0..) |*result_elem, elem_idx| {
486 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
487 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
488 result_elem.* = (try subScalar(sema, block, elem_ty, lhs_elem, rhs_elem, src, lhs_src, rhs_src, elem_idx)).toIntern();
489 }
490
491 const result_val = try pt.intern(.{ .aggregate = .{
492 .ty = ty.toIntern(),
493 .storage = .{ .elems = elem_vals },
494 } });
495 return .fromInterned(result_val);
496 },
497 else => return subScalar(sema, block, ty, lhs_val, rhs_val, src, lhs_src, rhs_src, null),
498 }
499}
500fn subScalar(
501 sema: *Sema,
502 block: *Block,
503 ty: Type,
504 lhs_val: Value,
505 rhs_val: Value,
506 src: LazySrcLoc,
507 lhs_src: LazySrcLoc,
508 rhs_src: LazySrcLoc,
509 vec_idx: ?usize,
510) CompileError!Value {
511 const pt = sema.pt;
512 const zcu = pt.zcu;
513 const is_int = switch (ty.zigTypeTag(zcu)) {
514 .int, .comptime_int => true,
515 .float, .comptime_float => false,
516 else => unreachable,
517 };
518
519 if (is_int) {
520 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
521 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
522 const res = try intSub(sema, lhs_val, rhs_val, ty);
523 if (res.overflow) return sema.failWithIntegerOverflow(block, src, ty, res.val, vec_idx);
524 return res.val;
525 } else {
526 if (lhs_val.isUndef(zcu)) return lhs_val;
527 if (rhs_val.isUndef(zcu)) return rhs_val;
528 return floatSub(sema, lhs_val, rhs_val, ty);
529 }
530}
531
532/// Applies the `-%` operator to comptime-known values.
533/// `lhs_val` and `rhs_val` are both of type `ty`.
534/// `ty` is an int, comptime_int, or vector thereof.
535pub fn subWrap(
536 sema: *Sema,
537 ty: Type,
538 lhs_val: Value,
539 rhs_val: Value,
540) CompileError!Value {
541 const pt = sema.pt;
542 const zcu = pt.zcu;
543 switch (ty.zigTypeTag(zcu)) {
544 .vector => {
545 const elem_ty = ty.childType(zcu);
546 const len = ty.vectorLen(zcu);
547
548 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
549 for (elem_vals, 0..) |*result_elem, elem_idx| {
550 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
551 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
552 result_elem.* = (try subWrapScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
553 }
554
555 const result_val = try pt.intern(.{ .aggregate = .{
556 .ty = ty.toIntern(),
557 .storage = .{ .elems = elem_vals },
558 } });
559 return .fromInterned(result_val);
560 },
561 else => return subWrapScalar(sema, ty, lhs_val, rhs_val),
562 }
563}
564fn subWrapScalar(
565 sema: *Sema,
566 ty: Type,
567 lhs_val: Value,
568 rhs_val: Value,
569) CompileError!Value {
570 const pt = sema.pt;
571 const zcu = pt.zcu;
572 switch (ty.zigTypeTag(zcu)) {
573 .int, .comptime_int => {},
574 else => unreachable,
575 }
576 if (lhs_val.isUndef(zcu)) return lhs_val;
577 if (rhs_val.isUndef(zcu)) return rhs_val;
578 const result = try intSubWithOverflow(sema, lhs_val, rhs_val, ty);
579 return result.wrapped_result;
580}
581
582/// Applies the `-|` operator to comptime-known values.
583/// `lhs_val` and `rhs_val` are both of type `ty`.
584/// `ty` is an int, comptime_int, or vector thereof.
585pub fn subSat(
586 sema: *Sema,
587 ty: Type,
588 lhs_val: Value,
589 rhs_val: Value,
590) CompileError!Value {
591 const pt = sema.pt;
592 const zcu = pt.zcu;
593 switch (ty.zigTypeTag(zcu)) {
594 .vector => {
595 const elem_ty = ty.childType(zcu);
596 const len = ty.vectorLen(zcu);
597
598 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
599 for (elem_vals, 0..) |*result_elem, elem_idx| {
600 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
601 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
602 result_elem.* = (try subSatScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
603 }
604
605 const result_val = try pt.intern(.{ .aggregate = .{
606 .ty = ty.toIntern(),
607 .storage = .{ .elems = elem_vals },
608 } });
609 return .fromInterned(result_val);
610 },
611 else => return subSatScalar(sema, ty, lhs_val, rhs_val),
612 }
613}
614fn subSatScalar(
615 sema: *Sema,
616 ty: Type,
617 lhs_val: Value,
618 rhs_val: Value,
619) CompileError!Value {
620 const pt = sema.pt;
621 const zcu = pt.zcu;
622 const is_comptime_int = switch (ty.zigTypeTag(zcu)) {
623 .int => false,
624 .comptime_int => true,
625 else => unreachable,
626 };
627 if (lhs_val.isUndef(zcu)) return lhs_val;
628 if (rhs_val.isUndef(zcu)) return rhs_val;
629 if (is_comptime_int) {
630 const res = try intSub(sema, lhs_val, rhs_val, ty);
631 assert(!res.overflow);
632 return res.val;
633 } else {
634 return intSubSat(sema, lhs_val, rhs_val, ty);
635 }
636}
637
638/// Applies the `*` operator to comptime-known values.
639/// `lhs_val` and `rhs_val` are fully-resolved values of type `ty`.
640/// `ty` is an int, float, comptime_int, comptime_float, or vector.
641pub fn mul(
642 sema: *Sema,
643 block: *Block,
644 ty: Type,
645 lhs_val: Value,
646 rhs_val: Value,
647 src: LazySrcLoc,
648 lhs_src: LazySrcLoc,
649 rhs_src: LazySrcLoc,
650) CompileError!Value {
651 const pt = sema.pt;
652 const zcu = pt.zcu;
653 switch (ty.zigTypeTag(zcu)) {
654 .vector => {
655 const elem_ty = ty.childType(zcu);
656 const len = ty.vectorLen(zcu);
657
658 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
659 for (elem_vals, 0..) |*result_elem, elem_idx| {
660 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
661 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
662 result_elem.* = (try mulScalar(sema, block, elem_ty, lhs_elem, rhs_elem, src, lhs_src, rhs_src, elem_idx)).toIntern();
663 }
664
665 const result_val = try pt.intern(.{ .aggregate = .{
666 .ty = ty.toIntern(),
667 .storage = .{ .elems = elem_vals },
668 } });
669 return .fromInterned(result_val);
670 },
671 else => return mulScalar(sema, block, ty, lhs_val, rhs_val, src, lhs_src, rhs_src, null),
672 }
673}
674fn mulScalar(
675 sema: *Sema,
676 block: *Block,
677 ty: Type,
678 lhs_val: Value,
679 rhs_val: Value,
680 src: LazySrcLoc,
681 lhs_src: LazySrcLoc,
682 rhs_src: LazySrcLoc,
683 vec_idx: ?usize,
684) CompileError!Value {
685 const pt = sema.pt;
686 const zcu = pt.zcu;
687 const is_int = switch (ty.zigTypeTag(zcu)) {
688 .int, .comptime_int => true,
689 .float, .comptime_float => false,
690 else => unreachable,
691 };
692
693 if (is_int) {
694 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
695 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
696 const res = try intMul(sema, lhs_val, rhs_val, ty);
697 if (res.overflow) return sema.failWithIntegerOverflow(block, src, ty, res.val, vec_idx);
698 return res.val;
699 } else {
700 if (lhs_val.isUndef(zcu)) return lhs_val;
701 if (rhs_val.isUndef(zcu)) return rhs_val;
702 return floatMul(sema, lhs_val, rhs_val, ty);
703 }
704}
705
706/// Applies the `*%` operator to comptime-known values.
707/// `lhs_val` and `rhs_val` are both of type `ty`.
708/// `ty` is an int, comptime_int, or vector thereof.
709pub fn mulWrap(
710 sema: *Sema,
711 ty: Type,
712 lhs_val: Value,
713 rhs_val: Value,
714) CompileError!Value {
715 const pt = sema.pt;
716 const zcu = pt.zcu;
717 switch (ty.zigTypeTag(zcu)) {
718 .vector => {
719 const elem_ty = ty.childType(zcu);
720 const len = ty.vectorLen(zcu);
721
722 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
723 for (elem_vals, 0..) |*result_elem, elem_idx| {
724 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
725 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
726 result_elem.* = (try mulWrapScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
727 }
728
729 const result_val = try pt.intern(.{ .aggregate = .{
730 .ty = ty.toIntern(),
731 .storage = .{ .elems = elem_vals },
732 } });
733 return .fromInterned(result_val);
734 },
735 else => return mulWrapScalar(sema, ty, lhs_val, rhs_val),
736 }
737}
738fn mulWrapScalar(
739 sema: *Sema,
740 ty: Type,
741 lhs_val: Value,
742 rhs_val: Value,
743) CompileError!Value {
744 const pt = sema.pt;
745 const zcu = pt.zcu;
746 switch (ty.zigTypeTag(zcu)) {
747 .int, .comptime_int => {},
748 else => unreachable,
749 }
750 if (lhs_val.isUndef(zcu)) return lhs_val;
751 if (rhs_val.isUndef(zcu)) return rhs_val;
752 const result = try intMulWithOverflow(sema, lhs_val, rhs_val, ty);
753 return result.wrapped_result;
754}
755
756/// Applies the `*|` operator to comptime-known values.
757/// `lhs_val` and `rhs_val` are both of type `ty`.
758/// `ty` is an int, comptime_int, or vector thereof.
759pub fn mulSat(
760 sema: *Sema,
761 ty: Type,
762 lhs_val: Value,
763 rhs_val: Value,
764) CompileError!Value {
765 const pt = sema.pt;
766 const zcu = pt.zcu;
767 switch (ty.zigTypeTag(zcu)) {
768 .vector => {
769 const elem_ty = ty.childType(zcu);
770 const len = ty.vectorLen(zcu);
771
772 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
773 for (elem_vals, 0..) |*result_elem, elem_idx| {
774 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
775 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
776 result_elem.* = (try mulSatScalar(sema, elem_ty, lhs_elem, rhs_elem)).toIntern();
777 }
778
779 const result_val = try pt.intern(.{ .aggregate = .{
780 .ty = ty.toIntern(),
781 .storage = .{ .elems = elem_vals },
782 } });
783 return .fromInterned(result_val);
784 },
785 else => return mulSatScalar(sema, ty, lhs_val, rhs_val),
786 }
787}
788fn mulSatScalar(
789 sema: *Sema,
790 ty: Type,
791 lhs_val: Value,
792 rhs_val: Value,
793) CompileError!Value {
794 const pt = sema.pt;
795 const zcu = pt.zcu;
796 const is_comptime_int = switch (ty.zigTypeTag(zcu)) {
797 .int => false,
798 .comptime_int => true,
799 else => unreachable,
800 };
801 if (lhs_val.isUndef(zcu)) return lhs_val;
802 if (rhs_val.isUndef(zcu)) return rhs_val;
803 if (is_comptime_int) {
804 const res = try intMul(sema, lhs_val, rhs_val, ty);
805 assert(!res.overflow);
806 return res.val;
807 } else {
808 return intMulSat(sema, lhs_val, rhs_val, ty);
809 }
810}
811
812pub const DivOp = enum { div, div_trunc, div_floor, div_exact };
813
814/// Applies the `/` operator to comptime-known values.
815/// `lhs_val` and `rhs_val` are fully-resolved values of type `ty`.
816/// `ty` is an int, float, comptime_int, comptime_float, or vector.
817pub fn div(
818 sema: *Sema,
819 block: *Block,
820 ty: Type,
821 lhs_val: Value,
822 rhs_val: Value,
823 src: LazySrcLoc,
824 lhs_src: LazySrcLoc,
825 rhs_src: LazySrcLoc,
826 op: DivOp,
827) CompileError!Value {
828 const pt = sema.pt;
829 const zcu = pt.zcu;
830 switch (ty.zigTypeTag(zcu)) {
831 .vector => {
832 const elem_ty = ty.childType(zcu);
833 const len = ty.vectorLen(zcu);
834
835 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
836 for (elem_vals, 0..) |*result_elem, elem_idx| {
837 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
838 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
839 result_elem.* = (try divScalar(sema, block, elem_ty, lhs_elem, rhs_elem, src, lhs_src, rhs_src, op, elem_idx)).toIntern();
840 }
841
842 const result_val = try pt.intern(.{ .aggregate = .{
843 .ty = ty.toIntern(),
844 .storage = .{ .elems = elem_vals },
845 } });
846 return .fromInterned(result_val);
847 },
848 else => return divScalar(sema, block, ty, lhs_val, rhs_val, src, lhs_src, rhs_src, op, null),
849 }
850}
851fn divScalar(
852 sema: *Sema,
853 block: *Block,
854 ty: Type,
855 lhs_val: Value,
856 rhs_val: Value,
857 src: LazySrcLoc,
858 lhs_src: LazySrcLoc,
859 rhs_src: LazySrcLoc,
860 op: DivOp,
861 vec_idx: ?usize,
862) CompileError!Value {
863 const pt = sema.pt;
864 const zcu = pt.zcu;
865 const is_int = switch (ty.zigTypeTag(zcu)) {
866 .int, .comptime_int => true,
867 .float, .comptime_float => false,
868 else => unreachable,
869 };
870
871 if (is_int) {
872 if (rhs_val.eqlScalarNum(.zero_comptime_int, zcu)) return sema.failWithDivideByZero(block, rhs_src);
873
874 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
875 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
876
877 switch (op) {
878 .div, .div_trunc => {
879 const res = try intDivTrunc(sema, lhs_val, rhs_val, ty);
880 if (res.overflow) return sema.failWithIntegerOverflow(block, src, ty, res.val, vec_idx);
881 return res.val;
882 },
883 .div_floor => {
884 const res = try intDivFloor(sema, lhs_val, rhs_val, ty);
885 if (res.overflow) return sema.failWithIntegerOverflow(block, src, ty, res.val, vec_idx);
886 return res.val;
887 },
888 .div_exact => switch (try intDivExact(sema, lhs_val, rhs_val, ty)) {
889 .remainder => return sema.fail(block, src, "exact division produced remainder", .{}),
890 .overflow => |val| return sema.failWithIntegerOverflow(block, src, ty, val, vec_idx),
891 .success => |val| return val,
892 },
893 }
894 } else {
895 const allow_div_zero = switch (op) {
896 .div, .div_trunc, .div_floor => ty.toIntern() != .comptime_float_type and block.float_mode == .strict,
897 .div_exact => false,
898 };
899 if (!allow_div_zero) {
900 if (rhs_val.eqlScalarNum(.zero_comptime_int, zcu)) return sema.failWithDivideByZero(block, rhs_src);
901 }
902
903 const can_exhibit_ib = !allow_div_zero or op == .div_exact;
904 if (can_exhibit_ib) {
905 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
906 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
907 } else {
908 if (lhs_val.isUndef(zcu)) return lhs_val;
909 if (rhs_val.isUndef(zcu)) return rhs_val;
910 }
911
912 switch (op) {
913 .div => return floatDiv(sema, lhs_val, rhs_val, ty),
914 .div_trunc => return floatDivTrunc(sema, lhs_val, rhs_val, ty),
915 .div_floor => return floatDivFloor(sema, lhs_val, rhs_val, ty),
916 .div_exact => {
917 if (!floatDivIsExact(sema, lhs_val, rhs_val, ty)) {
918 return sema.fail(block, src, "exact division produced remainder", .{});
919 }
920 return floatDivTrunc(sema, lhs_val, rhs_val, ty);
921 },
922 }
923 }
924}
925
926pub const ModRemOp = enum { mod, rem };
927
928/// Applies `@mod` or `@rem` to comptime-known values.
929/// `lhs_val` and `rhs_val` are fully-resolved values of type `ty`.
930/// `ty` is an int, float, comptime_int, comptime_float, or vector.
931pub fn modRem(
932 sema: *Sema,
933 block: *Block,
934 ty: Type,
935 lhs_val: Value,
936 rhs_val: Value,
937 lhs_src: LazySrcLoc,
938 rhs_src: LazySrcLoc,
939 op: ModRemOp,
940) CompileError!Value {
941 const pt = sema.pt;
942 const zcu = pt.zcu;
943 switch (ty.zigTypeTag(zcu)) {
944 .vector => {
945 const elem_ty = ty.childType(zcu);
946 const len = ty.vectorLen(zcu);
947
948 const elem_vals = try sema.arena.alloc(InternPool.Index, len);
949 for (elem_vals, 0..) |*result_elem, elem_idx| {
950 const lhs_elem = try lhs_val.elemValue(pt, elem_idx);
951 const rhs_elem = try rhs_val.elemValue(pt, elem_idx);
952 result_elem.* = (try modRemScalar(sema, block, elem_ty, lhs_elem, rhs_elem, lhs_src, rhs_src, op, elem_idx)).toIntern();
953 }
954
955 const result_val = try pt.intern(.{ .aggregate = .{
956 .ty = ty.toIntern(),
957 .storage = .{ .elems = elem_vals },
958 } });
959 return .fromInterned(result_val);
960 },
961 else => return modRemScalar(sema, block, ty, lhs_val, rhs_val, lhs_src, rhs_src, op, null),
962 }
963}
964fn modRemScalar(
965 sema: *Sema,
966 block: *Block,
967 ty: Type,
968 lhs_val: Value,
969 rhs_val: Value,
970 lhs_src: LazySrcLoc,
971 rhs_src: LazySrcLoc,
972 op: ModRemOp,
973 vec_idx: ?usize,
974) CompileError!Value {
975 const pt = sema.pt;
976 const zcu = pt.zcu;
977 const is_int = switch (ty.zigTypeTag(zcu)) {
978 .int, .comptime_int => true,
979 .float, .comptime_float => false,
980 else => unreachable,
981 };
982
983 _ = vec_idx; // TODO: use this in the "use of undefined" error
984
985 const allow_div_zero = !is_int and block.float_mode == .strict;
986 if (allow_div_zero) {
987 if (lhs_val.isUndef(zcu)) return lhs_val;
988 if (rhs_val.isUndef(zcu)) return rhs_val;
989 } else {
990 if (lhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, lhs_src);
991 if (rhs_val.isUndef(zcu)) return sema.failWithUseOfUndef(block, rhs_src);
992 if (rhs_val.eqlScalarNum(.zero_comptime_int, zcu)) return sema.failWithDivideByZero(block, rhs_src);
993 }
994
995 if (is_int) {
996 switch (op) {
997 .mod => return intMod(sema, lhs_val, rhs_val, ty),
998 .rem => return intRem(sema, lhs_val, rhs_val, ty),
999 }
1000 } else {
1001 switch (op) {
1002 .mod => return floatMod(sema, lhs_val, rhs_val, ty),
1003 .rem => return floatRem(sema, lhs_val, rhs_val, ty),
1004 }
1005 }
1006}
1007
1008/// If the value overflowed the type, returns a comptime_int instead.
1009/// Only supports scalars.
1010fn intAdd(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !struct { overflow: bool, val: Value } {
1011 const pt = sema.pt;
1012 const zcu = pt.zcu;
1013 switch (ty.toIntern()) {
1014 .comptime_int_type => return .{ .overflow = false, .val = try comptimeIntAdd(sema, lhs, rhs) },
1015 else => {
1016 const res = try intAddWithOverflowInner(sema, lhs, rhs, ty);
1017 return switch (res.overflow_bit.toUnsignedInt(zcu)) {
1018 0 => .{ .overflow = false, .val = res.wrapped_result },
1019 1 => .{ .overflow = true, .val = try comptimeIntAdd(sema, lhs, rhs) },
1020 else => unreachable,
1021 };
1022 },
1023 }
1024}
1025/// Add two integers, returning a `comptime_int` regardless of the input types.
1026fn comptimeIntAdd(sema: *Sema, lhs: Value, rhs: Value) !Value {
1027 const pt = sema.pt;
1028 const zcu = pt.zcu;
1029 // TODO is this a performance issue? maybe we should try the operation without
1030 // resorting to BigInt first.
1031 var lhs_space: Value.BigIntSpace = undefined;
1032 var rhs_space: Value.BigIntSpace = undefined;
1033 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1034 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1035 const limbs = try sema.arena.alloc(
1036 std.math.big.Limb,
1037 @max(lhs_bigint.limbs.len, rhs_bigint.limbs.len) + 1,
1038 );
1039 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1040 result_bigint.add(lhs_bigint, rhs_bigint);
1041 return pt.intValue_big(.comptime_int, result_bigint.toConst());
1042}
1043fn intAddWithOverflow(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1044 switch (ty.toIntern()) {
1045 .comptime_int_type => return .{
1046 .overflow_bit = try sema.pt.intValue(.u1, 0),
1047 .wrapped_result = try comptimeIntAdd(sema, lhs, rhs),
1048 },
1049 else => return intAddWithOverflowInner(sema, lhs, rhs, ty),
1050 }
1051}
1052/// Like `intAddWithOverflow`, but asserts that `ty` is not `Type.comptime_int`.
1053fn intAddWithOverflowInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1054 assert(ty.toIntern() != .comptime_int_type);
1055 const pt = sema.pt;
1056 const zcu = pt.zcu;
1057 const info = ty.intInfo(zcu);
1058 var lhs_space: Value.BigIntSpace = undefined;
1059 var rhs_space: Value.BigIntSpace = undefined;
1060 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
1061 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
1062 const limbs = try sema.arena.alloc(
1063 std.math.big.Limb,
1064 std.math.big.int.calcTwosCompLimbCount(info.bits),
1065 );
1066 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1067 const overflowed = result_bigint.addWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1068 return .{
1069 .overflow_bit = try pt.intValue(.u1, @intFromBool(overflowed)),
1070 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
1071 };
1072}
1073fn intAddSat(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1074 const pt = sema.pt;
1075 const zcu = pt.zcu;
1076 const info = ty.intInfo(zcu);
1077 var lhs_space: Value.BigIntSpace = undefined;
1078 var rhs_space: Value.BigIntSpace = undefined;
1079 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1080 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1081 const limbs = try sema.arena.alloc(
1082 std.math.big.Limb,
1083 std.math.big.int.calcTwosCompLimbCount(info.bits),
1084 );
1085 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1086 result_bigint.addSat(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1087 return pt.intValue_big(ty, result_bigint.toConst());
1088}
1089
1090/// If the value overflowed the type, returns a comptime_int instead.
1091/// Only supports scalars.
1092fn intSub(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !struct { overflow: bool, val: Value } {
1093 const pt = sema.pt;
1094 const zcu = pt.zcu;
1095 switch (ty.toIntern()) {
1096 .comptime_int_type => return .{ .overflow = false, .val = try comptimeIntSub(sema, lhs, rhs) },
1097 else => {
1098 const res = try intSubWithOverflowInner(sema, lhs, rhs, ty);
1099 return switch (res.overflow_bit.toUnsignedInt(zcu)) {
1100 0 => .{ .overflow = false, .val = res.wrapped_result },
1101 1 => .{ .overflow = true, .val = try comptimeIntSub(sema, lhs, rhs) },
1102 else => unreachable,
1103 };
1104 },
1105 }
1106}
1107/// Subtract two integers, returning a `comptime_int` regardless of the input types.
1108fn comptimeIntSub(sema: *Sema, lhs: Value, rhs: Value) !Value {
1109 const pt = sema.pt;
1110 const zcu = pt.zcu;
1111 // TODO is this a performance issue? maybe we should try the operation without
1112 // resorting to BigInt first.
1113 var lhs_space: Value.BigIntSpace = undefined;
1114 var rhs_space: Value.BigIntSpace = undefined;
1115 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1116 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1117 const limbs = try sema.arena.alloc(
1118 std.math.big.Limb,
1119 @max(lhs_bigint.limbs.len, rhs_bigint.limbs.len) + 1,
1120 );
1121 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1122 result_bigint.sub(lhs_bigint, rhs_bigint);
1123 return pt.intValue_big(.comptime_int, result_bigint.toConst());
1124}
1125fn intSubWithOverflow(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1126 switch (ty.toIntern()) {
1127 .comptime_int_type => return .{
1128 .overflow_bit = try sema.pt.intValue(.u1, 0),
1129 .wrapped_result = try comptimeIntSub(sema, lhs, rhs),
1130 },
1131 else => return intSubWithOverflowInner(sema, lhs, rhs, ty),
1132 }
1133}
1134/// Like `intSubWithOverflow`, but asserts that `ty` is not `Type.comptime_int`.
1135fn intSubWithOverflowInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1136 assert(ty.toIntern() != .comptime_int_type);
1137 const pt = sema.pt;
1138 const zcu = pt.zcu;
1139 const info = ty.intInfo(zcu);
1140 var lhs_space: Value.BigIntSpace = undefined;
1141 var rhs_space: Value.BigIntSpace = undefined;
1142 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
1143 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
1144 const limbs = try sema.arena.alloc(
1145 std.math.big.Limb,
1146 std.math.big.int.calcTwosCompLimbCount(info.bits),
1147 );
1148 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1149 const overflowed = result_bigint.subWrap(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1150 return .{
1151 .overflow_bit = try pt.intValue(.u1, @intFromBool(overflowed)),
1152 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
1153 };
1154}
1155fn intSubSat(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1156 const pt = sema.pt;
1157 const zcu = pt.zcu;
1158 const info = ty.intInfo(zcu);
1159 var lhs_space: Value.BigIntSpace = undefined;
1160 var rhs_space: Value.BigIntSpace = undefined;
1161 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1162 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1163 const limbs = try sema.arena.alloc(
1164 std.math.big.Limb,
1165 std.math.big.int.calcTwosCompLimbCount(info.bits),
1166 );
1167 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1168 result_bigint.subSat(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1169 return pt.intValue_big(ty, result_bigint.toConst());
1170}
1171
1172/// If the value overflowed the type, returns a comptime_int instead.
1173/// Only supports scalars.
1174fn intMul(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !struct { overflow: bool, val: Value } {
1175 const pt = sema.pt;
1176 const zcu = pt.zcu;
1177 switch (ty.toIntern()) {
1178 .comptime_int_type => return .{ .overflow = false, .val = try comptimeIntMul(sema, lhs, rhs) },
1179 else => {
1180 const res = try intMulWithOverflowInner(sema, lhs, rhs, ty);
1181 return switch (res.overflow_bit.toUnsignedInt(zcu)) {
1182 0 => .{ .overflow = false, .val = res.wrapped_result },
1183 1 => .{ .overflow = true, .val = try comptimeIntMul(sema, lhs, rhs) },
1184 else => unreachable,
1185 };
1186 },
1187 }
1188}
1189/// Multiply two integers, returning a `comptime_int` regardless of the input types.
1190fn comptimeIntMul(sema: *Sema, lhs: Value, rhs: Value) !Value {
1191 const pt = sema.pt;
1192 const zcu = pt.zcu;
1193 // TODO is this a performance issue? maybe we should try the operation without
1194 // resorting to BigInt first.
1195 var lhs_space: Value.BigIntSpace = undefined;
1196 var rhs_space: Value.BigIntSpace = undefined;
1197 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1198 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1199 const limbs = try sema.arena.alloc(
1200 std.math.big.Limb,
1201 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
1202 );
1203 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1204 const limbs_buffer = try sema.arena.alloc(
1205 std.math.big.Limb,
1206 std.math.big.int.calcMulLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len, 1),
1207 );
1208 result_bigint.mul(lhs_bigint, rhs_bigint, limbs_buffer, sema.arena);
1209 return pt.intValue_big(.comptime_int, result_bigint.toConst());
1210}
1211fn intMulWithOverflow(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1212 switch (ty.toIntern()) {
1213 .comptime_int_type => return .{
1214 .overflow_bit = try sema.pt.intValue(.u1, 0),
1215 .wrapped_result = try comptimeIntMul(sema, lhs, rhs),
1216 },
1217 else => return intMulWithOverflowInner(sema, lhs, rhs, ty),
1218 }
1219}
1220/// Like `intMulWithOverflow`, but asserts that `ty` is not `Type.comptime_int`.
1221fn intMulWithOverflowInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value.OverflowArithmeticResult {
1222 const pt = sema.pt;
1223 const zcu = pt.zcu;
1224 const info = ty.intInfo(zcu);
1225 var lhs_space: Value.BigIntSpace = undefined;
1226 var rhs_space: Value.BigIntSpace = undefined;
1227 const lhs_bigint = try lhs.toBigIntSema(&lhs_space, pt);
1228 const rhs_bigint = try rhs.toBigIntSema(&rhs_space, pt);
1229 const limbs = try sema.arena.alloc(
1230 std.math.big.Limb,
1231 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
1232 );
1233 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1234 result_bigint.mulNoAlias(lhs_bigint, rhs_bigint, sema.arena);
1235 const overflowed = !result_bigint.toConst().fitsInTwosComp(info.signedness, info.bits);
1236 if (overflowed) result_bigint.truncate(result_bigint.toConst(), info.signedness, info.bits);
1237 return .{
1238 .overflow_bit = try pt.intValue(.u1, @intFromBool(overflowed)),
1239 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
1240 };
1241}
1242fn intMulSat(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1243 const pt = sema.pt;
1244 const zcu = pt.zcu;
1245 const info = ty.intInfo(zcu);
1246 var lhs_space: Value.BigIntSpace = undefined;
1247 var rhs_space: Value.BigIntSpace = undefined;
1248 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1249 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1250 const limbs = try sema.arena.alloc(
1251 std.math.big.Limb,
1252 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
1253 );
1254 var result_bigint: BigIntMutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
1255 result_bigint.mulNoAlias(lhs_bigint, rhs_bigint, sema.arena);
1256 result_bigint.saturate(result_bigint.toConst(), info.signedness, info.bits);
1257 return pt.intValue_big(ty, result_bigint.toConst());
1258}
1259fn intDivTrunc(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !struct { overflow: bool, val: Value } {
1260 const result = intDivTruncInner(sema, lhs, rhs, ty) catch |err| switch (err) {
1261 error.Overflow => {
1262 const result = intDivTruncInner(sema, lhs, rhs, .comptime_int) catch |err1| switch (err1) {
1263 error.Overflow => unreachable,
1264 else => |e| return e,
1265 };
1266 return .{ .overflow = true, .val = result };
1267 },
1268 else => |e| return e,
1269 };
1270 return .{ .overflow = false, .val = result };
1271}
1272fn intDivTruncInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1273 const pt = sema.pt;
1274 const zcu = pt.zcu;
1275 var lhs_space: Value.BigIntSpace = undefined;
1276 var rhs_space: Value.BigIntSpace = undefined;
1277 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1278 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1279 const limbs_q = try sema.arena.alloc(
1280 std.math.big.Limb,
1281 lhs_bigint.limbs.len,
1282 );
1283 const limbs_r = try sema.arena.alloc(
1284 std.math.big.Limb,
1285 rhs_bigint.limbs.len,
1286 );
1287 const limbs_buf = try sema.arena.alloc(
1288 std.math.big.Limb,
1289 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
1290 );
1291 var result_q: BigIntMutable = .{ .limbs = limbs_q, .positive = undefined, .len = undefined };
1292 var result_r: BigIntMutable = .{ .limbs = limbs_r, .positive = undefined, .len = undefined };
1293 result_q.divTrunc(&result_r, lhs_bigint, rhs_bigint, limbs_buf);
1294 if (ty.toIntern() != .comptime_int_type) {
1295 const info = ty.intInfo(zcu);
1296 if (!result_q.toConst().fitsInTwosComp(info.signedness, info.bits)) {
1297 return error.Overflow;
1298 }
1299 }
1300 return pt.intValue_big(ty, result_q.toConst());
1301}
1302fn intDivExact(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !union(enum) {
1303 remainder,
1304 overflow: Value,
1305 success: Value,
1306} {
1307 const pt = sema.pt;
1308 const zcu = pt.zcu;
1309 var lhs_space: Value.BigIntSpace = undefined;
1310 var rhs_space: Value.BigIntSpace = undefined;
1311 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1312 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1313 const limbs_q = try sema.arena.alloc(
1314 std.math.big.Limb,
1315 lhs_bigint.limbs.len,
1316 );
1317 const limbs_r = try sema.arena.alloc(
1318 std.math.big.Limb,
1319 rhs_bigint.limbs.len,
1320 );
1321 const limbs_buf = try sema.arena.alloc(
1322 std.math.big.Limb,
1323 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
1324 );
1325 var result_q: BigIntMutable = .{ .limbs = limbs_q, .positive = undefined, .len = undefined };
1326 var result_r: BigIntMutable = .{ .limbs = limbs_r, .positive = undefined, .len = undefined };
1327 result_q.divTrunc(&result_r, lhs_bigint, rhs_bigint, limbs_buf);
1328 if (!result_r.toConst().eqlZero()) {
1329 return .remainder;
1330 }
1331 if (ty.toIntern() != .comptime_int_type) {
1332 const info = ty.intInfo(zcu);
1333 if (!result_q.toConst().fitsInTwosComp(info.signedness, info.bits)) {
1334 return .{ .overflow = try pt.intValue_big(.comptime_int, result_q.toConst()) };
1335 }
1336 }
1337 return .{ .success = try pt.intValue_big(ty, result_q.toConst()) };
1338}
1339fn intDivFloor(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !struct { overflow: bool, val: Value } {
1340 const result = intDivFloorInner(sema, lhs, rhs, ty) catch |err| switch (err) {
1341 error.Overflow => {
1342 const result = intDivFloorInner(sema, lhs, rhs, .comptime_int) catch |err1| switch (err1) {
1343 error.Overflow => unreachable,
1344 else => |e| return e,
1345 };
1346 return .{ .overflow = true, .val = result };
1347 },
1348 else => |e| return e,
1349 };
1350 return .{ .overflow = false, .val = result };
1351}
1352fn intDivFloorInner(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1353 const pt = sema.pt;
1354 const zcu = pt.zcu;
1355 var lhs_space: Value.BigIntSpace = undefined;
1356 var rhs_space: Value.BigIntSpace = undefined;
1357 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1358 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1359 const limbs_q = try sema.arena.alloc(
1360 std.math.big.Limb,
1361 lhs_bigint.limbs.len,
1362 );
1363 const limbs_r = try sema.arena.alloc(
1364 std.math.big.Limb,
1365 rhs_bigint.limbs.len,
1366 );
1367 const limbs_buf = try sema.arena.alloc(
1368 std.math.big.Limb,
1369 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
1370 );
1371 var result_q: BigIntMutable = .{ .limbs = limbs_q, .positive = undefined, .len = undefined };
1372 var result_r: BigIntMutable = .{ .limbs = limbs_r, .positive = undefined, .len = undefined };
1373 result_q.divFloor(&result_r, lhs_bigint, rhs_bigint, limbs_buf);
1374 if (ty.toIntern() != .comptime_int_type) {
1375 const info = ty.intInfo(zcu);
1376 if (!result_q.toConst().fitsInTwosComp(info.signedness, info.bits)) {
1377 return error.Overflow;
1378 }
1379 }
1380 return pt.intValue_big(ty, result_q.toConst());
1381}
1382fn intMod(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1383 const pt = sema.pt;
1384 const zcu = pt.zcu;
1385 var lhs_space: Value.BigIntSpace = undefined;
1386 var rhs_space: Value.BigIntSpace = undefined;
1387 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1388 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1389 const limbs_q = try sema.arena.alloc(
1390 std.math.big.Limb,
1391 lhs_bigint.limbs.len,
1392 );
1393 const limbs_r = try sema.arena.alloc(
1394 std.math.big.Limb,
1395 rhs_bigint.limbs.len,
1396 );
1397 const limbs_buf = try sema.arena.alloc(
1398 std.math.big.Limb,
1399 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
1400 );
1401 var result_q: BigIntMutable = .{ .limbs = limbs_q, .positive = undefined, .len = undefined };
1402 var result_r: BigIntMutable = .{ .limbs = limbs_r, .positive = undefined, .len = undefined };
1403 result_q.divFloor(&result_r, lhs_bigint, rhs_bigint, limbs_buf);
1404 return pt.intValue_big(ty, result_r.toConst());
1405}
1406fn intRem(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1407 const pt = sema.pt;
1408 const zcu = pt.zcu;
1409 var lhs_space: Value.BigIntSpace = undefined;
1410 var rhs_space: Value.BigIntSpace = undefined;
1411 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1412 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1413 const limbs_q = try sema.arena.alloc(
1414 std.math.big.Limb,
1415 lhs_bigint.limbs.len,
1416 );
1417 const limbs_r = try sema.arena.alloc(
1418 std.math.big.Limb,
1419 rhs_bigint.limbs.len,
1420 );
1421 const limbs_buf = try sema.arena.alloc(
1422 std.math.big.Limb,
1423 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
1424 );
1425 var result_q: BigIntMutable = .{ .limbs = limbs_q, .positive = undefined, .len = undefined };
1426 var result_r: BigIntMutable = .{ .limbs = limbs_r, .positive = undefined, .len = undefined };
1427 result_q.divTrunc(&result_r, lhs_bigint, rhs_bigint, limbs_buf);
1428 return pt.intValue_big(ty, result_r.toConst());
1429}
1430
1431fn floatAdd(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1432 const pt = sema.pt;
1433 const zcu = pt.zcu;
1434 const target = zcu.getTarget();
1435 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1436 16 => .{ .f16 = lhs.toFloat(f16, zcu) + rhs.toFloat(f16, zcu) },
1437 32 => .{ .f32 = lhs.toFloat(f32, zcu) + rhs.toFloat(f32, zcu) },
1438 64 => .{ .f64 = lhs.toFloat(f64, zcu) + rhs.toFloat(f64, zcu) },
1439 80 => .{ .f80 = lhs.toFloat(f80, zcu) + rhs.toFloat(f80, zcu) },
1440 128 => .{ .f128 = lhs.toFloat(f128, zcu) + rhs.toFloat(f128, zcu) },
1441 else => unreachable,
1442 };
1443 return .fromInterned(try pt.intern(.{ .float = .{
1444 .ty = ty.toIntern(),
1445 .storage = storage,
1446 } }));
1447}
1448fn floatSub(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1449 const pt = sema.pt;
1450 const zcu = pt.zcu;
1451 const target = zcu.getTarget();
1452 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1453 16 => .{ .f16 = lhs.toFloat(f16, zcu) - rhs.toFloat(f16, zcu) },
1454 32 => .{ .f32 = lhs.toFloat(f32, zcu) - rhs.toFloat(f32, zcu) },
1455 64 => .{ .f64 = lhs.toFloat(f64, zcu) - rhs.toFloat(f64, zcu) },
1456 80 => .{ .f80 = lhs.toFloat(f80, zcu) - rhs.toFloat(f80, zcu) },
1457 128 => .{ .f128 = lhs.toFloat(f128, zcu) - rhs.toFloat(f128, zcu) },
1458 else => unreachable,
1459 };
1460 return .fromInterned(try pt.intern(.{ .float = .{
1461 .ty = ty.toIntern(),
1462 .storage = storage,
1463 } }));
1464}
1465fn floatMul(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1466 const pt = sema.pt;
1467 const zcu = pt.zcu;
1468 const target = zcu.getTarget();
1469 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1470 16 => .{ .f16 = lhs.toFloat(f16, zcu) * rhs.toFloat(f16, zcu) },
1471 32 => .{ .f32 = lhs.toFloat(f32, zcu) * rhs.toFloat(f32, zcu) },
1472 64 => .{ .f64 = lhs.toFloat(f64, zcu) * rhs.toFloat(f64, zcu) },
1473 80 => .{ .f80 = lhs.toFloat(f80, zcu) * rhs.toFloat(f80, zcu) },
1474 128 => .{ .f128 = lhs.toFloat(f128, zcu) * rhs.toFloat(f128, zcu) },
1475 else => unreachable,
1476 };
1477 return .fromInterned(try pt.intern(.{ .float = .{
1478 .ty = ty.toIntern(),
1479 .storage = storage,
1480 } }));
1481}
1482fn floatDiv(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1483 const pt = sema.pt;
1484 const zcu = pt.zcu;
1485 const target = zcu.getTarget();
1486 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1487 16 => .{ .f16 = lhs.toFloat(f16, zcu) / rhs.toFloat(f16, zcu) },
1488 32 => .{ .f32 = lhs.toFloat(f32, zcu) / rhs.toFloat(f32, zcu) },
1489 64 => .{ .f64 = lhs.toFloat(f64, zcu) / rhs.toFloat(f64, zcu) },
1490 80 => .{ .f80 = lhs.toFloat(f80, zcu) / rhs.toFloat(f80, zcu) },
1491 128 => .{ .f128 = lhs.toFloat(f128, zcu) / rhs.toFloat(f128, zcu) },
1492 else => unreachable,
1493 };
1494 return .fromInterned(try pt.intern(.{ .float = .{
1495 .ty = ty.toIntern(),
1496 .storage = storage,
1497 } }));
1498}
1499fn floatDivTrunc(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1500 const pt = sema.pt;
1501 const zcu = pt.zcu;
1502 const target = zcu.getTarget();
1503 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1504 16 => .{ .f16 = @divTrunc(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },
1505 32 => .{ .f32 = @divTrunc(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },
1506 64 => .{ .f64 = @divTrunc(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },
1507 80 => .{ .f80 = @divTrunc(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },
1508 128 => .{ .f128 = @divTrunc(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },
1509 else => unreachable,
1510 };
1511 return .fromInterned(try pt.intern(.{ .float = .{
1512 .ty = ty.toIntern(),
1513 .storage = storage,
1514 } }));
1515}
1516fn floatDivFloor(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1517 const pt = sema.pt;
1518 const zcu = pt.zcu;
1519 const target = zcu.getTarget();
1520 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1521 16 => .{ .f16 = @divFloor(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },
1522 32 => .{ .f32 = @divFloor(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },
1523 64 => .{ .f64 = @divFloor(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },
1524 80 => .{ .f80 = @divFloor(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },
1525 128 => .{ .f128 = @divFloor(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },
1526 else => unreachable,
1527 };
1528 return .fromInterned(try pt.intern(.{ .float = .{
1529 .ty = ty.toIntern(),
1530 .storage = storage,
1531 } }));
1532}
1533fn floatDivIsExact(sema: *Sema, lhs: Value, rhs: Value, ty: Type) bool {
1534 const zcu = sema.pt.zcu;
1535 const target = zcu.getTarget();
1536 return switch (ty.floatBits(target)) {
1537 16 => @mod(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) == 0,
1538 32 => @mod(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) == 0,
1539 64 => @mod(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) == 0,
1540 80 => @mod(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) == 0,
1541 128 => @mod(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) == 0,
1542 else => unreachable,
1543 };
1544}
1545fn floatNeg(sema: *Sema, val: Value, ty: Type) !Value {
1546 const pt = sema.pt;
1547 const zcu = pt.zcu;
1548 const target = zcu.getTarget();
1549 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1550 16 => .{ .f16 = -val.toFloat(f16, zcu) },
1551 32 => .{ .f32 = -val.toFloat(f32, zcu) },
1552 64 => .{ .f64 = -val.toFloat(f64, zcu) },
1553 80 => .{ .f80 = -val.toFloat(f80, zcu) },
1554 128 => .{ .f128 = -val.toFloat(f128, zcu) },
1555 else => unreachable,
1556 };
1557 return .fromInterned(try pt.intern(.{ .float = .{
1558 .ty = ty.toIntern(),
1559 .storage = storage,
1560 } }));
1561}
1562fn floatMod(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1563 const pt = sema.pt;
1564 const zcu = pt.zcu;
1565 const target = zcu.getTarget();
1566 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1567 16 => .{ .f16 = @mod(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },
1568 32 => .{ .f32 = @mod(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },
1569 64 => .{ .f64 = @mod(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },
1570 80 => .{ .f80 = @mod(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },
1571 128 => .{ .f128 = @mod(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },
1572 else => unreachable,
1573 };
1574 return .fromInterned(try pt.intern(.{ .float = .{
1575 .ty = ty.toIntern(),
1576 .storage = storage,
1577 } }));
1578}
1579fn floatRem(sema: *Sema, lhs: Value, rhs: Value, ty: Type) !Value {
1580 const pt = sema.pt;
1581 const zcu = pt.zcu;
1582 const target = zcu.getTarget();
1583 const storage: InternPool.Key.Float.Storage = switch (ty.floatBits(target)) {
1584 16 => .{ .f16 = @rem(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },
1585 32 => .{ .f32 = @rem(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },
1586 64 => .{ .f64 = @rem(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },
1587 80 => .{ .f80 = @rem(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },
1588 128 => .{ .f128 = @rem(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },
1589 else => unreachable,
1590 };
1591 return .fromInterned(try pt.intern(.{ .float = .{
1592 .ty = ty.toIntern(),
1593 .storage = storage,
1594 } }));
1595}
1596
1597const Sema = @import("../Sema.zig");
1598const Block = Sema.Block;
1599const InternPool = @import("../InternPool.zig");
1600const Type = @import("../Type.zig");
1601const Value = @import("../Value.zig");
1602const Zcu = @import("../Zcu.zig");
1603const CompileError = Zcu.CompileError;
1604const LazySrcLoc = Zcu.LazySrcLoc;
1605
1606const std = @import("std");
1607const assert = std.debug.assert;
1608const Allocator = std.mem.Allocator;
1609const BigIntMutable = std.math.big.int.Mutable;
src/Value.zig+231-971
...@@ -895,7 +895,7 @@ pub fn readFromPackedMemory(...@@ -895,7 +895,7 @@ pub fn readFromPackedMemory(
895}895}
896896
897/// Asserts that the value is a float or an integer.897/// Asserts that the value is a float or an integer.
898pub fn toFloat(val: Value, comptime T: type, zcu: *Zcu) T {898pub fn toFloat(val: Value, comptime T: type, zcu: *const Zcu) T {
899 return switch (zcu.intern_pool.indexToKey(val.toIntern())) {899 return switch (zcu.intern_pool.indexToKey(val.toIntern())) {
900 .int => |int| switch (int.storage) {900 .int => |int| switch (int.storage) {
901 .big_int => |big_int| big_int.toFloat(T),901 .big_int => |big_int| big_int.toFloat(T),
...@@ -1415,17 +1415,63 @@ pub fn unionValue(val: Value, zcu: *Zcu) Value {...@@ -1415,17 +1415,63 @@ pub fn unionValue(val: Value, zcu: *Zcu) Value {
1415 };1415 };
1416}1416}
14171417
1418pub fn isUndef(val: Value, zcu: *Zcu) bool {1418pub fn isUndef(val: Value, zcu: *const Zcu) bool {
1419 return zcu.intern_pool.isUndef(val.toIntern());1419 return zcu.intern_pool.isUndef(val.toIntern());
1420}1420}
14211421
1422/// TODO: check for cases such as array that is not marked undef but all the element1422/// TODO: check for cases such as array that is not marked undef but all the element
1423/// values are marked undef, or struct that is not marked undef but all fields are marked1423/// values are marked undef, or struct that is not marked undef but all fields are marked
1424/// undef, etc.1424/// undef, etc.
1425pub fn isUndefDeep(val: Value, zcu: *Zcu) bool {1425pub fn isUndefDeep(val: Value, zcu: *const Zcu) bool {
1426 return val.isUndef(zcu);1426 return val.isUndef(zcu);
1427}1427}
14281428
1429/// `val` must have a numeric or vector type.
1430/// Returns whether `val` is undefined or contains any undefined elements.
1431pub fn anyScalarIsUndef(val: Value, zcu: *const Zcu) bool {
1432 switch (zcu.intern_pool.indexToKey(val.toIntern())) {
1433 .undef => return true,
1434 .int, .float => return false,
1435 .aggregate => |agg| {
1436 assert(Type.fromInterned(agg.ty).zigTypeTag(zcu) == .vector);
1437 for (agg.storage.values()) |elem_val| {
1438 if (Value.fromInterned(elem_val).isUndef(zcu)) return true;
1439 }
1440 return false;
1441 },
1442 else => unreachable,
1443 }
1444}
1445
1446/// `val` must have a numeric or vector type.
1447/// Returns whether `val` contains any elements equal to zero.
1448/// Asserts that `val` is not `undefined`, nor a vector containing any `undefined` elements.
1449pub fn anyScalarIsZero(val: Value, zcu: *Zcu) bool {
1450 assert(!val.anyScalarIsUndef(zcu));
1451
1452 switch (zcu.intern_pool.indexToKey(val.toIntern())) {
1453 .int, .float => return val.eqlScalarNum(.zero_comptime_int, zcu),
1454 .aggregate => |agg| {
1455 assert(Type.fromInterned(agg.ty).zigTypeTag(zcu) == .vector);
1456 switch (agg.storage) {
1457 .bytes => |str| {
1458 const len = Type.fromInterned(agg.ty).vectorLen(zcu);
1459 const slice = str.toSlice(len, &zcu.intern_pool);
1460 return std.mem.indexOfScalar(u8, slice, 0) != null;
1461 },
1462 .elems => |elems| {
1463 for (elems) |elem| {
1464 if (Value.fromInterned(elem).isUndef(zcu)) return true;
1465 }
1466 return false;
1467 },
1468 .repeated_elem => |elem| return Value.fromInterned(elem).isUndef(zcu),
1469 }
1470 },
1471 else => unreachable,
1472 }
1473}
1474
1429/// Asserts the value is not undefined and not unreachable.1475/// Asserts the value is not undefined and not unreachable.
1430/// C pointers with an integer value of 0 are also considered null.1476/// C pointers with an integer value of 0 are also considered null.
1431pub fn isNull(val: Value, zcu: *Zcu) bool {1477pub fn isNull(val: Value, zcu: *Zcu) bool {
...@@ -1572,295 +1618,6 @@ pub const OverflowArithmeticResult = struct {...@@ -1572,295 +1618,6 @@ pub const OverflowArithmeticResult = struct {
1572 wrapped_result: Value,1618 wrapped_result: Value,
1573};1619};
15741620
1575/// Supports (vectors of) integers only; asserts neither operand is undefined.
1576pub fn intAddSat(
1577 lhs: Value,
1578 rhs: Value,
1579 ty: Type,
1580 arena: Allocator,
1581 pt: Zcu.PerThread,
1582) !Value {
1583 if (ty.zigTypeTag(pt.zcu) == .vector) {
1584 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
1585 const scalar_ty = ty.scalarType(pt.zcu);
1586 for (result_data, 0..) |*scalar, i| {
1587 const lhs_elem = try lhs.elemValue(pt, i);
1588 const rhs_elem = try rhs.elemValue(pt, i);
1589 scalar.* = (try intAddSatScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
1590 }
1591 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
1592 .ty = ty.toIntern(),
1593 .storage = .{ .elems = result_data },
1594 } }));
1595 }
1596 return intAddSatScalar(lhs, rhs, ty, arena, pt);
1597}
1598
1599/// Supports integers only; asserts neither operand is undefined.
1600pub fn intAddSatScalar(
1601 lhs: Value,
1602 rhs: Value,
1603 ty: Type,
1604 arena: Allocator,
1605 pt: Zcu.PerThread,
1606) !Value {
1607 const zcu = pt.zcu;
1608 assert(!lhs.isUndef(zcu));
1609 assert(!rhs.isUndef(zcu));
1610
1611 const info = ty.intInfo(zcu);
1612
1613 var lhs_space: Value.BigIntSpace = undefined;
1614 var rhs_space: Value.BigIntSpace = undefined;
1615 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1616 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1617 const limbs = try arena.alloc(
1618 std.math.big.Limb,
1619 std.math.big.int.calcTwosCompLimbCount(info.bits),
1620 );
1621 var result_bigint = BigIntMutable{ .limbs = limbs, .positive = undefined, .len = undefined };
1622 result_bigint.addSat(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1623 return pt.intValue_big(ty, result_bigint.toConst());
1624}
1625
1626/// Supports (vectors of) integers only; asserts neither operand is undefined.
1627pub fn intSubSat(
1628 lhs: Value,
1629 rhs: Value,
1630 ty: Type,
1631 arena: Allocator,
1632 pt: Zcu.PerThread,
1633) !Value {
1634 if (ty.zigTypeTag(pt.zcu) == .vector) {
1635 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
1636 const scalar_ty = ty.scalarType(pt.zcu);
1637 for (result_data, 0..) |*scalar, i| {
1638 const lhs_elem = try lhs.elemValue(pt, i);
1639 const rhs_elem = try rhs.elemValue(pt, i);
1640 scalar.* = (try intSubSatScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
1641 }
1642 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
1643 .ty = ty.toIntern(),
1644 .storage = .{ .elems = result_data },
1645 } }));
1646 }
1647 return intSubSatScalar(lhs, rhs, ty, arena, pt);
1648}
1649
1650/// Supports integers only; asserts neither operand is undefined.
1651pub fn intSubSatScalar(
1652 lhs: Value,
1653 rhs: Value,
1654 ty: Type,
1655 arena: Allocator,
1656 pt: Zcu.PerThread,
1657) !Value {
1658 const zcu = pt.zcu;
1659
1660 assert(!lhs.isUndef(zcu));
1661 assert(!rhs.isUndef(zcu));
1662
1663 const info = ty.intInfo(zcu);
1664
1665 var lhs_space: Value.BigIntSpace = undefined;
1666 var rhs_space: Value.BigIntSpace = undefined;
1667 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1668 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1669 const limbs = try arena.alloc(
1670 std.math.big.Limb,
1671 std.math.big.int.calcTwosCompLimbCount(info.bits),
1672 );
1673 var result_bigint = BigIntMutable{ .limbs = limbs, .positive = undefined, .len = undefined };
1674 result_bigint.subSat(lhs_bigint, rhs_bigint, info.signedness, info.bits);
1675 return pt.intValue_big(ty, result_bigint.toConst());
1676}
1677
1678pub fn intMulWithOverflow(
1679 lhs: Value,
1680 rhs: Value,
1681 ty: Type,
1682 arena: Allocator,
1683 pt: Zcu.PerThread,
1684) !OverflowArithmeticResult {
1685 const zcu = pt.zcu;
1686 if (ty.zigTypeTag(zcu) == .vector) {
1687 const vec_len = ty.vectorLen(zcu);
1688 const overflowed_data = try arena.alloc(InternPool.Index, vec_len);
1689 const result_data = try arena.alloc(InternPool.Index, vec_len);
1690 const scalar_ty = ty.scalarType(zcu);
1691 for (overflowed_data, result_data, 0..) |*of, *scalar, i| {
1692 const lhs_elem = try lhs.elemValue(pt, i);
1693 const rhs_elem = try rhs.elemValue(pt, i);
1694 const of_math_result = try intMulWithOverflowScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt);
1695 of.* = of_math_result.overflow_bit.toIntern();
1696 scalar.* = of_math_result.wrapped_result.toIntern();
1697 }
1698 return OverflowArithmeticResult{
1699 .overflow_bit = Value.fromInterned(try pt.intern(.{ .aggregate = .{
1700 .ty = (try pt.vectorType(.{ .len = vec_len, .child = .u1_type })).toIntern(),
1701 .storage = .{ .elems = overflowed_data },
1702 } })),
1703 .wrapped_result = Value.fromInterned(try pt.intern(.{ .aggregate = .{
1704 .ty = ty.toIntern(),
1705 .storage = .{ .elems = result_data },
1706 } })),
1707 };
1708 }
1709 return intMulWithOverflowScalar(lhs, rhs, ty, arena, pt);
1710}
1711
1712pub fn intMulWithOverflowScalar(
1713 lhs: Value,
1714 rhs: Value,
1715 ty: Type,
1716 arena: Allocator,
1717 pt: Zcu.PerThread,
1718) !OverflowArithmeticResult {
1719 const zcu = pt.zcu;
1720 const info = ty.intInfo(zcu);
1721
1722 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) {
1723 return .{
1724 .overflow_bit = try pt.undefValue(Type.u1),
1725 .wrapped_result = try pt.undefValue(ty),
1726 };
1727 }
1728
1729 var lhs_space: Value.BigIntSpace = undefined;
1730 var rhs_space: Value.BigIntSpace = undefined;
1731 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1732 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1733 const limbs = try arena.alloc(
1734 std.math.big.Limb,
1735 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
1736 );
1737 var result_bigint = BigIntMutable{ .limbs = limbs, .positive = undefined, .len = undefined };
1738 const limbs_buffer = try arena.alloc(
1739 std.math.big.Limb,
1740 std.math.big.int.calcMulLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len, 1),
1741 );
1742 result_bigint.mul(lhs_bigint, rhs_bigint, limbs_buffer, arena);
1743
1744 const overflowed = !result_bigint.toConst().fitsInTwosComp(info.signedness, info.bits);
1745 if (overflowed) {
1746 result_bigint.truncate(result_bigint.toConst(), info.signedness, info.bits);
1747 }
1748
1749 return OverflowArithmeticResult{
1750 .overflow_bit = try pt.intValue(Type.u1, @intFromBool(overflowed)),
1751 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
1752 };
1753}
1754
1755/// Supports both (vectors of) floats and ints; handles undefined scalars.
1756pub fn numberMulWrap(
1757 lhs: Value,
1758 rhs: Value,
1759 ty: Type,
1760 arena: Allocator,
1761 pt: Zcu.PerThread,
1762) !Value {
1763 const zcu = pt.zcu;
1764 if (ty.zigTypeTag(zcu) == .vector) {
1765 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(zcu));
1766 const scalar_ty = ty.scalarType(zcu);
1767 for (result_data, 0..) |*scalar, i| {
1768 const lhs_elem = try lhs.elemValue(pt, i);
1769 const rhs_elem = try rhs.elemValue(pt, i);
1770 scalar.* = (try numberMulWrapScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
1771 }
1772 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
1773 .ty = ty.toIntern(),
1774 .storage = .{ .elems = result_data },
1775 } }));
1776 }
1777 return numberMulWrapScalar(lhs, rhs, ty, arena, pt);
1778}
1779
1780/// Supports both floats and ints; handles undefined.
1781pub fn numberMulWrapScalar(
1782 lhs: Value,
1783 rhs: Value,
1784 ty: Type,
1785 arena: Allocator,
1786 pt: Zcu.PerThread,
1787) !Value {
1788 const zcu = pt.zcu;
1789 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return Value.undef;
1790
1791 if (ty.zigTypeTag(zcu) == .comptime_int) {
1792 return intMul(lhs, rhs, ty, undefined, arena, pt);
1793 }
1794
1795 if (ty.isAnyFloat()) {
1796 return floatMul(lhs, rhs, ty, arena, pt);
1797 }
1798
1799 const overflow_result = try intMulWithOverflow(lhs, rhs, ty, arena, pt);
1800 return overflow_result.wrapped_result;
1801}
1802
1803/// Supports (vectors of) integers only; asserts neither operand is undefined.
1804pub fn intMulSat(
1805 lhs: Value,
1806 rhs: Value,
1807 ty: Type,
1808 arena: Allocator,
1809 pt: Zcu.PerThread,
1810) !Value {
1811 if (ty.zigTypeTag(pt.zcu) == .vector) {
1812 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
1813 const scalar_ty = ty.scalarType(pt.zcu);
1814 for (result_data, 0..) |*scalar, i| {
1815 const lhs_elem = try lhs.elemValue(pt, i);
1816 const rhs_elem = try rhs.elemValue(pt, i);
1817 scalar.* = (try intMulSatScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
1818 }
1819 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
1820 .ty = ty.toIntern(),
1821 .storage = .{ .elems = result_data },
1822 } }));
1823 }
1824 return intMulSatScalar(lhs, rhs, ty, arena, pt);
1825}
1826
1827/// Supports (vectors of) integers only; asserts neither operand is undefined.
1828pub fn intMulSatScalar(
1829 lhs: Value,
1830 rhs: Value,
1831 ty: Type,
1832 arena: Allocator,
1833 pt: Zcu.PerThread,
1834) !Value {
1835 const zcu = pt.zcu;
1836
1837 assert(!lhs.isUndef(zcu));
1838 assert(!rhs.isUndef(zcu));
1839
1840 const info = ty.intInfo(zcu);
1841
1842 var lhs_space: Value.BigIntSpace = undefined;
1843 var rhs_space: Value.BigIntSpace = undefined;
1844 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
1845 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
1846 const limbs = try arena.alloc(
1847 std.math.big.Limb,
1848 @max(
1849 // For the saturate
1850 std.math.big.int.calcTwosCompLimbCount(info.bits),
1851 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
1852 ),
1853 );
1854 var result_bigint = BigIntMutable{ .limbs = limbs, .positive = undefined, .len = undefined };
1855 const limbs_buffer = try arena.alloc(
1856 std.math.big.Limb,
1857 std.math.big.int.calcMulLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len, 1),
1858 );
1859 result_bigint.mul(lhs_bigint, rhs_bigint, limbs_buffer, arena);
1860 result_bigint.saturate(result_bigint.toConst(), info.signedness, info.bits);
1861 return pt.intValue_big(ty, result_bigint.toConst());
1862}
1863
1864/// Supports both floats and ints; handles undefined.1621/// Supports both floats and ints; handles undefined.
1865pub fn numberMax(lhs: Value, rhs: Value, zcu: *Zcu) Value {1622pub fn numberMax(lhs: Value, rhs: Value, zcu: *Zcu) Value {
1866 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return undef;1623 if (lhs.isUndef(zcu) or rhs.isUndef(zcu)) return undef;
...@@ -2126,143 +1883,6 @@ pub fn bitwiseXorScalar(lhs: Value, rhs: Value, ty: Type, arena: Allocator, pt:...@@ -2126,143 +1883,6 @@ pub fn bitwiseXorScalar(lhs: Value, rhs: Value, ty: Type, arena: Allocator, pt:
2126 return pt.intValue_big(ty, result_bigint.toConst());1883 return pt.intValue_big(ty, result_bigint.toConst());
2127}1884}
21281885
2129/// If the value overflowed the type, returns a comptime_int (or vector thereof) instead, setting
2130/// overflow_idx to the vector index the overflow was at (or 0 for a scalar).
2131pub fn intDiv(lhs: Value, rhs: Value, ty: Type, overflow_idx: *?usize, allocator: Allocator, pt: Zcu.PerThread) !Value {
2132 var overflow: usize = undefined;
2133 return intDivInner(lhs, rhs, ty, &overflow, allocator, pt) catch |err| switch (err) {
2134 error.Overflow => {
2135 const is_vec = ty.isVector(pt.zcu);
2136 overflow_idx.* = if (is_vec) overflow else 0;
2137 const safe_ty = if (is_vec) try pt.vectorType(.{
2138 .len = ty.vectorLen(pt.zcu),
2139 .child = .comptime_int_type,
2140 }) else Type.comptime_int;
2141 return intDivInner(lhs, rhs, safe_ty, undefined, allocator, pt) catch |err1| switch (err1) {
2142 error.Overflow => unreachable,
2143 else => |e| return e,
2144 };
2145 },
2146 else => |e| return e,
2147 };
2148}
2149
2150fn intDivInner(lhs: Value, rhs: Value, ty: Type, overflow_idx: *usize, allocator: Allocator, pt: Zcu.PerThread) !Value {
2151 if (ty.zigTypeTag(pt.zcu) == .vector) {
2152 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2153 const scalar_ty = ty.scalarType(pt.zcu);
2154 for (result_data, 0..) |*scalar, i| {
2155 const lhs_elem = try lhs.elemValue(pt, i);
2156 const rhs_elem = try rhs.elemValue(pt, i);
2157 const val = intDivScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt) catch |err| switch (err) {
2158 error.Overflow => {
2159 overflow_idx.* = i;
2160 return error.Overflow;
2161 },
2162 else => |e| return e,
2163 };
2164 scalar.* = val.toIntern();
2165 }
2166 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2167 .ty = ty.toIntern(),
2168 .storage = .{ .elems = result_data },
2169 } }));
2170 }
2171 return intDivScalar(lhs, rhs, ty, allocator, pt);
2172}
2173
2174pub fn intDivScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2175 // TODO is this a performance issue? maybe we should try the operation without
2176 // resorting to BigInt first.
2177 const zcu = pt.zcu;
2178 var lhs_space: Value.BigIntSpace = undefined;
2179 var rhs_space: Value.BigIntSpace = undefined;
2180 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2181 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
2182 const limbs_q = try allocator.alloc(
2183 std.math.big.Limb,
2184 lhs_bigint.limbs.len,
2185 );
2186 const limbs_r = try allocator.alloc(
2187 std.math.big.Limb,
2188 rhs_bigint.limbs.len,
2189 );
2190 const limbs_buffer = try allocator.alloc(
2191 std.math.big.Limb,
2192 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
2193 );
2194 var result_q = BigIntMutable{ .limbs = limbs_q, .positive = undefined, .len = undefined };
2195 var result_r = BigIntMutable{ .limbs = limbs_r, .positive = undefined, .len = undefined };
2196 result_q.divTrunc(&result_r, lhs_bigint, rhs_bigint, limbs_buffer);
2197 if (ty.toIntern() != .comptime_int_type) {
2198 const info = ty.intInfo(pt.zcu);
2199 if (!result_q.toConst().fitsInTwosComp(info.signedness, info.bits)) {
2200 return error.Overflow;
2201 }
2202 }
2203 return pt.intValue_big(ty, result_q.toConst());
2204}
2205
2206pub fn intDivFloor(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2207 if (ty.zigTypeTag(pt.zcu) == .vector) {
2208 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2209 const scalar_ty = ty.scalarType(pt.zcu);
2210 for (result_data, 0..) |*scalar, i| {
2211 const lhs_elem = try lhs.elemValue(pt, i);
2212 const rhs_elem = try rhs.elemValue(pt, i);
2213 scalar.* = (try intDivFloorScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
2214 }
2215 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2216 .ty = ty.toIntern(),
2217 .storage = .{ .elems = result_data },
2218 } }));
2219 }
2220 return intDivFloorScalar(lhs, rhs, ty, allocator, pt);
2221}
2222
2223pub fn intDivFloorScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2224 // TODO is this a performance issue? maybe we should try the operation without
2225 // resorting to BigInt first.
2226 const zcu = pt.zcu;
2227 var lhs_space: Value.BigIntSpace = undefined;
2228 var rhs_space: Value.BigIntSpace = undefined;
2229 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2230 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
2231 const limbs_q = try allocator.alloc(
2232 std.math.big.Limb,
2233 lhs_bigint.limbs.len,
2234 );
2235 const limbs_r = try allocator.alloc(
2236 std.math.big.Limb,
2237 rhs_bigint.limbs.len,
2238 );
2239 const limbs_buffer = try allocator.alloc(
2240 std.math.big.Limb,
2241 std.math.big.int.calcDivLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len),
2242 );
2243 var result_q = BigIntMutable{ .limbs = limbs_q, .positive = undefined, .len = undefined };
2244 var result_r = BigIntMutable{ .limbs = limbs_r, .positive = undefined, .len = undefined };
2245 result_q.divFloor(&result_r, lhs_bigint, rhs_bigint, limbs_buffer);
2246 return pt.intValue_big(ty, result_q.toConst());
2247}
2248
2249pub fn intMod(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2250 if (ty.zigTypeTag(pt.zcu) == .vector) {
2251 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2252 const scalar_ty = ty.scalarType(pt.zcu);
2253 for (result_data, 0..) |*scalar, i| {
2254 const lhs_elem = try lhs.elemValue(pt, i);
2255 const rhs_elem = try rhs.elemValue(pt, i);
2256 scalar.* = (try intModScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
2257 }
2258 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2259 .ty = ty.toIntern(),
2260 .storage = .{ .elems = result_data },
2261 } }));
2262 }
2263 return intModScalar(lhs, rhs, ty, allocator, pt);
2264}
2265
2266pub fn intModScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {1886pub fn intModScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2267 // TODO is this a performance issue? maybe we should try the operation without1887 // TODO is this a performance issue? maybe we should try the operation without
2268 // resorting to BigInt first.1888 // resorting to BigInt first.
...@@ -2386,80 +2006,6 @@ pub fn floatModScalar(lhs: Value, rhs: Value, float_type: Type, pt: Zcu.PerThrea...@@ -2386,80 +2006,6 @@ pub fn floatModScalar(lhs: Value, rhs: Value, float_type: Type, pt: Zcu.PerThrea
2386 } }));2006 } }));
2387}2007}
23882008
2389/// If the value overflowed the type, returns a comptime_int (or vector thereof) instead, setting
2390/// overflow_idx to the vector index the overflow was at (or 0 for a scalar).
2391pub fn intMul(lhs: Value, rhs: Value, ty: Type, overflow_idx: *?usize, allocator: Allocator, pt: Zcu.PerThread) !Value {
2392 const zcu = pt.zcu;
2393 var overflow: usize = undefined;
2394 return intMulInner(lhs, rhs, ty, &overflow, allocator, pt) catch |err| switch (err) {
2395 error.Overflow => {
2396 const is_vec = ty.isVector(zcu);
2397 overflow_idx.* = if (is_vec) overflow else 0;
2398 const safe_ty = if (is_vec) try pt.vectorType(.{
2399 .len = ty.vectorLen(zcu),
2400 .child = .comptime_int_type,
2401 }) else Type.comptime_int;
2402 return intMulInner(lhs, rhs, safe_ty, undefined, allocator, pt) catch |err1| switch (err1) {
2403 error.Overflow => unreachable,
2404 else => |e| return e,
2405 };
2406 },
2407 else => |e| return e,
2408 };
2409}
2410
2411fn intMulInner(lhs: Value, rhs: Value, ty: Type, overflow_idx: *usize, allocator: Allocator, pt: Zcu.PerThread) !Value {
2412 const zcu = pt.zcu;
2413 if (ty.zigTypeTag(zcu) == .vector) {
2414 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(zcu));
2415 const scalar_ty = ty.scalarType(zcu);
2416 for (result_data, 0..) |*scalar, i| {
2417 const lhs_elem = try lhs.elemValue(pt, i);
2418 const rhs_elem = try rhs.elemValue(pt, i);
2419 const val = intMulScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt) catch |err| switch (err) {
2420 error.Overflow => {
2421 overflow_idx.* = i;
2422 return error.Overflow;
2423 },
2424 else => |e| return e,
2425 };
2426 scalar.* = val.toIntern();
2427 }
2428 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2429 .ty = ty.toIntern(),
2430 .storage = .{ .elems = result_data },
2431 } }));
2432 }
2433 return intMulScalar(lhs, rhs, ty, allocator, pt);
2434}
2435
2436pub fn intMulScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2437 const zcu = pt.zcu;
2438 if (ty.toIntern() != .comptime_int_type) {
2439 const res = try intMulWithOverflowScalar(lhs, rhs, ty, allocator, pt);
2440 if (res.overflow_bit.compareAllWithZero(.neq, zcu)) return error.Overflow;
2441 return res.wrapped_result;
2442 }
2443 // TODO is this a performance issue? maybe we should try the operation without
2444 // resorting to BigInt first.
2445 var lhs_space: Value.BigIntSpace = undefined;
2446 var rhs_space: Value.BigIntSpace = undefined;
2447 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2448 const rhs_bigint = rhs.toBigInt(&rhs_space, zcu);
2449 const limbs = try allocator.alloc(
2450 std.math.big.Limb,
2451 lhs_bigint.limbs.len + rhs_bigint.limbs.len,
2452 );
2453 var result_bigint = BigIntMutable{ .limbs = limbs, .positive = undefined, .len = undefined };
2454 const limbs_buffer = try allocator.alloc(
2455 std.math.big.Limb,
2456 std.math.big.int.calcMulLimbsBufferLen(lhs_bigint.limbs.len, rhs_bigint.limbs.len, 1),
2457 );
2458 defer allocator.free(limbs_buffer);
2459 result_bigint.mul(lhs_bigint, rhs_bigint, limbs_buffer, allocator);
2460 return pt.intValue_big(ty, result_bigint.toConst());
2461}
2462
2463pub fn intTrunc(val: Value, ty: Type, allocator: Allocator, signedness: std.builtin.Signedness, bits: u16, pt: Zcu.PerThread) !Value {2009pub fn intTrunc(val: Value, ty: Type, allocator: Allocator, signedness: std.builtin.Signedness, bits: u16, pt: Zcu.PerThread) !Value {
2464 const zcu = pt.zcu;2010 const zcu = pt.zcu;
2465 if (ty.zigTypeTag(zcu) == .vector) {2011 if (ty.zigTypeTag(zcu) == .vector) {
...@@ -2528,561 +2074,249 @@ pub fn intTruncScalar(...@@ -2528,561 +2074,249 @@ pub fn intTruncScalar(
2528 result_bigint.truncate(val_bigint, signedness, bits);2074 result_bigint.truncate(val_bigint, signedness, bits);
2529 return pt.intValue_big(ty, result_bigint.toConst());2075 return pt.intValue_big(ty, result_bigint.toConst());
2530}2076}
25312077
2532pub fn shl(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {2078pub fn shl(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2533 const zcu = pt.zcu;
2534 if (ty.zigTypeTag(zcu) == .vector) {
2535 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(zcu));
2536 const scalar_ty = ty.scalarType(zcu);
2537 for (result_data, 0..) |*scalar, i| {
2538 const lhs_elem = try lhs.elemValue(pt, i);
2539 const rhs_elem = try rhs.elemValue(pt, i);
2540 scalar.* = (try shlScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
2541 }
2542 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2543 .ty = ty.toIntern(),
2544 .storage = .{ .elems = result_data },
2545 } }));
2546 }
2547 return shlScalar(lhs, rhs, ty, allocator, pt);
2548}
2549
2550pub fn shlScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2551 // TODO is this a performance issue? maybe we should try the operation without
2552 // resorting to BigInt first.
2553 const zcu = pt.zcu;
2554 var lhs_space: Value.BigIntSpace = undefined;
2555 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2556 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2557 const limbs = try allocator.alloc(
2558 std.math.big.Limb,
2559 lhs_bigint.limbs.len + (shift / (@sizeOf(std.math.big.Limb) * 8)) + 1,
2560 );
2561 var result_bigint = BigIntMutable{
2562 .limbs = limbs,
2563 .positive = undefined,
2564 .len = undefined,
2565 };
2566 result_bigint.shiftLeft(lhs_bigint, shift);
2567 if (ty.toIntern() != .comptime_int_type) {
2568 const int_info = ty.intInfo(zcu);
2569 result_bigint.truncate(result_bigint.toConst(), int_info.signedness, int_info.bits);
2570 }
2571
2572 return pt.intValue_big(ty, result_bigint.toConst());
2573}
2574
2575pub fn shlWithOverflow(
2576 lhs: Value,
2577 rhs: Value,
2578 ty: Type,
2579 allocator: Allocator,
2580 pt: Zcu.PerThread,
2581) !OverflowArithmeticResult {
2582 if (ty.zigTypeTag(pt.zcu) == .vector) {
2583 const vec_len = ty.vectorLen(pt.zcu);
2584 const overflowed_data = try allocator.alloc(InternPool.Index, vec_len);
2585 const result_data = try allocator.alloc(InternPool.Index, vec_len);
2586 const scalar_ty = ty.scalarType(pt.zcu);
2587 for (overflowed_data, result_data, 0..) |*of, *scalar, i| {
2588 const lhs_elem = try lhs.elemValue(pt, i);
2589 const rhs_elem = try rhs.elemValue(pt, i);
2590 const of_math_result = try shlWithOverflowScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt);
2591 of.* = of_math_result.overflow_bit.toIntern();
2592 scalar.* = of_math_result.wrapped_result.toIntern();
2593 }
2594 return OverflowArithmeticResult{
2595 .overflow_bit = Value.fromInterned(try pt.intern(.{ .aggregate = .{
2596 .ty = (try pt.vectorType(.{ .len = vec_len, .child = .u1_type })).toIntern(),
2597 .storage = .{ .elems = overflowed_data },
2598 } })),
2599 .wrapped_result = Value.fromInterned(try pt.intern(.{ .aggregate = .{
2600 .ty = ty.toIntern(),
2601 .storage = .{ .elems = result_data },
2602 } })),
2603 };
2604 }
2605 return shlWithOverflowScalar(lhs, rhs, ty, allocator, pt);
2606}
2607
2608pub fn shlWithOverflowScalar(
2609 lhs: Value,
2610 rhs: Value,
2611 ty: Type,
2612 allocator: Allocator,
2613 pt: Zcu.PerThread,
2614) !OverflowArithmeticResult {
2615 const zcu = pt.zcu;
2616 const info = ty.intInfo(zcu);
2617 var lhs_space: Value.BigIntSpace = undefined;
2618 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2619 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2620 const limbs = try allocator.alloc(
2621 std.math.big.Limb,
2622 lhs_bigint.limbs.len + (shift / (@sizeOf(std.math.big.Limb) * 8)) + 1,
2623 );
2624 var result_bigint = BigIntMutable{
2625 .limbs = limbs,
2626 .positive = undefined,
2627 .len = undefined,
2628 };
2629 result_bigint.shiftLeft(lhs_bigint, shift);
2630 const overflowed = !result_bigint.toConst().fitsInTwosComp(info.signedness, info.bits);
2631 if (overflowed) {
2632 result_bigint.truncate(result_bigint.toConst(), info.signedness, info.bits);
2633 }
2634 return OverflowArithmeticResult{
2635 .overflow_bit = try pt.intValue(Type.u1, @intFromBool(overflowed)),
2636 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
2637 };
2638}
2639
2640pub fn shlSat(
2641 lhs: Value,
2642 rhs: Value,
2643 ty: Type,
2644 arena: Allocator,
2645 pt: Zcu.PerThread,
2646) !Value {
2647 if (ty.zigTypeTag(pt.zcu) == .vector) {
2648 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2649 const scalar_ty = ty.scalarType(pt.zcu);
2650 for (result_data, 0..) |*scalar, i| {
2651 const lhs_elem = try lhs.elemValue(pt, i);
2652 const rhs_elem = try rhs.elemValue(pt, i);
2653 scalar.* = (try shlSatScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
2654 }
2655 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2656 .ty = ty.toIntern(),
2657 .storage = .{ .elems = result_data },
2658 } }));
2659 }
2660 return shlSatScalar(lhs, rhs, ty, arena, pt);
2661}
2662
2663pub fn shlSatScalar(
2664 lhs: Value,
2665 rhs: Value,
2666 ty: Type,
2667 arena: Allocator,
2668 pt: Zcu.PerThread,
2669) !Value {
2670 // TODO is this a performance issue? maybe we should try the operation without
2671 // resorting to BigInt first.
2672 const zcu = pt.zcu;
2673 const info = ty.intInfo(zcu);
2674
2675 var lhs_space: Value.BigIntSpace = undefined;
2676 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2677 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2678 const limbs = try arena.alloc(
2679 std.math.big.Limb,
2680 std.math.big.int.calcTwosCompLimbCount(info.bits) + 1,
2681 );
2682 var result_bigint = BigIntMutable{
2683 .limbs = limbs,
2684 .positive = undefined,
2685 .len = undefined,
2686 };
2687 result_bigint.shiftLeftSat(lhs_bigint, shift, info.signedness, info.bits);
2688 return pt.intValue_big(ty, result_bigint.toConst());
2689}
2690
2691pub fn shlTrunc(
2692 lhs: Value,
2693 rhs: Value,
2694 ty: Type,
2695 arena: Allocator,
2696 pt: Zcu.PerThread,
2697) !Value {
2698 if (ty.zigTypeTag(pt.zcu) == .vector) {
2699 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2700 const scalar_ty = ty.scalarType(pt.zcu);
2701 for (result_data, 0..) |*scalar, i| {
2702 const lhs_elem = try lhs.elemValue(pt, i);
2703 const rhs_elem = try rhs.elemValue(pt, i);
2704 scalar.* = (try shlTruncScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
2705 }
2706 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2707 .ty = ty.toIntern(),
2708 .storage = .{ .elems = result_data },
2709 } }));
2710 }
2711 return shlTruncScalar(lhs, rhs, ty, arena, pt);
2712}
2713
2714pub fn shlTruncScalar(
2715 lhs: Value,
2716 rhs: Value,
2717 ty: Type,
2718 arena: Allocator,
2719 pt: Zcu.PerThread,
2720) !Value {
2721 const shifted = try lhs.shl(rhs, ty, arena, pt);
2722 const int_info = ty.intInfo(pt.zcu);
2723 const truncated = try shifted.intTrunc(ty, arena, int_info.signedness, int_info.bits, pt);
2724 return truncated;
2725}
2726
2727pub fn shr(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2728 if (ty.zigTypeTag(pt.zcu) == .vector) {
2729 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2730 const scalar_ty = ty.scalarType(pt.zcu);
2731 for (result_data, 0..) |*scalar, i| {
2732 const lhs_elem = try lhs.elemValue(pt, i);
2733 const rhs_elem = try rhs.elemValue(pt, i);
2734 scalar.* = (try shrScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
2735 }
2736 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2737 .ty = ty.toIntern(),
2738 .storage = .{ .elems = result_data },
2739 } }));
2740 }
2741 return shrScalar(lhs, rhs, ty, allocator, pt);
2742}
2743
2744pub fn shrScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2745 // TODO is this a performance issue? maybe we should try the operation without
2746 // resorting to BigInt first.
2747 const zcu = pt.zcu;
2748 var lhs_space: Value.BigIntSpace = undefined;
2749 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2750 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2751
2752 const result_limbs = lhs_bigint.limbs.len -| (shift / (@sizeOf(std.math.big.Limb) * 8));
2753 if (result_limbs == 0) {
2754 // The shift is enough to remove all the bits from the number, which means the
2755 // result is 0 or -1 depending on the sign.
2756 if (lhs_bigint.positive) {
2757 return pt.intValue(ty, 0);
2758 } else {
2759 return pt.intValue(ty, -1);
2760 }
2761 }
2762
2763 const limbs = try allocator.alloc(
2764 std.math.big.Limb,
2765 result_limbs,
2766 );
2767 var result_bigint = BigIntMutable{
2768 .limbs = limbs,
2769 .positive = undefined,
2770 .len = undefined,
2771 };
2772 result_bigint.shiftRight(lhs_bigint, shift);
2773 return pt.intValue_big(ty, result_bigint.toConst());
2774}
2775
2776pub fn floatNeg(
2777 val: Value,
2778 float_type: Type,
2779 arena: Allocator,
2780 pt: Zcu.PerThread,
2781) !Value {
2782 const zcu = pt.zcu;
2783 if (float_type.zigTypeTag(zcu) == .vector) {
2784 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(zcu));
2785 const scalar_ty = float_type.scalarType(zcu);
2786 for (result_data, 0..) |*scalar, i| {
2787 const elem_val = try val.elemValue(pt, i);
2788 scalar.* = (try floatNegScalar(elem_val, scalar_ty, pt)).toIntern();
2789 }
2790 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2791 .ty = float_type.toIntern(),
2792 .storage = .{ .elems = result_data },
2793 } }));
2794 }
2795 return floatNegScalar(val, float_type, pt);
2796}
2797
2798pub fn floatNegScalar(val: Value, float_type: Type, pt: Zcu.PerThread) !Value {
2799 const zcu = pt.zcu;
2800 const target = zcu.getTarget();
2801 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {
2802 16 => .{ .f16 = -val.toFloat(f16, zcu) },
2803 32 => .{ .f32 = -val.toFloat(f32, zcu) },
2804 64 => .{ .f64 = -val.toFloat(f64, zcu) },
2805 80 => .{ .f80 = -val.toFloat(f80, zcu) },
2806 128 => .{ .f128 = -val.toFloat(f128, zcu) },
2807 else => unreachable,
2808 };
2809 return Value.fromInterned(try pt.intern(.{ .float = .{
2810 .ty = float_type.toIntern(),
2811 .storage = storage,
2812 } }));
2813}
2814
2815pub fn floatAdd(
2816 lhs: Value,
2817 rhs: Value,
2818 float_type: Type,
2819 arena: Allocator,
2820 pt: Zcu.PerThread,
2821) !Value {
2822 const zcu = pt.zcu;
2823 if (float_type.zigTypeTag(zcu) == .vector) {
2824 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(zcu));
2825 const scalar_ty = float_type.scalarType(zcu);
2826 for (result_data, 0..) |*scalar, i| {
2827 const lhs_elem = try lhs.elemValue(pt, i);
2828 const rhs_elem = try rhs.elemValue(pt, i);
2829 scalar.* = (try floatAddScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();
2830 }
2831 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2832 .ty = float_type.toIntern(),
2833 .storage = .{ .elems = result_data },
2834 } }));
2835 }
2836 return floatAddScalar(lhs, rhs, float_type, pt);
2837}
2838
2839pub fn floatAddScalar(
2840 lhs: Value,
2841 rhs: Value,
2842 float_type: Type,
2843 pt: Zcu.PerThread,
2844) !Value {
2845 const zcu = pt.zcu;
2846 const target = zcu.getTarget();
2847 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {
2848 16 => .{ .f16 = lhs.toFloat(f16, zcu) + rhs.toFloat(f16, zcu) },
2849 32 => .{ .f32 = lhs.toFloat(f32, zcu) + rhs.toFloat(f32, zcu) },
2850 64 => .{ .f64 = lhs.toFloat(f64, zcu) + rhs.toFloat(f64, zcu) },
2851 80 => .{ .f80 = lhs.toFloat(f80, zcu) + rhs.toFloat(f80, zcu) },
2852 128 => .{ .f128 = lhs.toFloat(f128, zcu) + rhs.toFloat(f128, zcu) },
2853 else => unreachable,
2854 };
2855 return Value.fromInterned(try pt.intern(.{ .float = .{
2856 .ty = float_type.toIntern(),
2857 .storage = storage,
2858 } }));
2859}
2860
2861pub fn floatSub(
2862 lhs: Value,
2863 rhs: Value,
2864 float_type: Type,
2865 arena: Allocator,
2866 pt: Zcu.PerThread,
2867) !Value {
2868 const zcu = pt.zcu;2079 const zcu = pt.zcu;
2869 if (float_type.zigTypeTag(zcu) == .vector) {2080 if (ty.zigTypeTag(zcu) == .vector) {
2870 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(zcu));2081 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(zcu));
2871 const scalar_ty = float_type.scalarType(zcu);2082 const scalar_ty = ty.scalarType(zcu);
2872 for (result_data, 0..) |*scalar, i| {2083 for (result_data, 0..) |*scalar, i| {
2873 const lhs_elem = try lhs.elemValue(pt, i);2084 const lhs_elem = try lhs.elemValue(pt, i);
2874 const rhs_elem = try rhs.elemValue(pt, i);2085 const rhs_elem = try rhs.elemValue(pt, i);
2875 scalar.* = (try floatSubScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();2086 scalar.* = (try shlScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
2876 }2087 }
2877 return Value.fromInterned(try pt.intern(.{ .aggregate = .{2088 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2878 .ty = float_type.toIntern(),2089 .ty = ty.toIntern(),
2879 .storage = .{ .elems = result_data },2090 .storage = .{ .elems = result_data },
2880 } }));2091 } }));
2881 }2092 }
2882 return floatSubScalar(lhs, rhs, float_type, pt);2093 return shlScalar(lhs, rhs, ty, allocator, pt);
2883}2094}
28842095
2885pub fn floatSubScalar(2096pub fn shlScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
2886 lhs: Value,2097 // TODO is this a performance issue? maybe we should try the operation without
2887 rhs: Value,2098 // resorting to BigInt first.
2888 float_type: Type,
2889 pt: Zcu.PerThread,
2890) !Value {
2891 const zcu = pt.zcu;2099 const zcu = pt.zcu;
2892 const target = zcu.getTarget();2100 var lhs_space: Value.BigIntSpace = undefined;
2893 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {2101 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2894 16 => .{ .f16 = lhs.toFloat(f16, zcu) - rhs.toFloat(f16, zcu) },2102 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2895 32 => .{ .f32 = lhs.toFloat(f32, zcu) - rhs.toFloat(f32, zcu) },2103 const limbs = try allocator.alloc(
2896 64 => .{ .f64 = lhs.toFloat(f64, zcu) - rhs.toFloat(f64, zcu) },2104 std.math.big.Limb,
2897 80 => .{ .f80 = lhs.toFloat(f80, zcu) - rhs.toFloat(f80, zcu) },2105 lhs_bigint.limbs.len + (shift / (@sizeOf(std.math.big.Limb) * 8)) + 1,
2898 128 => .{ .f128 = lhs.toFloat(f128, zcu) - rhs.toFloat(f128, zcu) },2106 );
2899 else => unreachable,2107 var result_bigint = BigIntMutable{
2108 .limbs = limbs,
2109 .positive = undefined,
2110 .len = undefined,
2900 };2111 };
2901 return Value.fromInterned(try pt.intern(.{ .float = .{2112 result_bigint.shiftLeft(lhs_bigint, shift);
2902 .ty = float_type.toIntern(),2113 if (ty.toIntern() != .comptime_int_type) {
2903 .storage = storage,2114 const int_info = ty.intInfo(zcu);
2904 } }));2115 result_bigint.truncate(result_bigint.toConst(), int_info.signedness, int_info.bits);
2116 }
2117
2118 return pt.intValue_big(ty, result_bigint.toConst());
2905}2119}
29062120
2907pub fn floatDiv(2121pub fn shlWithOverflow(
2908 lhs: Value,2122 lhs: Value,
2909 rhs: Value,2123 rhs: Value,
2910 float_type: Type,2124 ty: Type,
2911 arena: Allocator,2125 allocator: Allocator,
2912 pt: Zcu.PerThread,2126 pt: Zcu.PerThread,
2913) !Value {2127) !OverflowArithmeticResult {
2914 if (float_type.zigTypeTag(pt.zcu) == .vector) {2128 if (ty.zigTypeTag(pt.zcu) == .vector) {
2915 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(pt.zcu));2129 const vec_len = ty.vectorLen(pt.zcu);
2916 const scalar_ty = float_type.scalarType(pt.zcu);2130 const overflowed_data = try allocator.alloc(InternPool.Index, vec_len);
2917 for (result_data, 0..) |*scalar, i| {2131 const result_data = try allocator.alloc(InternPool.Index, vec_len);
2132 const scalar_ty = ty.scalarType(pt.zcu);
2133 for (overflowed_data, result_data, 0..) |*of, *scalar, i| {
2918 const lhs_elem = try lhs.elemValue(pt, i);2134 const lhs_elem = try lhs.elemValue(pt, i);
2919 const rhs_elem = try rhs.elemValue(pt, i);2135 const rhs_elem = try rhs.elemValue(pt, i);
2920 scalar.* = (try floatDivScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();2136 const of_math_result = try shlWithOverflowScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt);
2137 of.* = of_math_result.overflow_bit.toIntern();
2138 scalar.* = of_math_result.wrapped_result.toIntern();
2921 }2139 }
2922 return Value.fromInterned(try pt.intern(.{ .aggregate = .{2140 return OverflowArithmeticResult{
2923 .ty = float_type.toIntern(),2141 .overflow_bit = Value.fromInterned(try pt.intern(.{ .aggregate = .{
2924 .storage = .{ .elems = result_data },2142 .ty = (try pt.vectorType(.{ .len = vec_len, .child = .u1_type })).toIntern(),
2925 } }));2143 .storage = .{ .elems = overflowed_data },
2144 } })),
2145 .wrapped_result = Value.fromInterned(try pt.intern(.{ .aggregate = .{
2146 .ty = ty.toIntern(),
2147 .storage = .{ .elems = result_data },
2148 } })),
2149 };
2926 }2150 }
2927 return floatDivScalar(lhs, rhs, float_type, pt);2151 return shlWithOverflowScalar(lhs, rhs, ty, allocator, pt);
2928}2152}
29292153
2930pub fn floatDivScalar(2154pub fn shlWithOverflowScalar(
2931 lhs: Value,2155 lhs: Value,
2932 rhs: Value,2156 rhs: Value,
2933 float_type: Type,2157 ty: Type,
2158 allocator: Allocator,
2934 pt: Zcu.PerThread,2159 pt: Zcu.PerThread,
2935) !Value {2160) !OverflowArithmeticResult {
2936 const zcu = pt.zcu;2161 const zcu = pt.zcu;
2937 const target = zcu.getTarget();2162 const info = ty.intInfo(zcu);
2938 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {2163 var lhs_space: Value.BigIntSpace = undefined;
2939 16 => .{ .f16 = lhs.toFloat(f16, zcu) / rhs.toFloat(f16, zcu) },2164 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2940 32 => .{ .f32 = lhs.toFloat(f32, zcu) / rhs.toFloat(f32, zcu) },2165 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2941 64 => .{ .f64 = lhs.toFloat(f64, zcu) / rhs.toFloat(f64, zcu) },2166 const limbs = try allocator.alloc(
2942 80 => .{ .f80 = lhs.toFloat(f80, zcu) / rhs.toFloat(f80, zcu) },2167 std.math.big.Limb,
2943 128 => .{ .f128 = lhs.toFloat(f128, zcu) / rhs.toFloat(f128, zcu) },2168 lhs_bigint.limbs.len + (shift / (@sizeOf(std.math.big.Limb) * 8)) + 1,
2944 else => unreachable,2169 );
2170 var result_bigint = BigIntMutable{
2171 .limbs = limbs,
2172 .positive = undefined,
2173 .len = undefined,
2174 };
2175 result_bigint.shiftLeft(lhs_bigint, shift);
2176 const overflowed = !result_bigint.toConst().fitsInTwosComp(info.signedness, info.bits);
2177 if (overflowed) {
2178 result_bigint.truncate(result_bigint.toConst(), info.signedness, info.bits);
2179 }
2180 return OverflowArithmeticResult{
2181 .overflow_bit = try pt.intValue(Type.u1, @intFromBool(overflowed)),
2182 .wrapped_result = try pt.intValue_big(ty, result_bigint.toConst()),
2945 };2183 };
2946 return Value.fromInterned(try pt.intern(.{ .float = .{
2947 .ty = float_type.toIntern(),
2948 .storage = storage,
2949 } }));
2950}2184}
29512185
2952pub fn floatDivFloor(2186pub fn shlSat(
2953 lhs: Value,2187 lhs: Value,
2954 rhs: Value,2188 rhs: Value,
2955 float_type: Type,2189 ty: Type,
2956 arena: Allocator,2190 arena: Allocator,
2957 pt: Zcu.PerThread,2191 pt: Zcu.PerThread,
2958) !Value {2192) !Value {
2959 if (float_type.zigTypeTag(pt.zcu) == .vector) {2193 if (ty.zigTypeTag(pt.zcu) == .vector) {
2960 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(pt.zcu));2194 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
2961 const scalar_ty = float_type.scalarType(pt.zcu);2195 const scalar_ty = ty.scalarType(pt.zcu);
2962 for (result_data, 0..) |*scalar, i| {2196 for (result_data, 0..) |*scalar, i| {
2963 const lhs_elem = try lhs.elemValue(pt, i);2197 const lhs_elem = try lhs.elemValue(pt, i);
2964 const rhs_elem = try rhs.elemValue(pt, i);2198 const rhs_elem = try rhs.elemValue(pt, i);
2965 scalar.* = (try floatDivFloorScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();2199 scalar.* = (try shlSatScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
2966 }2200 }
2967 return Value.fromInterned(try pt.intern(.{ .aggregate = .{2201 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
2968 .ty = float_type.toIntern(),2202 .ty = ty.toIntern(),
2969 .storage = .{ .elems = result_data },2203 .storage = .{ .elems = result_data },
2970 } }));2204 } }));
2971 }2205 }
2972 return floatDivFloorScalar(lhs, rhs, float_type, pt);2206 return shlSatScalar(lhs, rhs, ty, arena, pt);
2973}2207}
29742208
2975pub fn floatDivFloorScalar(2209pub fn shlSatScalar(
2976 lhs: Value,2210 lhs: Value,
2977 rhs: Value,2211 rhs: Value,
2978 float_type: Type,2212 ty: Type,
2213 arena: Allocator,
2979 pt: Zcu.PerThread,2214 pt: Zcu.PerThread,
2980) !Value {2215) !Value {
2216 // TODO is this a performance issue? maybe we should try the operation without
2217 // resorting to BigInt first.
2981 const zcu = pt.zcu;2218 const zcu = pt.zcu;
2982 const target = zcu.getTarget();2219 const info = ty.intInfo(zcu);
2983 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {2220
2984 16 => .{ .f16 = @divFloor(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },2221 var lhs_space: Value.BigIntSpace = undefined;
2985 32 => .{ .f32 = @divFloor(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },2222 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
2986 64 => .{ .f64 = @divFloor(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },2223 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
2987 80 => .{ .f80 = @divFloor(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },2224 const limbs = try arena.alloc(
2988 128 => .{ .f128 = @divFloor(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },2225 std.math.big.Limb,
2989 else => unreachable,2226 std.math.big.int.calcTwosCompLimbCount(info.bits) + 1,
2227 );
2228 var result_bigint = BigIntMutable{
2229 .limbs = limbs,
2230 .positive = undefined,
2231 .len = undefined,
2990 };2232 };
2991 return Value.fromInterned(try pt.intern(.{ .float = .{2233 result_bigint.shiftLeftSat(lhs_bigint, shift, info.signedness, info.bits);
2992 .ty = float_type.toIntern(),2234 return pt.intValue_big(ty, result_bigint.toConst());
2993 .storage = storage,
2994 } }));
2995}2235}
29962236
2997pub fn floatDivTrunc(2237pub fn shlTrunc(
2998 lhs: Value,2238 lhs: Value,
2999 rhs: Value,2239 rhs: Value,
3000 float_type: Type,2240 ty: Type,
3001 arena: Allocator,2241 arena: Allocator,
3002 pt: Zcu.PerThread,2242 pt: Zcu.PerThread,
3003) !Value {2243) !Value {
3004 if (float_type.zigTypeTag(pt.zcu) == .vector) {2244 if (ty.zigTypeTag(pt.zcu) == .vector) {
3005 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(pt.zcu));2245 const result_data = try arena.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
3006 const scalar_ty = float_type.scalarType(pt.zcu);2246 const scalar_ty = ty.scalarType(pt.zcu);
3007 for (result_data, 0..) |*scalar, i| {2247 for (result_data, 0..) |*scalar, i| {
3008 const lhs_elem = try lhs.elemValue(pt, i);2248 const lhs_elem = try lhs.elemValue(pt, i);
3009 const rhs_elem = try rhs.elemValue(pt, i);2249 const rhs_elem = try rhs.elemValue(pt, i);
3010 scalar.* = (try floatDivTruncScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();2250 scalar.* = (try shlTruncScalar(lhs_elem, rhs_elem, scalar_ty, arena, pt)).toIntern();
3011 }2251 }
3012 return Value.fromInterned(try pt.intern(.{ .aggregate = .{2252 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
3013 .ty = float_type.toIntern(),2253 .ty = ty.toIntern(),
3014 .storage = .{ .elems = result_data },2254 .storage = .{ .elems = result_data },
3015 } }));2255 } }));
3016 }2256 }
3017 return floatDivTruncScalar(lhs, rhs, float_type, pt);2257 return shlTruncScalar(lhs, rhs, ty, arena, pt);
3018}2258}
30192259
3020pub fn floatDivTruncScalar(2260pub fn shlTruncScalar(
3021 lhs: Value,2261 lhs: Value,
3022 rhs: Value,2262 rhs: Value,
3023 float_type: Type,2263 ty: Type,
2264 arena: Allocator,
3024 pt: Zcu.PerThread,2265 pt: Zcu.PerThread,
3025) !Value {2266) !Value {
3026 const zcu = pt.zcu;2267 const shifted = try lhs.shl(rhs, ty, arena, pt);
3027 const target = zcu.getTarget();2268 const int_info = ty.intInfo(pt.zcu);
3028 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {2269 const truncated = try shifted.intTrunc(ty, arena, int_info.signedness, int_info.bits, pt);
3029 16 => .{ .f16 = @divTrunc(lhs.toFloat(f16, zcu), rhs.toFloat(f16, zcu)) },2270 return truncated;
3030 32 => .{ .f32 = @divTrunc(lhs.toFloat(f32, zcu), rhs.toFloat(f32, zcu)) },
3031 64 => .{ .f64 = @divTrunc(lhs.toFloat(f64, zcu), rhs.toFloat(f64, zcu)) },
3032 80 => .{ .f80 = @divTrunc(lhs.toFloat(f80, zcu), rhs.toFloat(f80, zcu)) },
3033 128 => .{ .f128 = @divTrunc(lhs.toFloat(f128, zcu), rhs.toFloat(f128, zcu)) },
3034 else => unreachable,
3035 };
3036 return Value.fromInterned(try pt.intern(.{ .float = .{
3037 .ty = float_type.toIntern(),
3038 .storage = storage,
3039 } }));
3040}2271}
30412272
3042pub fn floatMul(2273pub fn shr(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
3043 lhs: Value,2274 if (ty.zigTypeTag(pt.zcu) == .vector) {
3044 rhs: Value,2275 const result_data = try allocator.alloc(InternPool.Index, ty.vectorLen(pt.zcu));
3045 float_type: Type,2276 const scalar_ty = ty.scalarType(pt.zcu);
3046 arena: Allocator,
3047 pt: Zcu.PerThread,
3048) !Value {
3049 const zcu = pt.zcu;
3050 if (float_type.zigTypeTag(zcu) == .vector) {
3051 const result_data = try arena.alloc(InternPool.Index, float_type.vectorLen(zcu));
3052 const scalar_ty = float_type.scalarType(zcu);
3053 for (result_data, 0..) |*scalar, i| {2277 for (result_data, 0..) |*scalar, i| {
3054 const lhs_elem = try lhs.elemValue(pt, i);2278 const lhs_elem = try lhs.elemValue(pt, i);
3055 const rhs_elem = try rhs.elemValue(pt, i);2279 const rhs_elem = try rhs.elemValue(pt, i);
3056 scalar.* = (try floatMulScalar(lhs_elem, rhs_elem, scalar_ty, pt)).toIntern();2280 scalar.* = (try shrScalar(lhs_elem, rhs_elem, scalar_ty, allocator, pt)).toIntern();
3057 }2281 }
3058 return Value.fromInterned(try pt.intern(.{ .aggregate = .{2282 return Value.fromInterned(try pt.intern(.{ .aggregate = .{
3059 .ty = float_type.toIntern(),2283 .ty = ty.toIntern(),
3060 .storage = .{ .elems = result_data },2284 .storage = .{ .elems = result_data },
3061 } }));2285 } }));
3062 }2286 }
3063 return floatMulScalar(lhs, rhs, float_type, pt);2287 return shrScalar(lhs, rhs, ty, allocator, pt);
3064}2288}
30652289
3066pub fn floatMulScalar(2290pub fn shrScalar(lhs: Value, rhs: Value, ty: Type, allocator: Allocator, pt: Zcu.PerThread) !Value {
3067 lhs: Value,2291 // TODO is this a performance issue? maybe we should try the operation without
3068 rhs: Value,2292 // resorting to BigInt first.
3069 float_type: Type,
3070 pt: Zcu.PerThread,
3071) !Value {
3072 const zcu = pt.zcu;2293 const zcu = pt.zcu;
3073 const target = zcu.getTarget();2294 var lhs_space: Value.BigIntSpace = undefined;
3074 const storage: InternPool.Key.Float.Storage = switch (float_type.floatBits(target)) {2295 const lhs_bigint = lhs.toBigInt(&lhs_space, zcu);
3075 16 => .{ .f16 = lhs.toFloat(f16, zcu) * rhs.toFloat(f16, zcu) },2296 const shift: usize = @intCast(rhs.toUnsignedInt(zcu));
3076 32 => .{ .f32 = lhs.toFloat(f32, zcu) * rhs.toFloat(f32, zcu) },2297
3077 64 => .{ .f64 = lhs.toFloat(f64, zcu) * rhs.toFloat(f64, zcu) },2298 const result_limbs = lhs_bigint.limbs.len -| (shift / (@sizeOf(std.math.big.Limb) * 8));
3078 80 => .{ .f80 = lhs.toFloat(f80, zcu) * rhs.toFloat(f80, zcu) },2299 if (result_limbs == 0) {
3079 128 => .{ .f128 = lhs.toFloat(f128, zcu) * rhs.toFloat(f128, zcu) },2300 // The shift is enough to remove all the bits from the number, which means the
3080 else => unreachable,2301 // result is 0 or -1 depending on the sign.
2302 if (lhs_bigint.positive) {
2303 return pt.intValue(ty, 0);
2304 } else {
2305 return pt.intValue(ty, -1);
2306 }
2307 }
2308
2309 const limbs = try allocator.alloc(
2310 std.math.big.Limb,
2311 result_limbs,
2312 );
2313 var result_bigint = BigIntMutable{
2314 .limbs = limbs,
2315 .positive = undefined,
2316 .len = undefined,
3081 };2317 };
3082 return Value.fromInterned(try pt.intern(.{ .float = .{2318 result_bigint.shiftRight(lhs_bigint, shift);
3083 .ty = float_type.toIntern(),2319 return pt.intValue_big(ty, result_bigint.toConst());
3084 .storage = storage,
3085 } }));
3086}2320}
30872321
3088pub fn sqrt(val: Value, float_type: Type, arena: Allocator, pt: Zcu.PerThread) !Value {2322pub fn sqrt(val: Value, float_type: Type, arena: Allocator, pt: Zcu.PerThread) !Value {
...@@ -4805,3 +4039,29 @@ pub fn doPointersOverlap(ptr_val_a: Value, ptr_val_b: Value, elem_count: u64, zc...@@ -4805,3 +4039,29 @@ pub fn doPointersOverlap(ptr_val_a: Value, ptr_val_b: Value, elem_count: u64, zc
4805 return bytes_diff < need_bytes_diff;4039 return bytes_diff < need_bytes_diff;
4806 }4040 }
4807}4041}
4042
4043/// `lhs` and `rhs` are both scalar numeric values (int or float).
4044/// Supports comparisons between heterogeneous types.
4045/// If `lhs` or `rhs` is undef, returns `false`.
4046pub fn eqlScalarNum(lhs: Value, rhs: Value, zcu: *Zcu) bool {
4047 if (lhs.isUndef(zcu)) return false;
4048 if (rhs.isUndef(zcu)) return false;
4049
4050 if (lhs.isFloat(zcu) or rhs.isFloat(zcu)) {
4051 const lhs_f128 = lhs.toFloat(f128, zcu);
4052 const rhs_f128 = rhs.toFloat(f128, zcu);
4053 return lhs_f128 == rhs_f128;
4054 }
4055
4056 if (lhs.getUnsignedInt(zcu)) |lhs_u64| {
4057 if (rhs.getUnsignedInt(zcu)) |rhs_u64| {
4058 return lhs_u64 == rhs_u64;
4059 }
4060 }
4061
4062 var lhs_bigint_space: BigIntSpace = undefined;
4063 var rhs_bigint_space: BigIntSpace = undefined;
4064 const lhs_bigint = lhs.toBigInt(&lhs_bigint_space, zcu);
4065 const rhs_bigint = rhs.toBigInt(&rhs_bigint_space, zcu);
4066 return lhs_bigint.eql(rhs_bigint);
4067}
src/Zcu.zig+40-8
...@@ -1716,9 +1716,25 @@ pub const SrcLoc = struct {...@@ -1716,9 +1716,25 @@ pub const SrcLoc = struct {
1716 const node = node_off.toAbsolute(src_loc.base_node);1716 const node = node_off.toAbsolute(src_loc.base_node);
17171717
1718 switch (tree.nodeTag(node)) {1718 switch (tree.nodeTag(node)) {
1719 .assign => {1719 .assign,
1720 return tree.nodeToSpan(tree.nodeData(node).node_and_node[0]);1720 .assign_mul,
1721 },1721 .assign_div,
1722 .assign_mod,
1723 .assign_add,
1724 .assign_sub,
1725 .assign_shl,
1726 .assign_shl_sat,
1727 .assign_shr,
1728 .assign_bit_and,
1729 .assign_bit_xor,
1730 .assign_bit_or,
1731 .assign_mul_wrap,
1732 .assign_add_wrap,
1733 .assign_sub_wrap,
1734 .assign_mul_sat,
1735 .assign_add_sat,
1736 .assign_sub_sat,
1737 => return tree.nodeToSpan(tree.nodeData(node).node_and_node[0]),
1722 else => return tree.nodeToSpan(node),1738 else => return tree.nodeToSpan(node),
1723 }1739 }
1724 },1740 },
...@@ -1727,9 +1743,25 @@ pub const SrcLoc = struct {...@@ -1727,9 +1743,25 @@ pub const SrcLoc = struct {
1727 const node = node_off.toAbsolute(src_loc.base_node);1743 const node = node_off.toAbsolute(src_loc.base_node);
17281744
1729 switch (tree.nodeTag(node)) {1745 switch (tree.nodeTag(node)) {
1730 .assign => {1746 .assign,
1731 return tree.nodeToSpan(tree.nodeData(node).node_and_node[1]);1747 .assign_mul,
1732 },1748 .assign_div,
1749 .assign_mod,
1750 .assign_add,
1751 .assign_sub,
1752 .assign_shl,
1753 .assign_shl_sat,
1754 .assign_shr,
1755 .assign_bit_and,
1756 .assign_bit_xor,
1757 .assign_bit_or,
1758 .assign_mul_wrap,
1759 .assign_add_wrap,
1760 .assign_sub_wrap,
1761 .assign_mul_sat,
1762 .assign_add_sat,
1763 .assign_sub_sat,
1764 => return tree.nodeToSpan(tree.nodeData(node).node_and_node[1]),
1733 else => return tree.nodeToSpan(node),1765 else => return tree.nodeToSpan(node),
1734 }1766 }
1735 },1767 },
...@@ -2209,9 +2241,9 @@ pub const LazySrcLoc = struct {...@@ -2209,9 +2241,9 @@ pub const LazySrcLoc = struct {
2209 node_offset_field_default: Ast.Node.Offset,2241 node_offset_field_default: Ast.Node.Offset,
2210 /// The source location points to the type of an array or struct initializer.2242 /// The source location points to the type of an array or struct initializer.
2211 node_offset_init_ty: Ast.Node.Offset,2243 node_offset_init_ty: Ast.Node.Offset,
2212 /// The source location points to the LHS of an assignment.2244 /// The source location points to the LHS of an assignment (or assign-op, e.g. `+=`).
2213 node_offset_store_ptr: Ast.Node.Offset,2245 node_offset_store_ptr: Ast.Node.Offset,
2214 /// The source location points to the RHS of an assignment.2246 /// The source location points to the RHS of an assignment (or assign-op, e.g. `+=`).
2215 node_offset_store_operand: Ast.Node.Offset,2247 node_offset_store_operand: Ast.Node.Offset,
2216 /// The source location points to the operand of a `return` statement, or2248 /// The source location points to the operand of a `return` statement, or
2217 /// the `return` itself if there is no explicit operand.2249 /// the `return` itself if there is no explicit operand.
test/behavior/floatop.zig-4
...@@ -1696,10 +1696,6 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {...@@ -1696,10 +1696,6 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {
1696 }1696 }
1697}1697}
16981698
1699test "comptime_float zero divided by zero produces zero" {
1700 try expect((0.0 / 0.0) == 0.0);
1701}
1702
1703test "comptime float compared with runtime int" {1699test "comptime float compared with runtime int" {
1704 const f = 10.0;1700 const f = 10.0;
1705 var i: usize = 0;1701 var i: usize = 0;
test/behavior/math.zig+131-6
...@@ -1265,12 +1265,6 @@ test "allow signed integer division/remainder when values are comptime-known and...@@ -1265,12 +1265,6 @@ test "allow signed integer division/remainder when values are comptime-known and
12651265
1266 try expect(5 % 3 == 2);1266 try expect(5 % 3 == 2);
1267 try expect(-6 % 3 == 0);1267 try expect(-6 % 3 == 0);
1268
1269 var undef: i32 = undefined;
1270 _ = &undef;
1271 if (0 % undef != 0) {
1272 @compileError("0 as numerator should return comptime zero independent of denominator");
1273 }
1274}1268}
12751269
1276test "quad hex float literal parsing accurate" {1270test "quad hex float literal parsing accurate" {
...@@ -1861,3 +1855,134 @@ test "runtime int comparison to inf is comptime-known" {...@@ -1861,3 +1855,134 @@ test "runtime int comparison to inf is comptime-known" {
1861 comptime S.doTheTest(f64, 123);1855 comptime S.doTheTest(f64, 123);
1862 comptime S.doTheTest(f128, 123);1856 comptime S.doTheTest(f128, 123);
1863}1857}
1858
1859test "float divide by zero" {
1860 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1863 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1864 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1865 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1866 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1867
1868 const S = struct {
1869 fn doTheTest(comptime F: type, zero: F, one: F) !void {
1870 try expect(math.isPositiveInf(@divTrunc(one, zero)));
1871 try expect(math.isPositiveInf(@divFloor(one, zero)));
1872
1873 try expect(math.isNan(@rem(one, zero)));
1874 try expect(math.isNan(@mod(one, zero)));
1875 }
1876 };
1877
1878 try S.doTheTest(f16, 0, 1);
1879 comptime S.doTheTest(f16, 0, 1) catch unreachable;
1880
1881 try S.doTheTest(f32, 0, 1);
1882 comptime S.doTheTest(f32, 0, 1) catch unreachable;
1883
1884 try S.doTheTest(f64, 0, 1);
1885 comptime S.doTheTest(f64, 0, 1) catch unreachable;
1886
1887 try S.doTheTest(f80, 0, 1);
1888 comptime S.doTheTest(f80, 0, 1) catch unreachable;
1889
1890 try S.doTheTest(f128, 0, 1);
1891 comptime S.doTheTest(f128, 0, 1) catch unreachable;
1892}
1893
1894test "partially-runtime integer vector division would be illegal if vector elements were reordered" {
1895 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1896 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1897 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1900 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1901 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1902
1903 var lhs: @Vector(2, i8) = .{ -128, 5 };
1904 const rhs: @Vector(2, i8) = .{ 1, -1 };
1905
1906 const expected: @Vector(2, i8) = .{ -128, -5 };
1907
1908 lhs = lhs; // suppress error
1909
1910 const trunc = @divTrunc(lhs, rhs);
1911 try expect(trunc[0] == expected[0]);
1912 try expect(trunc[1] == expected[1]);
1913
1914 const floor = @divFloor(lhs, rhs);
1915 try expect(floor[0] == expected[0]);
1916 try expect(floor[1] == expected[1]);
1917
1918 const exact = @divExact(lhs, rhs);
1919 try expect(exact[0] == expected[0]);
1920 try expect(exact[1] == expected[1]);
1921}
1922
1923test "float vector division of comptime zero by runtime nan is nan" {
1924 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1925 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1926 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1927 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1928 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1929 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1930 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
1931
1932 const ct_zero: @Vector(1, f32) = .{0};
1933 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};
1934
1935 rt_nan = rt_nan; // suppress error
1936
1937 try expect(math.isNan((@divTrunc(ct_zero, rt_nan))[0]));
1938 try expect(math.isNan((@divFloor(ct_zero, rt_nan))[0]));
1939 try expect(math.isNan((ct_zero / rt_nan)[0]));
1940}
1941
1942test "float vector multiplication of comptime zero by runtime nan is nan" {
1943 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1944 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1945 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1946 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1947 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1948 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1949
1950 const ct_zero: @Vector(1, f32) = .{0};
1951 var rt_nan: @Vector(1, f32) = .{math.nan(f32)};
1952
1953 rt_nan = rt_nan; // suppress error
1954
1955 try expect(math.isNan((ct_zero * rt_nan)[0]));
1956 try expect(math.isNan((rt_nan * ct_zero)[0]));
1957}
1958
1959test "comptime float vector division of zero by nan is nan" {
1960 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1961 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1962 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1963 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1964 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1965 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1966
1967 const ct_zero: @Vector(1, f32) = .{0};
1968 const ct_nan: @Vector(1, f32) = .{math.nan(f32)};
1969
1970 comptime assert(math.isNan((@divTrunc(ct_zero, ct_nan))[0]));
1971 comptime assert(math.isNan((@divFloor(ct_zero, ct_nan))[0]));
1972 comptime assert(math.isNan((ct_zero / ct_nan)[0]));
1973}
1974
1975test "comptime float vector multiplication of zero by nan is nan" {
1976 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1977 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1978 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1979 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1980 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1981 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1982
1983 const ct_zero: @Vector(1, f32) = .{0};
1984 const ct_nan: @Vector(1, f32) = .{math.nan(f32)};
1985
1986 comptime assert(math.isNan((ct_zero * ct_nan)[0]));
1987 comptime assert(math.isNan((ct_nan * ct_zero)[0]));
1988}
test/behavior/vector.zig+2
...@@ -1316,6 +1316,8 @@ test "zero multiplicand" {...@@ -1316,6 +1316,8 @@ test "zero multiplicand" {
1316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1319 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1320 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13191321
1320 const zeros = @Vector(2, u32){ 0.0, 0.0 };1322 const zeros = @Vector(2, u32){ 0.0, 0.0 };
1321 var ones = @Vector(2, u32){ 1.0, 1.0 };1323 var ones = @Vector(2, u32){ 1.0, 1.0 };
test/behavior/x86_64/math.zig+10-91
...@@ -21685,20 +21685,7 @@ test mulUnsafe {...@@ -21685,20 +21685,7 @@ test mulUnsafe {
21685}21685}
2168621686
21687inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {21687inline fn multiply(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(lhs * rhs) {
21688 if (@inComptime() and @typeInfo(Type) == .vector) {21688 return lhs * rhs;
21689 // workaround https://github.com/ziglang/zig/issues/22743
21690 // TODO: return @select(Scalar(Type), boolAnd(lhs == lhs, rhs == rhs), lhs * rhs, lhs + rhs);
21691 // workaround https://github.com/ziglang/zig/issues/22744
21692 var res: Type = undefined;
21693 for (0..@typeInfo(Type).vector.len) |i| res[i] = lhs[i] * rhs[i];
21694 return res;
21695 }
21696 // workaround https://github.com/ziglang/zig/issues/22745
21697 // TODO: return lhs * rhs;
21698 var rt_lhs = lhs;
21699 var rt_rhs = rhs;
21700 _ = .{ &rt_lhs, &rt_rhs };
21701 return rt_lhs * rt_rhs;
21702}21689}
21703test multiply {21690test multiply {
21704 const test_multiply = binary(multiply, .{});21691 const test_multiply = binary(multiply, .{});
...@@ -21715,24 +21702,8 @@ test divide {...@@ -21715,24 +21702,8 @@ test divide {
21715 try test_divide.testFloatVectors();21702 try test_divide.testFloatVectors();
21716}21703}
2171721704
21718inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) Type {21705inline fn divTrunc(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@divTrunc(lhs, rhs)) {
21719 switch (@typeInfo(Scalar(Type))) {21706 return @divTrunc(lhs, rhs);
21720 else => @compileError(@typeName(Type)),
21721 .int => return @divTrunc(lhs, rhs),
21722 .float => {
21723 if (@inComptime()) {
21724 // workaround https://github.com/ziglang/zig/issues/22748
21725 return @trunc(lhs / rhs);
21726 }
21727 // workaround https://github.com/ziglang/zig/issues/22748
21728 // workaround https://github.com/ziglang/zig/issues/22749
21729 // TODO: return @divTrunc(lhs, rhs);
21730 var rt_lhs = lhs;
21731 var rt_rhs = rhs;
21732 _ = .{ &rt_lhs, &rt_rhs };
21733 return @divTrunc(rt_lhs, rt_rhs);
21734 },
21735 }
21736}21707}
21737test divTrunc {21708test divTrunc {
21738 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });21709 const test_div_trunc = binary(divTrunc, .{ .compare = .approx_int });
...@@ -21742,24 +21713,8 @@ test divTrunc {...@@ -21742,24 +21713,8 @@ test divTrunc {
21742 try test_div_trunc.testFloatVectors();21713 try test_div_trunc.testFloatVectors();
21743}21714}
2174421715
21745inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) Type {21716inline fn divFloor(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@divFloor(lhs, rhs)) {
21746 switch (@typeInfo(Scalar(Type))) {21717 return @divFloor(lhs, rhs);
21747 else => @compileError(@typeName(Type)),
21748 .int => return @divFloor(lhs, rhs),
21749 .float => {
21750 if (@inComptime()) {
21751 // workaround https://github.com/ziglang/zig/issues/22748
21752 return @floor(lhs / rhs);
21753 }
21754 // workaround https://github.com/ziglang/zig/issues/22748
21755 // workaround https://github.com/ziglang/zig/issues/22749
21756 // TODO: return @divFloor(lhs, rhs);
21757 var rt_lhs = lhs;
21758 var rt_rhs = rhs;
21759 _ = .{ &rt_lhs, &rt_rhs };
21760 return @divFloor(rt_lhs, rt_rhs);
21761 },
21762 }
21763}21718}
21764test divFloor {21719test divFloor {
21765 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });21720 const test_div_floor = binary(divFloor, .{ .compare = .approx_int });
...@@ -21767,31 +21722,8 @@ test divFloor {...@@ -21767,31 +21722,8 @@ test divFloor {
21767 try test_div_floor.testFloatVectors();21722 try test_div_floor.testFloatVectors();
21768}21723}
2176921724
21770// workaround https://github.com/ziglang/zig/issues/2274821725inline fn rem(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@rem(lhs, rhs)) {
21771// TODO: @TypeOf(@rem(lhs, rhs))21726 return @rem(lhs, rhs);
21772inline fn rem(comptime Type: type, lhs: Type, rhs: Type) Type {
21773 switch (@typeInfo(Scalar(Type))) {
21774 else => @compileError(@typeName(Type)),
21775 .int => return @rem(lhs, rhs),
21776 .float => {
21777 if (@inComptime()) {
21778 // workaround https://github.com/ziglang/zig/issues/22748
21779 switch (@typeInfo(Type)) {
21780 else => return if (rhs != 0) @rem(lhs, rhs) else nan(Type),
21781 .vector => |info| {
21782 var res: Type = undefined;
21783 inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @rem(lhs[i], rhs[i]) else nan(Scalar(Type));
21784 return res;
21785 },
21786 }
21787 }
21788 // workaround https://github.com/ziglang/zig/issues/22748
21789 // TODO: return @rem(lhs, rhs);
21790 var rt_rhs = rhs;
21791 _ = &rt_rhs;
21792 return @rem(lhs, rt_rhs);
21793 },
21794 }
21795}21727}
21796test rem {21728test rem {
21797 const test_rem = binary(rem, .{});21729 const test_rem = binary(rem, .{});
...@@ -21801,25 +21733,16 @@ test rem {...@@ -21801,25 +21733,16 @@ test rem {
21801 try test_rem.testFloatVectors();21733 try test_rem.testFloatVectors();
21802}21734}
2180321735
21804inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type {21736inline fn mod(comptime Type: type, lhs: Type, rhs: Type) @TypeOf(@mod(lhs, rhs)) {
21737 // workaround llvm backend bugs
21805 if (@inComptime()) {21738 if (@inComptime()) {
21806 const scalarMod = struct {21739 const scalarMod = struct {
21807 fn scalarMod(scalar_lhs: Scalar(Type), scalar_rhs: Scalar(Type)) Scalar(Type) {21740 fn scalarMod(scalar_lhs: Scalar(Type), scalar_rhs: Scalar(Type)) Scalar(Type) {
21808 // workaround https://github.com/ziglang/zig/issues/22748
21809 if (scalar_rhs == 0) return nan(Scalar(Type));
21810 const scalar_rem = @rem(scalar_lhs, scalar_rhs);21741 const scalar_rem = @rem(scalar_lhs, scalar_rhs);
21811 return if (scalar_rem == 0 or math.signbit(scalar_rem) == math.signbit(scalar_rhs)) scalar_rem else scalar_rem + scalar_rhs;21742 return if (scalar_rem == 0 or math.signbit(scalar_rem) == math.signbit(scalar_rhs)) scalar_rem else scalar_rem + scalar_rhs;
21812 }21743 }
21813 }.scalarMod;21744 }.scalarMod;
21814 // workaround https://github.com/ziglang/zig/issues/22748
21815 switch (@typeInfo(Type)) {21745 switch (@typeInfo(Type)) {
21816 // workaround llvm backend bugs
21817 // TODO: else => return if (rhs != 0) @mod(lhs, rhs) else nan(Type),
21818 // TODO: .vector => |info| {
21819 // TODO: var res: Type = undefined;
21820 // TODO: inline for (0..info.len) |i| res[i] = if (rhs[i] != 0) @mod(lhs[i], rhs[i]) else nan(Scalar(Type));
21821 // TODO: return res;
21822 // TODO: },
21823 else => return scalarMod(lhs, rhs),21746 else => return scalarMod(lhs, rhs),
21824 .vector => |info| {21747 .vector => |info| {
21825 var res: Type = undefined;21748 var res: Type = undefined;
...@@ -21828,11 +21751,7 @@ inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type {...@@ -21828,11 +21751,7 @@ inline fn mod(comptime Type: type, lhs: Type, rhs: Type) Type {
21828 },21751 },
21829 }21752 }
21830 }21753 }
21831 // workaround https://github.com/ziglang/zig/issues/2274821754 return @mod(lhs, rhs);
21832 // TODO: return @mod(lhs, rhs);
21833 var rt_rhs = rhs;
21834 _ = &rt_rhs;
21835 return @mod(lhs, rt_rhs);
21836}21755}
21837test mod {21756test mod {
21838 const test_mod = binary(mod, .{});21757 const test_mod = binary(mod, .{});
test/cases/compile_errors/add_assign_on_undefined_value.zig+1-3
...@@ -4,7 +4,5 @@ comptime {...@@ -4,7 +4,5 @@ comptime {
4}4}
55
6// error6// error
7// backend=stage2
8// target=native
9//7//
10// :3:10: error: use of undefined value here causes undefined behavior8// :3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/add_on_undefined_value.zig deleted-24
...@@ -1,24 +0,0 @@
1comptime {
2 const undef: i64 = undefined;
3 const not_undef: i64 = 32;
4
5 // If either of the operands are zero, then the other operand is returned.
6 @compileLog(undef + 0);
7 @compileLog(not_undef + 0);
8 @compileLog(0 + undef);
9 @compileLog(0 + not_undef);
10
11 _ = undef + undef;
12}
13
14// error
15// backend=stage2
16// target=native
17//
18// :11:17: error: use of undefined value here causes undefined behavior
19//
20// Compile Log Output:
21// @as(i64, undefined)
22// @as(i64, 32)
23// @as(i64, undefined)
24// @as(i64, 32)
test/cases/compile_errors/assign_to_constant_destructure.zig+1-3
...@@ -9,7 +9,5 @@ export fn a() void {...@@ -9,7 +9,5 @@ export fn a() void {
9}9}
1010
11// error11// error
12// backend=stage2
13// target=native
14//12//
15// :8:7: error: cannot assign to constant13// :8:5: error: cannot assign to constant
test/cases/compile_errors/assign_to_constant_variable.zig+17-19
...@@ -72,24 +72,22 @@ export fn entry18() void {...@@ -72,24 +72,22 @@ export fn entry18() void {
72}72}
7373
74// error74// error
75// backend=stage2
76// target=native
77//75//
78// :3:5: error: cannot assign to constant76// :3:5: error: cannot assign to constant
79// :7:7: error: cannot assign to constant77// :7:5: error: cannot assign to constant
80// :11:7: error: cannot assign to constant78// :11:5: error: cannot assign to constant
81// :15:7: error: cannot assign to constant79// :15:5: error: cannot assign to constant
82// :19:7: error: cannot assign to constant80// :19:5: error: cannot assign to constant
83// :23:7: error: cannot assign to constant81// :23:5: error: cannot assign to constant
84// :27:7: error: cannot assign to constant82// :27:5: error: cannot assign to constant
85// :31:7: error: cannot assign to constant83// :31:5: error: cannot assign to constant
86// :35:7: error: cannot assign to constant84// :35:5: error: cannot assign to constant
87// :39:7: error: cannot assign to constant85// :39:5: error: cannot assign to constant
88// :43:7: error: cannot assign to constant86// :43:5: error: cannot assign to constant
89// :47:7: error: cannot assign to constant87// :47:5: error: cannot assign to constant
90// :51:7: error: cannot assign to constant88// :51:5: error: cannot assign to constant
91// :55:7: error: cannot assign to constant89// :55:5: error: cannot assign to constant
92// :59:7: error: cannot assign to constant90// :59:5: error: cannot assign to constant
93// :63:7: error: cannot assign to constant91// :63:5: error: cannot assign to constant
94// :67:7: error: cannot assign to constant92// :67:5: error: cannot assign to constant
95// :71:7: error: cannot assign to constant93// :71:5: error: cannot assign to constant
test/cases/compile_errors/comptime_vector_overflow_shows_the_index.zig+1-3
...@@ -6,8 +6,6 @@ comptime {...@@ -6,8 +6,6 @@ comptime {
6}6}
77
8// error8// error
9// backend=stage2
10// target=native
11//9//
12// :4:15: error: overflow of vector type '@Vector(4, u8)' with value '.{ 6, 8, 256, 12 }'10// :4:15: error: overflow of integer type 'u8' with value '256'
13// :4:15: note: when computing vector element at index '2'11// :4:15: note: when computing vector element at index '2'
test/cases/compile_errors/div_assign_on_undefined_value.zig+1-3
...@@ -4,7 +4,5 @@ comptime {...@@ -4,7 +4,5 @@ comptime {
4}4}
55
6// error6// error
7// backend=stage2
8// target=native
9//7//
10// :3:10: error: use of undefined value here causes undefined behavior8// :3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/div_on_undefined_value.zig deleted-11
...@@ -1,11 +0,0 @@
1comptime {
2 var a: i64 = undefined;
3 _ = a / a;
4 _ = &a;
5}
6
7// error
8// backend=stage2
9// target=native
10//
11// :3:13: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/mult_assign_on_undefined_value.zig+1-3
...@@ -4,7 +4,5 @@ comptime {...@@ -4,7 +4,5 @@ comptime {
4}4}
55
6// error6// error
7// backend=stage2
8// target=native
9//7//
10// :3:10: error: use of undefined value here causes undefined behavior8// :3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/mult_on_undefined_value.zig deleted-38
...@@ -1,38 +0,0 @@
1comptime {
2 const undef: i64 = undefined;
3 const not_undef: i64 = 32;
4
5 // If either of the operands are zero, the result is zero.
6 @compileLog(undef * 0);
7 @compileLog(not_undef * 0);
8 @compileLog(0 * undef);
9 @compileLog(0 * not_undef);
10
11 // If either of the operands are one, the result is the other
12 // operand, even if it is undefined.
13 @compileLog(undef * 1);
14 @compileLog(not_undef * 1);
15 @compileLog(1 * undef);
16 @compileLog(1 * not_undef);
17
18 // If either of the operands are undefined, it's a compile error
19 // because there is a possible value for which the addition would
20 // overflow (max_int), causing illegal behavior.
21 _ = undef * undef;
22}
23
24// error
25// backend=stage2
26// target=native
27//
28// :21:17: error: use of undefined value here causes undefined behavior
29//
30// Compile Log Output:
31// @as(i64, 0)
32// @as(i64, 0)
33// @as(i64, 0)
34// @as(i64, 0)
35// @as(i64, undefined)
36// @as(i64, 32)
37// @as(i64, undefined)
38// @as(i64, 32)
test/cases/compile_errors/mult_sat_on_undefined_value.zig deleted-38
...@@ -1,38 +0,0 @@
1comptime {
2 const undef: i64 = undefined;
3 const not_undef: i64 = 32;
4
5 // If either of the operands are zero, the result is zero.
6 @compileLog(undef *| 0);
7 @compileLog(not_undef *| 0);
8 @compileLog(0 *| undef);
9 @compileLog(0 *| not_undef);
10
11 // If either of the operands are one, result is the other operand.
12 @compileLog(undef *| 1);
13 @compileLog(not_undef *| 1);
14 @compileLog(1 *| undef);
15 @compileLog(1 *| not_undef);
16
17 // If either of the operands are undefined, result is undefined.
18 @compileLog(undef *| 2);
19 @compileLog(2 *| undef);
20}
21
22// error
23// backend=stage2
24// target=native
25//
26// :6:5: error: found compile log statement
27//
28// Compile Log Output:
29// @as(i64, 0)
30// @as(i64, 0)
31// @as(i64, 0)
32// @as(i64, 0)
33// @as(i64, undefined)
34// @as(i64, 32)
35// @as(i64, undefined)
36// @as(i64, 32)
37// @as(i64, undefined)
38// @as(i64, undefined)
test/cases/compile_errors/mult_wrap_on_undefined_value.zig deleted-38
...@@ -1,38 +0,0 @@
1comptime {
2 const undef: i64 = undefined;
3 const not_undef: i64 = 32;
4
5 // If either of the operands are zero, the result is zero.
6 @compileLog(undef *% 0);
7 @compileLog(not_undef *% 0);
8 @compileLog(0 *% undef);
9 @compileLog(0 *% not_undef);
10
11 // If either of the operands are one, result is the other operand.
12 @compileLog(undef *% 1);
13 @compileLog(not_undef *% 1);
14 @compileLog(1 *% undef);
15 @compileLog(1 *% not_undef);
16
17 // If either of the operands are undefined, result is undefined.
18 @compileLog(undef *% 2);
19 @compileLog(2 *% undef);
20}
21
22// error
23// backend=stage2
24// target=native
25//
26// :6:5: error: found compile log statement
27//
28// Compile Log Output:
29// @as(i64, 0)
30// @as(i64, 0)
31// @as(i64, 0)
32// @as(i64, 0)
33// @as(i64, undefined)
34// @as(i64, 32)
35// @as(i64, undefined)
36// @as(i64, 32)
37// @as(i64, undefined)
38// @as(i64, undefined)
test/cases/compile_errors/non-pure_function_returns_type.zig-2
...@@ -18,8 +18,6 @@ export fn function_with_return_type_type() void {...@@ -18,8 +18,6 @@ export fn function_with_return_type_type() void {
18}18}
1919
20// error20// error
21// backend=stage2
22// target=native
23//21//
24// :3:7: error: unable to evaluate comptime expression22// :3:7: error: unable to evaluate comptime expression
25// :3:5: note: operation is runtime due to this operand23// :3:5: note: operation is runtime due to this operand
test/cases/compile_errors/signed_integer_remainder_division.zig-2
...@@ -3,7 +3,5 @@ export fn foo(a: i32, b: i32) i32 {...@@ -3,7 +3,5 @@ export fn foo(a: i32, b: i32) i32 {
3}3}
44
5// error5// error
6// backend=stage2
7// target=native
8//6//
9// :2:12: error: remainder division with 'i32' and 'i32': signed integers and floats must use @rem or @mod7// :2:12: error: remainder division with 'i32' and 'i32': signed integers and floats must use @rem or @mod
test/cases/compile_errors/specify_enum_tag_type_that_is_too_small.zig+13-4
...@@ -6,12 +6,21 @@ const Small = enum(u2) {...@@ -6,12 +6,21 @@ const Small = enum(u2) {
6 Five,6 Five,
7};7};
88
9export fn entry() void {9const SmallUnion = union(enum(u2)) {
10 _ = Small.One;10 one = 1,
11 two,
12 three,
13 four,
14};
15
16comptime {
17 _ = Small;
18}
19comptime {
20 _ = SmallUnion;
11}21}
1222
13// error23// error
14// backend=stage2
15// target=native
16//24//
17// :6:5: error: enumeration value '4' too large for type 'u2'25// :6:5: error: enumeration value '4' too large for type 'u2'
26// :13:5: error: enumeration value '4' too large for type 'u2'
test/cases/compile_errors/sub_assign_on_undefined_value.zig+1-3
...@@ -4,7 +4,5 @@ comptime {...@@ -4,7 +4,5 @@ comptime {
4}4}
55
6// error6// error
7// backend=stage2
8// target=native
9//7//
10// :3:10: error: use of undefined value here causes undefined behavior8// :3:5: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/sub_on_undefined_value.zig deleted-20
...@@ -1,20 +0,0 @@
1comptime {
2 const undef: i64 = undefined;
3 const not_undef: i64 = 32;
4
5 // If the rhs is zero, then the other operand is returned, even if it is undefined.
6 @compileLog(undef - 0);
7 @compileLog(not_undef - 0);
8
9 _ = undef - undef;
10}
11
12// error
13// backend=stage2
14// target=native
15//
16// :9:17: error: use of undefined value here causes undefined behavior
17//
18// Compile Log Output:
19// @as(i64, undefined)
20// @as(i64, 32)
test/cases/compile_errors/unable_to_evaluate_expr_inside_cimport.zig+3-5
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1const c = @cImport({1const c = @cImport({
2 _ = 1 + foo;2 if (foo == 0) {}
3});3});
4extern var foo: i32;4extern var foo: i32;
5export fn entry() void {5export fn entry() void {
...@@ -7,9 +7,7 @@ export fn entry() void {...@@ -7,9 +7,7 @@ export fn entry() void {
7}7}
88
9// error9// error
10// backend=stage2
11// target=native
12//10//
13// :2:11: error: unable to evaluate comptime expression11// :2:13: error: unable to evaluate comptime expression
14// :2:13: note: operation is runtime due to this operand12// :2:9: note: operation is runtime due to this operand
15// :1:11: note: operand to '@cImport' is evaluated at comptime13// :1:11: note: operand to '@cImport' is evaluated at comptime
test/cases/compile_errors/undef_arith_is_illegal.zig created+6885
...@@ -0,0 +1,6885 @@
1//! For arithmetic operations which can trigger Illegal Behavior, this test evaluates those
2//! operations with undefined operands (or partially-undefined vector operands), and ensures that a
3//! compile error is emitted as expected.
4
5comptime {
6 // Total expected errors:
7 // 29*22*6 + 26*22*5 = 6688
8
9 testType(u8);
10 testType(i8);
11 testType(u32);
12 testType(i32);
13 testType(u500);
14 testType(i500);
15
16 testType(f16);
17 testType(f32);
18 testType(f64);
19 testType(f80);
20 testType(f128);
21}
22
23fn testType(comptime Scalar: type) void {
24 testInner(Scalar, undefined, 1);
25 testInner(Scalar, undefined, undefined);
26 testInner(@Vector(2, Scalar), undefined, undefined);
27 testInner(@Vector(2, Scalar), undefined, .{ 1, 2 });
28 testInner(@Vector(2, Scalar), undefined, .{ 1, undefined });
29 testInner(@Vector(2, Scalar), undefined, .{ undefined, 2 });
30 testInner(@Vector(2, Scalar), undefined, .{ undefined, undefined });
31 testInner(@Vector(2, Scalar), .{ 1, undefined }, undefined);
32 testInner(@Vector(2, Scalar), .{ 1, undefined }, .{ 1, 2 });
33 testInner(@Vector(2, Scalar), .{ 1, undefined }, .{ 1, undefined });
34 testInner(@Vector(2, Scalar), .{ 1, undefined }, .{ undefined, 2 });
35 testInner(@Vector(2, Scalar), .{ 1, undefined }, .{ undefined, undefined });
36 testInner(@Vector(2, Scalar), .{ undefined, 2 }, undefined);
37 testInner(@Vector(2, Scalar), .{ undefined, 2 }, .{ 1, 2 });
38 testInner(@Vector(2, Scalar), .{ undefined, 2 }, .{ 1, undefined });
39 testInner(@Vector(2, Scalar), .{ undefined, 2 }, .{ undefined, 2 });
40 testInner(@Vector(2, Scalar), .{ undefined, 2 }, .{ undefined, undefined });
41 testInner(@Vector(2, Scalar), .{ undefined, undefined }, undefined);
42 testInner(@Vector(2, Scalar), .{ undefined, undefined }, .{ 1, 2 });
43 testInner(@Vector(2, Scalar), .{ undefined, undefined }, .{ 1, undefined });
44 testInner(@Vector(2, Scalar), .{ undefined, undefined }, .{ undefined, 2 });
45 testInner(@Vector(2, Scalar), .{ undefined, undefined }, .{ undefined, undefined });
46}
47
48/// At the time of writing, this is expected to trigger:
49/// * 26 errors if `T` is a float (or vector of floats)
50/// * 29 errors if `T` is an int (or vector of ints)
51fn testInner(comptime T: type, comptime u: T, comptime maybe_defined: T) void {
52 const Scalar = switch (@typeInfo(T)) {
53 .float, .int => T,
54 .vector => |v| v.child,
55 else => unreachable,
56 };
57
58 const mode: std.builtin.FloatMode = switch (@typeInfo(Scalar)) {
59 .float => .optimized,
60 .int => .strict, // it shouldn't matter
61 else => unreachable,
62 };
63
64 _ = struct {
65 const a: T = maybe_defined;
66 var b: T = maybe_defined;
67
68 // undef LHS, comptime-known LHS
69 comptime {
70 @setFloatMode(mode);
71 _ = u / a;
72 }
73 comptime {
74 @setFloatMode(mode);
75 _ = @divFloor(u, a);
76 }
77 comptime {
78 @setFloatMode(mode);
79 _ = @divTrunc(u, a);
80 }
81 comptime {
82 // Don't need to set float mode, because this can be IB anyway
83 _ = @divExact(u, a);
84 }
85 comptime {
86 @setFloatMode(mode);
87 _ = u % a;
88 }
89 comptime {
90 @setFloatMode(mode);
91 _ = @mod(u, a);
92 }
93 comptime {
94 @setFloatMode(mode);
95 _ = @rem(u, a);
96 }
97
98 // undef LHS, runtime-known LHS
99 comptime {
100 @setFloatMode(mode);
101 _ = u / b;
102 }
103 comptime {
104 @setFloatMode(mode);
105 _ = @divFloor(u, b);
106 }
107 comptime {
108 @setFloatMode(mode);
109 _ = @divTrunc(u, b);
110 }
111 comptime {
112 // Don't need to set float mode, because this can be IB anyway
113 _ = @divExact(u, b);
114 }
115 comptime {
116 @setFloatMode(mode);
117 _ = @mod(u, b);
118 }
119 comptime {
120 @setFloatMode(mode);
121 _ = @rem(u, b);
122 }
123
124 // undef RHS, comptime-known LHS
125 comptime {
126 @setFloatMode(mode);
127 _ = a / u;
128 }
129 comptime {
130 @setFloatMode(mode);
131 _ = @divFloor(a, u);
132 }
133 comptime {
134 @setFloatMode(mode);
135 _ = @divTrunc(a, u);
136 }
137 comptime {
138 // Don't need to set float mode, because this can be IB anyway
139 _ = @divExact(a, u);
140 }
141 comptime {
142 @setFloatMode(mode);
143 _ = a % u;
144 }
145 comptime {
146 @setFloatMode(mode);
147 _ = @mod(a, u);
148 }
149 comptime {
150 @setFloatMode(mode);
151 _ = @rem(a, u);
152 }
153
154 // undef RHS, runtime-known LHS
155 comptime {
156 @setFloatMode(mode);
157 _ = b / u;
158 }
159 comptime {
160 @setFloatMode(mode);
161 _ = @divFloor(b, u);
162 }
163 comptime {
164 @setFloatMode(mode);
165 _ = @divTrunc(b, u);
166 }
167 comptime {
168 // Don't need to set float mode, because this can be IB anyway
169 _ = @divExact(b, u);
170 }
171 comptime {
172 @setFloatMode(mode);
173 _ = @mod(b, u);
174 }
175 comptime {
176 @setFloatMode(mode);
177 _ = @rem(b, u);
178 }
179
180 // The following tests should only fail for integer types.
181
182 comptime {
183 _ = u + a;
184 }
185 comptime {
186 _ = u - a;
187 }
188 comptime {
189 _ = u * a;
190 }
191 };
192}
193
194const std = @import("std");
195
196// error
197//
198// :71:17: error: use of undefined value here causes undefined behavior
199// :71:17: error: use of undefined value here causes undefined behavior
200// :71:17: error: use of undefined value here causes undefined behavior
201// :71:17: error: use of undefined value here causes undefined behavior
202// :71:17: error: use of undefined value here causes undefined behavior
203// :71:17: error: use of undefined value here causes undefined behavior
204// :71:17: error: use of undefined value here causes undefined behavior
205// :71:17: error: use of undefined value here causes undefined behavior
206// :71:17: error: use of undefined value here causes undefined behavior
207// :71:17: error: use of undefined value here causes undefined behavior
208// :71:17: error: use of undefined value here causes undefined behavior
209// :71:17: error: use of undefined value here causes undefined behavior
210// :71:17: error: use of undefined value here causes undefined behavior
211// :71:17: error: use of undefined value here causes undefined behavior
212// :71:17: error: use of undefined value here causes undefined behavior
213// :71:17: error: use of undefined value here causes undefined behavior
214// :71:17: error: use of undefined value here causes undefined behavior
215// :71:17: error: use of undefined value here causes undefined behavior
216// :71:17: error: use of undefined value here causes undefined behavior
217// :71:17: error: use of undefined value here causes undefined behavior
218// :71:17: error: use of undefined value here causes undefined behavior
219// :71:17: error: use of undefined value here causes undefined behavior
220// :71:17: error: use of undefined value here causes undefined behavior
221// :71:17: error: use of undefined value here causes undefined behavior
222// :71:17: error: use of undefined value here causes undefined behavior
223// :71:17: error: use of undefined value here causes undefined behavior
224// :71:17: error: use of undefined value here causes undefined behavior
225// :71:17: error: use of undefined value here causes undefined behavior
226// :71:17: error: use of undefined value here causes undefined behavior
227// :71:17: error: use of undefined value here causes undefined behavior
228// :71:17: error: use of undefined value here causes undefined behavior
229// :71:17: error: use of undefined value here causes undefined behavior
230// :71:17: error: use of undefined value here causes undefined behavior
231// :71:17: error: use of undefined value here causes undefined behavior
232// :71:17: error: use of undefined value here causes undefined behavior
233// :71:17: error: use of undefined value here causes undefined behavior
234// :71:17: error: use of undefined value here causes undefined behavior
235// :71:17: error: use of undefined value here causes undefined behavior
236// :71:17: error: use of undefined value here causes undefined behavior
237// :71:17: error: use of undefined value here causes undefined behavior
238// :71:17: error: use of undefined value here causes undefined behavior
239// :71:17: error: use of undefined value here causes undefined behavior
240// :71:17: error: use of undefined value here causes undefined behavior
241// :71:17: error: use of undefined value here causes undefined behavior
242// :71:17: error: use of undefined value here causes undefined behavior
243// :71:17: error: use of undefined value here causes undefined behavior
244// :71:17: error: use of undefined value here causes undefined behavior
245// :71:17: error: use of undefined value here causes undefined behavior
246// :71:17: error: use of undefined value here causes undefined behavior
247// :71:17: error: use of undefined value here causes undefined behavior
248// :71:17: error: use of undefined value here causes undefined behavior
249// :71:17: error: use of undefined value here causes undefined behavior
250// :71:17: error: use of undefined value here causes undefined behavior
251// :71:17: error: use of undefined value here causes undefined behavior
252// :71:17: error: use of undefined value here causes undefined behavior
253// :71:17: error: use of undefined value here causes undefined behavior
254// :71:17: error: use of undefined value here causes undefined behavior
255// :71:17: error: use of undefined value here causes undefined behavior
256// :71:17: error: use of undefined value here causes undefined behavior
257// :71:17: error: use of undefined value here causes undefined behavior
258// :71:17: error: use of undefined value here causes undefined behavior
259// :71:17: error: use of undefined value here causes undefined behavior
260// :71:17: error: use of undefined value here causes undefined behavior
261// :71:17: error: use of undefined value here causes undefined behavior
262// :71:17: error: use of undefined value here causes undefined behavior
263// :71:17: error: use of undefined value here causes undefined behavior
264// :71:17: error: use of undefined value here causes undefined behavior
265// :71:17: error: use of undefined value here causes undefined behavior
266// :71:17: error: use of undefined value here causes undefined behavior
267// :71:17: error: use of undefined value here causes undefined behavior
268// :71:17: error: use of undefined value here causes undefined behavior
269// :71:17: error: use of undefined value here causes undefined behavior
270// :71:17: error: use of undefined value here causes undefined behavior
271// :71:17: error: use of undefined value here causes undefined behavior
272// :71:17: error: use of undefined value here causes undefined behavior
273// :71:17: error: use of undefined value here causes undefined behavior
274// :71:17: error: use of undefined value here causes undefined behavior
275// :71:17: error: use of undefined value here causes undefined behavior
276// :71:17: error: use of undefined value here causes undefined behavior
277// :71:17: error: use of undefined value here causes undefined behavior
278// :71:17: error: use of undefined value here causes undefined behavior
279// :71:17: error: use of undefined value here causes undefined behavior
280// :71:17: error: use of undefined value here causes undefined behavior
281// :71:17: error: use of undefined value here causes undefined behavior
282// :71:17: error: use of undefined value here causes undefined behavior
283// :71:17: error: use of undefined value here causes undefined behavior
284// :71:17: error: use of undefined value here causes undefined behavior
285// :71:17: error: use of undefined value here causes undefined behavior
286// :71:17: error: use of undefined value here causes undefined behavior
287// :71:17: error: use of undefined value here causes undefined behavior
288// :71:17: error: use of undefined value here causes undefined behavior
289// :71:17: error: use of undefined value here causes undefined behavior
290// :71:17: error: use of undefined value here causes undefined behavior
291// :71:17: error: use of undefined value here causes undefined behavior
292// :71:17: error: use of undefined value here causes undefined behavior
293// :71:17: error: use of undefined value here causes undefined behavior
294// :71:17: error: use of undefined value here causes undefined behavior
295// :71:17: error: use of undefined value here causes undefined behavior
296// :71:17: error: use of undefined value here causes undefined behavior
297// :71:17: error: use of undefined value here causes undefined behavior
298// :71:17: error: use of undefined value here causes undefined behavior
299// :71:17: error: use of undefined value here causes undefined behavior
300// :71:17: error: use of undefined value here causes undefined behavior
301// :71:17: error: use of undefined value here causes undefined behavior
302// :71:17: error: use of undefined value here causes undefined behavior
303// :71:17: error: use of undefined value here causes undefined behavior
304// :71:17: error: use of undefined value here causes undefined behavior
305// :71:17: error: use of undefined value here causes undefined behavior
306// :71:17: error: use of undefined value here causes undefined behavior
307// :71:17: error: use of undefined value here causes undefined behavior
308// :71:17: error: use of undefined value here causes undefined behavior
309// :71:17: error: use of undefined value here causes undefined behavior
310// :71:17: error: use of undefined value here causes undefined behavior
311// :71:17: error: use of undefined value here causes undefined behavior
312// :71:17: error: use of undefined value here causes undefined behavior
313// :71:17: error: use of undefined value here causes undefined behavior
314// :71:17: error: use of undefined value here causes undefined behavior
315// :71:17: error: use of undefined value here causes undefined behavior
316// :71:17: error: use of undefined value here causes undefined behavior
317// :71:17: error: use of undefined value here causes undefined behavior
318// :71:17: error: use of undefined value here causes undefined behavior
319// :71:17: error: use of undefined value here causes undefined behavior
320// :71:17: error: use of undefined value here causes undefined behavior
321// :71:17: error: use of undefined value here causes undefined behavior
322// :71:17: error: use of undefined value here causes undefined behavior
323// :71:17: error: use of undefined value here causes undefined behavior
324// :71:17: error: use of undefined value here causes undefined behavior
325// :71:17: error: use of undefined value here causes undefined behavior
326// :71:17: error: use of undefined value here causes undefined behavior
327// :71:17: error: use of undefined value here causes undefined behavior
328// :71:17: error: use of undefined value here causes undefined behavior
329// :71:17: error: use of undefined value here causes undefined behavior
330// :71:17: error: use of undefined value here causes undefined behavior
331// :71:17: error: use of undefined value here causes undefined behavior
332// :71:17: error: use of undefined value here causes undefined behavior
333// :71:17: error: use of undefined value here causes undefined behavior
334// :71:17: error: use of undefined value here causes undefined behavior
335// :71:17: error: use of undefined value here causes undefined behavior
336// :71:17: error: use of undefined value here causes undefined behavior
337// :71:17: error: use of undefined value here causes undefined behavior
338// :71:17: error: use of undefined value here causes undefined behavior
339// :71:17: error: use of undefined value here causes undefined behavior
340// :71:17: error: use of undefined value here causes undefined behavior
341// :71:17: error: use of undefined value here causes undefined behavior
342// :71:17: error: use of undefined value here causes undefined behavior
343// :71:17: error: use of undefined value here causes undefined behavior
344// :71:17: error: use of undefined value here causes undefined behavior
345// :71:17: error: use of undefined value here causes undefined behavior
346// :71:17: error: use of undefined value here causes undefined behavior
347// :71:17: error: use of undefined value here causes undefined behavior
348// :71:17: error: use of undefined value here causes undefined behavior
349// :71:17: error: use of undefined value here causes undefined behavior
350// :71:17: error: use of undefined value here causes undefined behavior
351// :71:17: error: use of undefined value here causes undefined behavior
352// :71:17: error: use of undefined value here causes undefined behavior
353// :71:17: error: use of undefined value here causes undefined behavior
354// :71:17: error: use of undefined value here causes undefined behavior
355// :71:17: error: use of undefined value here causes undefined behavior
356// :71:17: error: use of undefined value here causes undefined behavior
357// :71:17: error: use of undefined value here causes undefined behavior
358// :71:17: error: use of undefined value here causes undefined behavior
359// :71:17: error: use of undefined value here causes undefined behavior
360// :71:17: error: use of undefined value here causes undefined behavior
361// :71:17: error: use of undefined value here causes undefined behavior
362// :71:17: error: use of undefined value here causes undefined behavior
363// :71:17: error: use of undefined value here causes undefined behavior
364// :71:17: error: use of undefined value here causes undefined behavior
365// :71:17: error: use of undefined value here causes undefined behavior
366// :71:17: error: use of undefined value here causes undefined behavior
367// :71:17: error: use of undefined value here causes undefined behavior
368// :71:17: error: use of undefined value here causes undefined behavior
369// :71:17: error: use of undefined value here causes undefined behavior
370// :71:17: error: use of undefined value here causes undefined behavior
371// :71:17: error: use of undefined value here causes undefined behavior
372// :71:17: error: use of undefined value here causes undefined behavior
373// :71:17: error: use of undefined value here causes undefined behavior
374// :71:17: error: use of undefined value here causes undefined behavior
375// :71:17: error: use of undefined value here causes undefined behavior
376// :71:17: error: use of undefined value here causes undefined behavior
377// :71:17: error: use of undefined value here causes undefined behavior
378// :71:17: error: use of undefined value here causes undefined behavior
379// :71:17: error: use of undefined value here causes undefined behavior
380// :71:17: error: use of undefined value here causes undefined behavior
381// :71:17: error: use of undefined value here causes undefined behavior
382// :71:17: error: use of undefined value here causes undefined behavior
383// :71:17: error: use of undefined value here causes undefined behavior
384// :71:17: error: use of undefined value here causes undefined behavior
385// :71:17: error: use of undefined value here causes undefined behavior
386// :71:17: error: use of undefined value here causes undefined behavior
387// :71:17: error: use of undefined value here causes undefined behavior
388// :71:17: error: use of undefined value here causes undefined behavior
389// :71:17: error: use of undefined value here causes undefined behavior
390// :71:17: error: use of undefined value here causes undefined behavior
391// :71:17: error: use of undefined value here causes undefined behavior
392// :71:17: error: use of undefined value here causes undefined behavior
393// :71:17: error: use of undefined value here causes undefined behavior
394// :71:17: error: use of undefined value here causes undefined behavior
395// :71:17: error: use of undefined value here causes undefined behavior
396// :71:17: error: use of undefined value here causes undefined behavior
397// :71:17: error: use of undefined value here causes undefined behavior
398// :71:17: error: use of undefined value here causes undefined behavior
399// :71:17: error: use of undefined value here causes undefined behavior
400// :71:17: error: use of undefined value here causes undefined behavior
401// :71:17: error: use of undefined value here causes undefined behavior
402// :71:17: error: use of undefined value here causes undefined behavior
403// :71:17: error: use of undefined value here causes undefined behavior
404// :71:17: error: use of undefined value here causes undefined behavior
405// :71:17: error: use of undefined value here causes undefined behavior
406// :71:17: error: use of undefined value here causes undefined behavior
407// :71:21: error: use of undefined value here causes undefined behavior
408// :71:21: error: use of undefined value here causes undefined behavior
409// :71:21: error: use of undefined value here causes undefined behavior
410// :71:21: error: use of undefined value here causes undefined behavior
411// :71:21: error: use of undefined value here causes undefined behavior
412// :71:21: error: use of undefined value here causes undefined behavior
413// :71:21: error: use of undefined value here causes undefined behavior
414// :71:21: error: use of undefined value here causes undefined behavior
415// :71:21: error: use of undefined value here causes undefined behavior
416// :71:21: error: use of undefined value here causes undefined behavior
417// :71:21: error: use of undefined value here causes undefined behavior
418// :71:21: error: use of undefined value here causes undefined behavior
419// :71:21: error: use of undefined value here causes undefined behavior
420// :71:21: error: use of undefined value here causes undefined behavior
421// :71:21: error: use of undefined value here causes undefined behavior
422// :71:21: error: use of undefined value here causes undefined behavior
423// :71:21: error: use of undefined value here causes undefined behavior
424// :71:21: error: use of undefined value here causes undefined behavior
425// :71:21: error: use of undefined value here causes undefined behavior
426// :71:21: error: use of undefined value here causes undefined behavior
427// :71:21: error: use of undefined value here causes undefined behavior
428// :71:21: error: use of undefined value here causes undefined behavior
429// :71:21: error: use of undefined value here causes undefined behavior
430// :71:21: error: use of undefined value here causes undefined behavior
431// :71:21: error: use of undefined value here causes undefined behavior
432// :71:21: error: use of undefined value here causes undefined behavior
433// :71:21: error: use of undefined value here causes undefined behavior
434// :71:21: error: use of undefined value here causes undefined behavior
435// :71:21: error: use of undefined value here causes undefined behavior
436// :71:21: error: use of undefined value here causes undefined behavior
437// :71:21: error: use of undefined value here causes undefined behavior
438// :71:21: error: use of undefined value here causes undefined behavior
439// :71:21: error: use of undefined value here causes undefined behavior
440// :75:27: error: use of undefined value here causes undefined behavior
441// :75:27: error: use of undefined value here causes undefined behavior
442// :75:27: error: use of undefined value here causes undefined behavior
443// :75:27: error: use of undefined value here causes undefined behavior
444// :75:27: error: use of undefined value here causes undefined behavior
445// :75:27: error: use of undefined value here causes undefined behavior
446// :75:27: error: use of undefined value here causes undefined behavior
447// :75:27: error: use of undefined value here causes undefined behavior
448// :75:27: error: use of undefined value here causes undefined behavior
449// :75:27: error: use of undefined value here causes undefined behavior
450// :75:27: error: use of undefined value here causes undefined behavior
451// :75:27: error: use of undefined value here causes undefined behavior
452// :75:27: error: use of undefined value here causes undefined behavior
453// :75:27: error: use of undefined value here causes undefined behavior
454// :75:27: error: use of undefined value here causes undefined behavior
455// :75:27: error: use of undefined value here causes undefined behavior
456// :75:27: error: use of undefined value here causes undefined behavior
457// :75:27: error: use of undefined value here causes undefined behavior
458// :75:27: error: use of undefined value here causes undefined behavior
459// :75:27: error: use of undefined value here causes undefined behavior
460// :75:27: error: use of undefined value here causes undefined behavior
461// :75:27: error: use of undefined value here causes undefined behavior
462// :75:27: error: use of undefined value here causes undefined behavior
463// :75:27: error: use of undefined value here causes undefined behavior
464// :75:27: error: use of undefined value here causes undefined behavior
465// :75:27: error: use of undefined value here causes undefined behavior
466// :75:27: error: use of undefined value here causes undefined behavior
467// :75:27: error: use of undefined value here causes undefined behavior
468// :75:27: error: use of undefined value here causes undefined behavior
469// :75:27: error: use of undefined value here causes undefined behavior
470// :75:27: error: use of undefined value here causes undefined behavior
471// :75:27: error: use of undefined value here causes undefined behavior
472// :75:27: error: use of undefined value here causes undefined behavior
473// :75:27: error: use of undefined value here causes undefined behavior
474// :75:27: error: use of undefined value here causes undefined behavior
475// :75:27: error: use of undefined value here causes undefined behavior
476// :75:27: error: use of undefined value here causes undefined behavior
477// :75:27: error: use of undefined value here causes undefined behavior
478// :75:27: error: use of undefined value here causes undefined behavior
479// :75:27: error: use of undefined value here causes undefined behavior
480// :75:27: error: use of undefined value here causes undefined behavior
481// :75:27: error: use of undefined value here causes undefined behavior
482// :75:27: error: use of undefined value here causes undefined behavior
483// :75:27: error: use of undefined value here causes undefined behavior
484// :75:27: error: use of undefined value here causes undefined behavior
485// :75:27: error: use of undefined value here causes undefined behavior
486// :75:27: error: use of undefined value here causes undefined behavior
487// :75:27: error: use of undefined value here causes undefined behavior
488// :75:27: error: use of undefined value here causes undefined behavior
489// :75:27: error: use of undefined value here causes undefined behavior
490// :75:27: error: use of undefined value here causes undefined behavior
491// :75:27: error: use of undefined value here causes undefined behavior
492// :75:27: error: use of undefined value here causes undefined behavior
493// :75:27: error: use of undefined value here causes undefined behavior
494// :75:27: error: use of undefined value here causes undefined behavior
495// :75:27: error: use of undefined value here causes undefined behavior
496// :75:27: error: use of undefined value here causes undefined behavior
497// :75:27: error: use of undefined value here causes undefined behavior
498// :75:27: error: use of undefined value here causes undefined behavior
499// :75:27: error: use of undefined value here causes undefined behavior
500// :75:27: error: use of undefined value here causes undefined behavior
501// :75:27: error: use of undefined value here causes undefined behavior
502// :75:27: error: use of undefined value here causes undefined behavior
503// :75:27: error: use of undefined value here causes undefined behavior
504// :75:27: error: use of undefined value here causes undefined behavior
505// :75:27: error: use of undefined value here causes undefined behavior
506// :75:27: error: use of undefined value here causes undefined behavior
507// :75:27: error: use of undefined value here causes undefined behavior
508// :75:27: error: use of undefined value here causes undefined behavior
509// :75:27: error: use of undefined value here causes undefined behavior
510// :75:27: error: use of undefined value here causes undefined behavior
511// :75:27: error: use of undefined value here causes undefined behavior
512// :75:27: error: use of undefined value here causes undefined behavior
513// :75:27: error: use of undefined value here causes undefined behavior
514// :75:27: error: use of undefined value here causes undefined behavior
515// :75:27: error: use of undefined value here causes undefined behavior
516// :75:27: error: use of undefined value here causes undefined behavior
517// :75:27: error: use of undefined value here causes undefined behavior
518// :75:27: error: use of undefined value here causes undefined behavior
519// :75:27: error: use of undefined value here causes undefined behavior
520// :75:27: error: use of undefined value here causes undefined behavior
521// :75:27: error: use of undefined value here causes undefined behavior
522// :75:27: error: use of undefined value here causes undefined behavior
523// :75:27: error: use of undefined value here causes undefined behavior
524// :75:27: error: use of undefined value here causes undefined behavior
525// :75:27: error: use of undefined value here causes undefined behavior
526// :75:27: error: use of undefined value here causes undefined behavior
527// :75:27: error: use of undefined value here causes undefined behavior
528// :75:27: error: use of undefined value here causes undefined behavior
529// :75:27: error: use of undefined value here causes undefined behavior
530// :75:27: error: use of undefined value here causes undefined behavior
531// :75:27: error: use of undefined value here causes undefined behavior
532// :75:27: error: use of undefined value here causes undefined behavior
533// :75:27: error: use of undefined value here causes undefined behavior
534// :75:27: error: use of undefined value here causes undefined behavior
535// :75:27: error: use of undefined value here causes undefined behavior
536// :75:27: error: use of undefined value here causes undefined behavior
537// :75:27: error: use of undefined value here causes undefined behavior
538// :75:27: error: use of undefined value here causes undefined behavior
539// :75:27: error: use of undefined value here causes undefined behavior
540// :75:27: error: use of undefined value here causes undefined behavior
541// :75:27: error: use of undefined value here causes undefined behavior
542// :75:27: error: use of undefined value here causes undefined behavior
543// :75:27: error: use of undefined value here causes undefined behavior
544// :75:27: error: use of undefined value here causes undefined behavior
545// :75:27: error: use of undefined value here causes undefined behavior
546// :75:27: error: use of undefined value here causes undefined behavior
547// :75:27: error: use of undefined value here causes undefined behavior
548// :75:27: error: use of undefined value here causes undefined behavior
549// :75:27: error: use of undefined value here causes undefined behavior
550// :75:27: error: use of undefined value here causes undefined behavior
551// :75:27: error: use of undefined value here causes undefined behavior
552// :75:27: error: use of undefined value here causes undefined behavior
553// :75:27: error: use of undefined value here causes undefined behavior
554// :75:27: error: use of undefined value here causes undefined behavior
555// :75:27: error: use of undefined value here causes undefined behavior
556// :75:27: error: use of undefined value here causes undefined behavior
557// :75:27: error: use of undefined value here causes undefined behavior
558// :75:27: error: use of undefined value here causes undefined behavior
559// :75:27: error: use of undefined value here causes undefined behavior
560// :75:27: error: use of undefined value here causes undefined behavior
561// :75:27: error: use of undefined value here causes undefined behavior
562// :75:27: error: use of undefined value here causes undefined behavior
563// :75:27: error: use of undefined value here causes undefined behavior
564// :75:27: error: use of undefined value here causes undefined behavior
565// :75:27: error: use of undefined value here causes undefined behavior
566// :75:27: error: use of undefined value here causes undefined behavior
567// :75:27: error: use of undefined value here causes undefined behavior
568// :75:27: error: use of undefined value here causes undefined behavior
569// :75:27: error: use of undefined value here causes undefined behavior
570// :75:27: error: use of undefined value here causes undefined behavior
571// :75:27: error: use of undefined value here causes undefined behavior
572// :75:27: error: use of undefined value here causes undefined behavior
573// :75:27: error: use of undefined value here causes undefined behavior
574// :75:27: error: use of undefined value here causes undefined behavior
575// :75:27: error: use of undefined value here causes undefined behavior
576// :75:27: error: use of undefined value here causes undefined behavior
577// :75:27: error: use of undefined value here causes undefined behavior
578// :75:27: error: use of undefined value here causes undefined behavior
579// :75:27: error: use of undefined value here causes undefined behavior
580// :75:27: error: use of undefined value here causes undefined behavior
581// :75:27: error: use of undefined value here causes undefined behavior
582// :75:27: error: use of undefined value here causes undefined behavior
583// :75:27: error: use of undefined value here causes undefined behavior
584// :75:27: error: use of undefined value here causes undefined behavior
585// :75:27: error: use of undefined value here causes undefined behavior
586// :75:27: error: use of undefined value here causes undefined behavior
587// :75:27: error: use of undefined value here causes undefined behavior
588// :75:27: error: use of undefined value here causes undefined behavior
589// :75:27: error: use of undefined value here causes undefined behavior
590// :75:27: error: use of undefined value here causes undefined behavior
591// :75:27: error: use of undefined value here causes undefined behavior
592// :75:27: error: use of undefined value here causes undefined behavior
593// :75:27: error: use of undefined value here causes undefined behavior
594// :75:27: error: use of undefined value here causes undefined behavior
595// :75:27: error: use of undefined value here causes undefined behavior
596// :75:27: error: use of undefined value here causes undefined behavior
597// :75:27: error: use of undefined value here causes undefined behavior
598// :75:27: error: use of undefined value here causes undefined behavior
599// :75:27: error: use of undefined value here causes undefined behavior
600// :75:27: error: use of undefined value here causes undefined behavior
601// :75:27: error: use of undefined value here causes undefined behavior
602// :75:27: error: use of undefined value here causes undefined behavior
603// :75:27: error: use of undefined value here causes undefined behavior
604// :75:27: error: use of undefined value here causes undefined behavior
605// :75:27: error: use of undefined value here causes undefined behavior
606// :75:27: error: use of undefined value here causes undefined behavior
607// :75:27: error: use of undefined value here causes undefined behavior
608// :75:27: error: use of undefined value here causes undefined behavior
609// :75:27: error: use of undefined value here causes undefined behavior
610// :75:27: error: use of undefined value here causes undefined behavior
611// :75:27: error: use of undefined value here causes undefined behavior
612// :75:27: error: use of undefined value here causes undefined behavior
613// :75:27: error: use of undefined value here causes undefined behavior
614// :75:27: error: use of undefined value here causes undefined behavior
615// :75:27: error: use of undefined value here causes undefined behavior
616// :75:27: error: use of undefined value here causes undefined behavior
617// :75:27: error: use of undefined value here causes undefined behavior
618// :75:27: error: use of undefined value here causes undefined behavior
619// :75:27: error: use of undefined value here causes undefined behavior
620// :75:27: error: use of undefined value here causes undefined behavior
621// :75:27: error: use of undefined value here causes undefined behavior
622// :75:27: error: use of undefined value here causes undefined behavior
623// :75:27: error: use of undefined value here causes undefined behavior
624// :75:27: error: use of undefined value here causes undefined behavior
625// :75:27: error: use of undefined value here causes undefined behavior
626// :75:27: error: use of undefined value here causes undefined behavior
627// :75:27: error: use of undefined value here causes undefined behavior
628// :75:27: error: use of undefined value here causes undefined behavior
629// :75:27: error: use of undefined value here causes undefined behavior
630// :75:27: error: use of undefined value here causes undefined behavior
631// :75:27: error: use of undefined value here causes undefined behavior
632// :75:27: error: use of undefined value here causes undefined behavior
633// :75:27: error: use of undefined value here causes undefined behavior
634// :75:27: error: use of undefined value here causes undefined behavior
635// :75:27: error: use of undefined value here causes undefined behavior
636// :75:27: error: use of undefined value here causes undefined behavior
637// :75:27: error: use of undefined value here causes undefined behavior
638// :75:27: error: use of undefined value here causes undefined behavior
639// :75:27: error: use of undefined value here causes undefined behavior
640// :75:27: error: use of undefined value here causes undefined behavior
641// :75:27: error: use of undefined value here causes undefined behavior
642// :75:27: error: use of undefined value here causes undefined behavior
643// :75:27: error: use of undefined value here causes undefined behavior
644// :75:27: error: use of undefined value here causes undefined behavior
645// :75:27: error: use of undefined value here causes undefined behavior
646// :75:27: error: use of undefined value here causes undefined behavior
647// :75:27: error: use of undefined value here causes undefined behavior
648// :75:27: error: use of undefined value here causes undefined behavior
649// :75:30: error: use of undefined value here causes undefined behavior
650// :75:30: error: use of undefined value here causes undefined behavior
651// :75:30: error: use of undefined value here causes undefined behavior
652// :75:30: error: use of undefined value here causes undefined behavior
653// :75:30: error: use of undefined value here causes undefined behavior
654// :75:30: error: use of undefined value here causes undefined behavior
655// :75:30: error: use of undefined value here causes undefined behavior
656// :75:30: error: use of undefined value here causes undefined behavior
657// :75:30: error: use of undefined value here causes undefined behavior
658// :75:30: error: use of undefined value here causes undefined behavior
659// :75:30: error: use of undefined value here causes undefined behavior
660// :75:30: error: use of undefined value here causes undefined behavior
661// :75:30: error: use of undefined value here causes undefined behavior
662// :75:30: error: use of undefined value here causes undefined behavior
663// :75:30: error: use of undefined value here causes undefined behavior
664// :75:30: error: use of undefined value here causes undefined behavior
665// :75:30: error: use of undefined value here causes undefined behavior
666// :75:30: error: use of undefined value here causes undefined behavior
667// :75:30: error: use of undefined value here causes undefined behavior
668// :75:30: error: use of undefined value here causes undefined behavior
669// :75:30: error: use of undefined value here causes undefined behavior
670// :75:30: error: use of undefined value here causes undefined behavior
671// :75:30: error: use of undefined value here causes undefined behavior
672// :75:30: error: use of undefined value here causes undefined behavior
673// :75:30: error: use of undefined value here causes undefined behavior
674// :75:30: error: use of undefined value here causes undefined behavior
675// :75:30: error: use of undefined value here causes undefined behavior
676// :75:30: error: use of undefined value here causes undefined behavior
677// :75:30: error: use of undefined value here causes undefined behavior
678// :75:30: error: use of undefined value here causes undefined behavior
679// :75:30: error: use of undefined value here causes undefined behavior
680// :75:30: error: use of undefined value here causes undefined behavior
681// :75:30: error: use of undefined value here causes undefined behavior
682// :79:27: error: use of undefined value here causes undefined behavior
683// :79:27: error: use of undefined value here causes undefined behavior
684// :79:27: error: use of undefined value here causes undefined behavior
685// :79:27: error: use of undefined value here causes undefined behavior
686// :79:27: error: use of undefined value here causes undefined behavior
687// :79:27: error: use of undefined value here causes undefined behavior
688// :79:27: error: use of undefined value here causes undefined behavior
689// :79:27: error: use of undefined value here causes undefined behavior
690// :79:27: error: use of undefined value here causes undefined behavior
691// :79:27: error: use of undefined value here causes undefined behavior
692// :79:27: error: use of undefined value here causes undefined behavior
693// :79:27: error: use of undefined value here causes undefined behavior
694// :79:27: error: use of undefined value here causes undefined behavior
695// :79:27: error: use of undefined value here causes undefined behavior
696// :79:27: error: use of undefined value here causes undefined behavior
697// :79:27: error: use of undefined value here causes undefined behavior
698// :79:27: error: use of undefined value here causes undefined behavior
699// :79:27: error: use of undefined value here causes undefined behavior
700// :79:27: error: use of undefined value here causes undefined behavior
701// :79:27: error: use of undefined value here causes undefined behavior
702// :79:27: error: use of undefined value here causes undefined behavior
703// :79:27: error: use of undefined value here causes undefined behavior
704// :79:27: error: use of undefined value here causes undefined behavior
705// :79:27: error: use of undefined value here causes undefined behavior
706// :79:27: error: use of undefined value here causes undefined behavior
707// :79:27: error: use of undefined value here causes undefined behavior
708// :79:27: error: use of undefined value here causes undefined behavior
709// :79:27: error: use of undefined value here causes undefined behavior
710// :79:27: error: use of undefined value here causes undefined behavior
711// :79:27: error: use of undefined value here causes undefined behavior
712// :79:27: error: use of undefined value here causes undefined behavior
713// :79:27: error: use of undefined value here causes undefined behavior
714// :79:27: error: use of undefined value here causes undefined behavior
715// :79:27: error: use of undefined value here causes undefined behavior
716// :79:27: error: use of undefined value here causes undefined behavior
717// :79:27: error: use of undefined value here causes undefined behavior
718// :79:27: error: use of undefined value here causes undefined behavior
719// :79:27: error: use of undefined value here causes undefined behavior
720// :79:27: error: use of undefined value here causes undefined behavior
721// :79:27: error: use of undefined value here causes undefined behavior
722// :79:27: error: use of undefined value here causes undefined behavior
723// :79:27: error: use of undefined value here causes undefined behavior
724// :79:27: error: use of undefined value here causes undefined behavior
725// :79:27: error: use of undefined value here causes undefined behavior
726// :79:27: error: use of undefined value here causes undefined behavior
727// :79:27: error: use of undefined value here causes undefined behavior
728// :79:27: error: use of undefined value here causes undefined behavior
729// :79:27: error: use of undefined value here causes undefined behavior
730// :79:27: error: use of undefined value here causes undefined behavior
731// :79:27: error: use of undefined value here causes undefined behavior
732// :79:27: error: use of undefined value here causes undefined behavior
733// :79:27: error: use of undefined value here causes undefined behavior
734// :79:27: error: use of undefined value here causes undefined behavior
735// :79:27: error: use of undefined value here causes undefined behavior
736// :79:27: error: use of undefined value here causes undefined behavior
737// :79:27: error: use of undefined value here causes undefined behavior
738// :79:27: error: use of undefined value here causes undefined behavior
739// :79:27: error: use of undefined value here causes undefined behavior
740// :79:27: error: use of undefined value here causes undefined behavior
741// :79:27: error: use of undefined value here causes undefined behavior
742// :79:27: error: use of undefined value here causes undefined behavior
743// :79:27: error: use of undefined value here causes undefined behavior
744// :79:27: error: use of undefined value here causes undefined behavior
745// :79:27: error: use of undefined value here causes undefined behavior
746// :79:27: error: use of undefined value here causes undefined behavior
747// :79:27: error: use of undefined value here causes undefined behavior
748// :79:27: error: use of undefined value here causes undefined behavior
749// :79:27: error: use of undefined value here causes undefined behavior
750// :79:27: error: use of undefined value here causes undefined behavior
751// :79:27: error: use of undefined value here causes undefined behavior
752// :79:27: error: use of undefined value here causes undefined behavior
753// :79:27: error: use of undefined value here causes undefined behavior
754// :79:27: error: use of undefined value here causes undefined behavior
755// :79:27: error: use of undefined value here causes undefined behavior
756// :79:27: error: use of undefined value here causes undefined behavior
757// :79:27: error: use of undefined value here causes undefined behavior
758// :79:27: error: use of undefined value here causes undefined behavior
759// :79:27: error: use of undefined value here causes undefined behavior
760// :79:27: error: use of undefined value here causes undefined behavior
761// :79:27: error: use of undefined value here causes undefined behavior
762// :79:27: error: use of undefined value here causes undefined behavior
763// :79:27: error: use of undefined value here causes undefined behavior
764// :79:27: error: use of undefined value here causes undefined behavior
765// :79:27: error: use of undefined value here causes undefined behavior
766// :79:27: error: use of undefined value here causes undefined behavior
767// :79:27: error: use of undefined value here causes undefined behavior
768// :79:27: error: use of undefined value here causes undefined behavior
769// :79:27: error: use of undefined value here causes undefined behavior
770// :79:27: error: use of undefined value here causes undefined behavior
771// :79:27: error: use of undefined value here causes undefined behavior
772// :79:27: error: use of undefined value here causes undefined behavior
773// :79:27: error: use of undefined value here causes undefined behavior
774// :79:27: error: use of undefined value here causes undefined behavior
775// :79:27: error: use of undefined value here causes undefined behavior
776// :79:27: error: use of undefined value here causes undefined behavior
777// :79:27: error: use of undefined value here causes undefined behavior
778// :79:27: error: use of undefined value here causes undefined behavior
779// :79:27: error: use of undefined value here causes undefined behavior
780// :79:27: error: use of undefined value here causes undefined behavior
781// :79:27: error: use of undefined value here causes undefined behavior
782// :79:27: error: use of undefined value here causes undefined behavior
783// :79:27: error: use of undefined value here causes undefined behavior
784// :79:27: error: use of undefined value here causes undefined behavior
785// :79:27: error: use of undefined value here causes undefined behavior
786// :79:27: error: use of undefined value here causes undefined behavior
787// :79:27: error: use of undefined value here causes undefined behavior
788// :79:27: error: use of undefined value here causes undefined behavior
789// :79:27: error: use of undefined value here causes undefined behavior
790// :79:27: error: use of undefined value here causes undefined behavior
791// :79:27: error: use of undefined value here causes undefined behavior
792// :79:27: error: use of undefined value here causes undefined behavior
793// :79:27: error: use of undefined value here causes undefined behavior
794// :79:27: error: use of undefined value here causes undefined behavior
795// :79:27: error: use of undefined value here causes undefined behavior
796// :79:27: error: use of undefined value here causes undefined behavior
797// :79:27: error: use of undefined value here causes undefined behavior
798// :79:27: error: use of undefined value here causes undefined behavior
799// :79:27: error: use of undefined value here causes undefined behavior
800// :79:27: error: use of undefined value here causes undefined behavior
801// :79:27: error: use of undefined value here causes undefined behavior
802// :79:27: error: use of undefined value here causes undefined behavior
803// :79:27: error: use of undefined value here causes undefined behavior
804// :79:27: error: use of undefined value here causes undefined behavior
805// :79:27: error: use of undefined value here causes undefined behavior
806// :79:27: error: use of undefined value here causes undefined behavior
807// :79:27: error: use of undefined value here causes undefined behavior
808// :79:27: error: use of undefined value here causes undefined behavior
809// :79:27: error: use of undefined value here causes undefined behavior
810// :79:27: error: use of undefined value here causes undefined behavior
811// :79:27: error: use of undefined value here causes undefined behavior
812// :79:27: error: use of undefined value here causes undefined behavior
813// :79:27: error: use of undefined value here causes undefined behavior
814// :79:27: error: use of undefined value here causes undefined behavior
815// :79:27: error: use of undefined value here causes undefined behavior
816// :79:27: error: use of undefined value here causes undefined behavior
817// :79:27: error: use of undefined value here causes undefined behavior
818// :79:27: error: use of undefined value here causes undefined behavior
819// :79:27: error: use of undefined value here causes undefined behavior
820// :79:27: error: use of undefined value here causes undefined behavior
821// :79:27: error: use of undefined value here causes undefined behavior
822// :79:27: error: use of undefined value here causes undefined behavior
823// :79:27: error: use of undefined value here causes undefined behavior
824// :79:27: error: use of undefined value here causes undefined behavior
825// :79:27: error: use of undefined value here causes undefined behavior
826// :79:27: error: use of undefined value here causes undefined behavior
827// :79:27: error: use of undefined value here causes undefined behavior
828// :79:27: error: use of undefined value here causes undefined behavior
829// :79:27: error: use of undefined value here causes undefined behavior
830// :79:27: error: use of undefined value here causes undefined behavior
831// :79:27: error: use of undefined value here causes undefined behavior
832// :79:27: error: use of undefined value here causes undefined behavior
833// :79:27: error: use of undefined value here causes undefined behavior
834// :79:27: error: use of undefined value here causes undefined behavior
835// :79:27: error: use of undefined value here causes undefined behavior
836// :79:27: error: use of undefined value here causes undefined behavior
837// :79:27: error: use of undefined value here causes undefined behavior
838// :79:27: error: use of undefined value here causes undefined behavior
839// :79:27: error: use of undefined value here causes undefined behavior
840// :79:27: error: use of undefined value here causes undefined behavior
841// :79:27: error: use of undefined value here causes undefined behavior
842// :79:27: error: use of undefined value here causes undefined behavior
843// :79:27: error: use of undefined value here causes undefined behavior
844// :79:27: error: use of undefined value here causes undefined behavior
845// :79:27: error: use of undefined value here causes undefined behavior
846// :79:27: error: use of undefined value here causes undefined behavior
847// :79:27: error: use of undefined value here causes undefined behavior
848// :79:27: error: use of undefined value here causes undefined behavior
849// :79:27: error: use of undefined value here causes undefined behavior
850// :79:27: error: use of undefined value here causes undefined behavior
851// :79:27: error: use of undefined value here causes undefined behavior
852// :79:27: error: use of undefined value here causes undefined behavior
853// :79:27: error: use of undefined value here causes undefined behavior
854// :79:27: error: use of undefined value here causes undefined behavior
855// :79:27: error: use of undefined value here causes undefined behavior
856// :79:27: error: use of undefined value here causes undefined behavior
857// :79:27: error: use of undefined value here causes undefined behavior
858// :79:27: error: use of undefined value here causes undefined behavior
859// :79:27: error: use of undefined value here causes undefined behavior
860// :79:27: error: use of undefined value here causes undefined behavior
861// :79:27: error: use of undefined value here causes undefined behavior
862// :79:27: error: use of undefined value here causes undefined behavior
863// :79:27: error: use of undefined value here causes undefined behavior
864// :79:27: error: use of undefined value here causes undefined behavior
865// :79:27: error: use of undefined value here causes undefined behavior
866// :79:27: error: use of undefined value here causes undefined behavior
867// :79:27: error: use of undefined value here causes undefined behavior
868// :79:27: error: use of undefined value here causes undefined behavior
869// :79:27: error: use of undefined value here causes undefined behavior
870// :79:27: error: use of undefined value here causes undefined behavior
871// :79:27: error: use of undefined value here causes undefined behavior
872// :79:27: error: use of undefined value here causes undefined behavior
873// :79:27: error: use of undefined value here causes undefined behavior
874// :79:27: error: use of undefined value here causes undefined behavior
875// :79:27: error: use of undefined value here causes undefined behavior
876// :79:27: error: use of undefined value here causes undefined behavior
877// :79:27: error: use of undefined value here causes undefined behavior
878// :79:27: error: use of undefined value here causes undefined behavior
879// :79:27: error: use of undefined value here causes undefined behavior
880// :79:27: error: use of undefined value here causes undefined behavior
881// :79:27: error: use of undefined value here causes undefined behavior
882// :79:27: error: use of undefined value here causes undefined behavior
883// :79:27: error: use of undefined value here causes undefined behavior
884// :79:27: error: use of undefined value here causes undefined behavior
885// :79:27: error: use of undefined value here causes undefined behavior
886// :79:27: error: use of undefined value here causes undefined behavior
887// :79:27: error: use of undefined value here causes undefined behavior
888// :79:27: error: use of undefined value here causes undefined behavior
889// :79:27: error: use of undefined value here causes undefined behavior
890// :79:27: error: use of undefined value here causes undefined behavior
891// :79:30: error: use of undefined value here causes undefined behavior
892// :79:30: error: use of undefined value here causes undefined behavior
893// :79:30: error: use of undefined value here causes undefined behavior
894// :79:30: error: use of undefined value here causes undefined behavior
895// :79:30: error: use of undefined value here causes undefined behavior
896// :79:30: error: use of undefined value here causes undefined behavior
897// :79:30: error: use of undefined value here causes undefined behavior
898// :79:30: error: use of undefined value here causes undefined behavior
899// :79:30: error: use of undefined value here causes undefined behavior
900// :79:30: error: use of undefined value here causes undefined behavior
901// :79:30: error: use of undefined value here causes undefined behavior
902// :79:30: error: use of undefined value here causes undefined behavior
903// :79:30: error: use of undefined value here causes undefined behavior
904// :79:30: error: use of undefined value here causes undefined behavior
905// :79:30: error: use of undefined value here causes undefined behavior
906// :79:30: error: use of undefined value here causes undefined behavior
907// :79:30: error: use of undefined value here causes undefined behavior
908// :79:30: error: use of undefined value here causes undefined behavior
909// :79:30: error: use of undefined value here causes undefined behavior
910// :79:30: error: use of undefined value here causes undefined behavior
911// :79:30: error: use of undefined value here causes undefined behavior
912// :79:30: error: use of undefined value here causes undefined behavior
913// :79:30: error: use of undefined value here causes undefined behavior
914// :79:30: error: use of undefined value here causes undefined behavior
915// :79:30: error: use of undefined value here causes undefined behavior
916// :79:30: error: use of undefined value here causes undefined behavior
917// :79:30: error: use of undefined value here causes undefined behavior
918// :79:30: error: use of undefined value here causes undefined behavior
919// :79:30: error: use of undefined value here causes undefined behavior
920// :79:30: error: use of undefined value here causes undefined behavior
921// :79:30: error: use of undefined value here causes undefined behavior
922// :79:30: error: use of undefined value here causes undefined behavior
923// :79:30: error: use of undefined value here causes undefined behavior
924// :83:27: error: use of undefined value here causes undefined behavior
925// :83:27: error: use of undefined value here causes undefined behavior
926// :83:27: error: use of undefined value here causes undefined behavior
927// :83:27: error: use of undefined value here causes undefined behavior
928// :83:27: error: use of undefined value here causes undefined behavior
929// :83:27: error: use of undefined value here causes undefined behavior
930// :83:27: error: use of undefined value here causes undefined behavior
931// :83:27: error: use of undefined value here causes undefined behavior
932// :83:27: error: use of undefined value here causes undefined behavior
933// :83:27: error: use of undefined value here causes undefined behavior
934// :83:27: error: use of undefined value here causes undefined behavior
935// :83:27: error: use of undefined value here causes undefined behavior
936// :83:27: error: use of undefined value here causes undefined behavior
937// :83:27: error: use of undefined value here causes undefined behavior
938// :83:27: error: use of undefined value here causes undefined behavior
939// :83:27: error: use of undefined value here causes undefined behavior
940// :83:27: error: use of undefined value here causes undefined behavior
941// :83:27: error: use of undefined value here causes undefined behavior
942// :83:27: error: use of undefined value here causes undefined behavior
943// :83:27: error: use of undefined value here causes undefined behavior
944// :83:27: error: use of undefined value here causes undefined behavior
945// :83:27: error: use of undefined value here causes undefined behavior
946// :83:27: error: use of undefined value here causes undefined behavior
947// :83:27: error: use of undefined value here causes undefined behavior
948// :83:27: error: use of undefined value here causes undefined behavior
949// :83:27: error: use of undefined value here causes undefined behavior
950// :83:27: error: use of undefined value here causes undefined behavior
951// :83:27: error: use of undefined value here causes undefined behavior
952// :83:27: error: use of undefined value here causes undefined behavior
953// :83:27: error: use of undefined value here causes undefined behavior
954// :83:27: error: use of undefined value here causes undefined behavior
955// :83:27: error: use of undefined value here causes undefined behavior
956// :83:27: error: use of undefined value here causes undefined behavior
957// :83:27: error: use of undefined value here causes undefined behavior
958// :83:27: error: use of undefined value here causes undefined behavior
959// :83:27: error: use of undefined value here causes undefined behavior
960// :83:27: error: use of undefined value here causes undefined behavior
961// :83:27: error: use of undefined value here causes undefined behavior
962// :83:27: error: use of undefined value here causes undefined behavior
963// :83:27: error: use of undefined value here causes undefined behavior
964// :83:27: error: use of undefined value here causes undefined behavior
965// :83:27: error: use of undefined value here causes undefined behavior
966// :83:27: error: use of undefined value here causes undefined behavior
967// :83:27: error: use of undefined value here causes undefined behavior
968// :83:27: error: use of undefined value here causes undefined behavior
969// :83:27: error: use of undefined value here causes undefined behavior
970// :83:27: error: use of undefined value here causes undefined behavior
971// :83:27: error: use of undefined value here causes undefined behavior
972// :83:27: error: use of undefined value here causes undefined behavior
973// :83:27: error: use of undefined value here causes undefined behavior
974// :83:27: error: use of undefined value here causes undefined behavior
975// :83:27: error: use of undefined value here causes undefined behavior
976// :83:27: error: use of undefined value here causes undefined behavior
977// :83:27: error: use of undefined value here causes undefined behavior
978// :83:27: error: use of undefined value here causes undefined behavior
979// :83:27: error: use of undefined value here causes undefined behavior
980// :83:27: error: use of undefined value here causes undefined behavior
981// :83:27: error: use of undefined value here causes undefined behavior
982// :83:27: error: use of undefined value here causes undefined behavior
983// :83:27: error: use of undefined value here causes undefined behavior
984// :83:27: error: use of undefined value here causes undefined behavior
985// :83:27: error: use of undefined value here causes undefined behavior
986// :83:27: error: use of undefined value here causes undefined behavior
987// :83:27: error: use of undefined value here causes undefined behavior
988// :83:27: error: use of undefined value here causes undefined behavior
989// :83:27: error: use of undefined value here causes undefined behavior
990// :83:27: error: use of undefined value here causes undefined behavior
991// :83:27: error: use of undefined value here causes undefined behavior
992// :83:27: error: use of undefined value here causes undefined behavior
993// :83:27: error: use of undefined value here causes undefined behavior
994// :83:27: error: use of undefined value here causes undefined behavior
995// :83:27: error: use of undefined value here causes undefined behavior
996// :83:27: error: use of undefined value here causes undefined behavior
997// :83:27: error: use of undefined value here causes undefined behavior
998// :83:27: error: use of undefined value here causes undefined behavior
999// :83:27: error: use of undefined value here causes undefined behavior
1000// :83:27: error: use of undefined value here causes undefined behavior
1001// :83:27: error: use of undefined value here causes undefined behavior
1002// :83:27: error: use of undefined value here causes undefined behavior
1003// :83:27: error: use of undefined value here causes undefined behavior
1004// :83:27: error: use of undefined value here causes undefined behavior
1005// :83:27: error: use of undefined value here causes undefined behavior
1006// :83:27: error: use of undefined value here causes undefined behavior
1007// :83:27: error: use of undefined value here causes undefined behavior
1008// :83:27: error: use of undefined value here causes undefined behavior
1009// :83:27: error: use of undefined value here causes undefined behavior
1010// :83:27: error: use of undefined value here causes undefined behavior
1011// :83:27: error: use of undefined value here causes undefined behavior
1012// :83:27: error: use of undefined value here causes undefined behavior
1013// :83:27: error: use of undefined value here causes undefined behavior
1014// :83:27: error: use of undefined value here causes undefined behavior
1015// :83:27: error: use of undefined value here causes undefined behavior
1016// :83:27: error: use of undefined value here causes undefined behavior
1017// :83:27: error: use of undefined value here causes undefined behavior
1018// :83:27: error: use of undefined value here causes undefined behavior
1019// :83:27: error: use of undefined value here causes undefined behavior
1020// :83:27: error: use of undefined value here causes undefined behavior
1021// :83:27: error: use of undefined value here causes undefined behavior
1022// :83:27: error: use of undefined value here causes undefined behavior
1023// :83:27: error: use of undefined value here causes undefined behavior
1024// :83:27: error: use of undefined value here causes undefined behavior
1025// :83:27: error: use of undefined value here causes undefined behavior
1026// :83:27: error: use of undefined value here causes undefined behavior
1027// :83:27: error: use of undefined value here causes undefined behavior
1028// :83:27: error: use of undefined value here causes undefined behavior
1029// :83:27: error: use of undefined value here causes undefined behavior
1030// :83:27: error: use of undefined value here causes undefined behavior
1031// :83:27: error: use of undefined value here causes undefined behavior
1032// :83:27: error: use of undefined value here causes undefined behavior
1033// :83:27: error: use of undefined value here causes undefined behavior
1034// :83:27: error: use of undefined value here causes undefined behavior
1035// :83:27: error: use of undefined value here causes undefined behavior
1036// :83:27: error: use of undefined value here causes undefined behavior
1037// :83:27: error: use of undefined value here causes undefined behavior
1038// :83:27: error: use of undefined value here causes undefined behavior
1039// :83:27: error: use of undefined value here causes undefined behavior
1040// :83:27: error: use of undefined value here causes undefined behavior
1041// :83:27: error: use of undefined value here causes undefined behavior
1042// :83:27: error: use of undefined value here causes undefined behavior
1043// :83:27: error: use of undefined value here causes undefined behavior
1044// :83:27: error: use of undefined value here causes undefined behavior
1045// :83:27: error: use of undefined value here causes undefined behavior
1046// :83:27: error: use of undefined value here causes undefined behavior
1047// :83:27: error: use of undefined value here causes undefined behavior
1048// :83:27: error: use of undefined value here causes undefined behavior
1049// :83:27: error: use of undefined value here causes undefined behavior
1050// :83:27: error: use of undefined value here causes undefined behavior
1051// :83:27: error: use of undefined value here causes undefined behavior
1052// :83:27: error: use of undefined value here causes undefined behavior
1053// :83:27: error: use of undefined value here causes undefined behavior
1054// :83:27: error: use of undefined value here causes undefined behavior
1055// :83:27: error: use of undefined value here causes undefined behavior
1056// :83:27: error: use of undefined value here causes undefined behavior
1057// :83:27: error: use of undefined value here causes undefined behavior
1058// :83:27: error: use of undefined value here causes undefined behavior
1059// :83:27: error: use of undefined value here causes undefined behavior
1060// :83:27: error: use of undefined value here causes undefined behavior
1061// :83:27: error: use of undefined value here causes undefined behavior
1062// :83:27: error: use of undefined value here causes undefined behavior
1063// :83:27: error: use of undefined value here causes undefined behavior
1064// :83:27: error: use of undefined value here causes undefined behavior
1065// :83:27: error: use of undefined value here causes undefined behavior
1066// :83:27: error: use of undefined value here causes undefined behavior
1067// :83:27: error: use of undefined value here causes undefined behavior
1068// :83:27: error: use of undefined value here causes undefined behavior
1069// :83:27: error: use of undefined value here causes undefined behavior
1070// :83:27: error: use of undefined value here causes undefined behavior
1071// :83:27: error: use of undefined value here causes undefined behavior
1072// :83:27: error: use of undefined value here causes undefined behavior
1073// :83:27: error: use of undefined value here causes undefined behavior
1074// :83:27: error: use of undefined value here causes undefined behavior
1075// :83:27: error: use of undefined value here causes undefined behavior
1076// :83:27: error: use of undefined value here causes undefined behavior
1077// :83:27: error: use of undefined value here causes undefined behavior
1078// :83:27: error: use of undefined value here causes undefined behavior
1079// :83:27: error: use of undefined value here causes undefined behavior
1080// :83:27: error: use of undefined value here causes undefined behavior
1081// :83:27: error: use of undefined value here causes undefined behavior
1082// :83:27: error: use of undefined value here causes undefined behavior
1083// :83:27: error: use of undefined value here causes undefined behavior
1084// :83:27: error: use of undefined value here causes undefined behavior
1085// :83:27: error: use of undefined value here causes undefined behavior
1086// :83:27: error: use of undefined value here causes undefined behavior
1087// :83:27: error: use of undefined value here causes undefined behavior
1088// :83:27: error: use of undefined value here causes undefined behavior
1089// :83:27: error: use of undefined value here causes undefined behavior
1090// :83:27: error: use of undefined value here causes undefined behavior
1091// :83:27: error: use of undefined value here causes undefined behavior
1092// :83:27: error: use of undefined value here causes undefined behavior
1093// :83:27: error: use of undefined value here causes undefined behavior
1094// :83:27: error: use of undefined value here causes undefined behavior
1095// :83:27: error: use of undefined value here causes undefined behavior
1096// :83:27: error: use of undefined value here causes undefined behavior
1097// :83:27: error: use of undefined value here causes undefined behavior
1098// :83:27: error: use of undefined value here causes undefined behavior
1099// :83:27: error: use of undefined value here causes undefined behavior
1100// :83:27: error: use of undefined value here causes undefined behavior
1101// :83:27: error: use of undefined value here causes undefined behavior
1102// :83:27: error: use of undefined value here causes undefined behavior
1103// :83:27: error: use of undefined value here causes undefined behavior
1104// :83:27: error: use of undefined value here causes undefined behavior
1105// :83:27: error: use of undefined value here causes undefined behavior
1106// :83:27: error: use of undefined value here causes undefined behavior
1107// :83:27: error: use of undefined value here causes undefined behavior
1108// :83:27: error: use of undefined value here causes undefined behavior
1109// :83:27: error: use of undefined value here causes undefined behavior
1110// :83:27: error: use of undefined value here causes undefined behavior
1111// :83:27: error: use of undefined value here causes undefined behavior
1112// :83:27: error: use of undefined value here causes undefined behavior
1113// :83:27: error: use of undefined value here causes undefined behavior
1114// :83:27: error: use of undefined value here causes undefined behavior
1115// :83:27: error: use of undefined value here causes undefined behavior
1116// :83:27: error: use of undefined value here causes undefined behavior
1117// :83:27: error: use of undefined value here causes undefined behavior
1118// :83:27: error: use of undefined value here causes undefined behavior
1119// :83:27: error: use of undefined value here causes undefined behavior
1120// :83:27: error: use of undefined value here causes undefined behavior
1121// :83:27: error: use of undefined value here causes undefined behavior
1122// :83:27: error: use of undefined value here causes undefined behavior
1123// :83:27: error: use of undefined value here causes undefined behavior
1124// :83:27: error: use of undefined value here causes undefined behavior
1125// :83:27: error: use of undefined value here causes undefined behavior
1126// :83:27: error: use of undefined value here causes undefined behavior
1127// :83:27: error: use of undefined value here causes undefined behavior
1128// :83:27: error: use of undefined value here causes undefined behavior
1129// :83:27: error: use of undefined value here causes undefined behavior
1130// :83:27: error: use of undefined value here causes undefined behavior
1131// :83:27: error: use of undefined value here causes undefined behavior
1132// :83:27: error: use of undefined value here causes undefined behavior
1133// :83:30: error: use of undefined value here causes undefined behavior
1134// :83:30: error: use of undefined value here causes undefined behavior
1135// :83:30: error: use of undefined value here causes undefined behavior
1136// :83:30: error: use of undefined value here causes undefined behavior
1137// :83:30: error: use of undefined value here causes undefined behavior
1138// :83:30: error: use of undefined value here causes undefined behavior
1139// :83:30: error: use of undefined value here causes undefined behavior
1140// :83:30: error: use of undefined value here causes undefined behavior
1141// :83:30: error: use of undefined value here causes undefined behavior
1142// :83:30: error: use of undefined value here causes undefined behavior
1143// :83:30: error: use of undefined value here causes undefined behavior
1144// :83:30: error: use of undefined value here causes undefined behavior
1145// :83:30: error: use of undefined value here causes undefined behavior
1146// :83:30: error: use of undefined value here causes undefined behavior
1147// :83:30: error: use of undefined value here causes undefined behavior
1148// :83:30: error: use of undefined value here causes undefined behavior
1149// :83:30: error: use of undefined value here causes undefined behavior
1150// :83:30: error: use of undefined value here causes undefined behavior
1151// :83:30: error: use of undefined value here causes undefined behavior
1152// :83:30: error: use of undefined value here causes undefined behavior
1153// :83:30: error: use of undefined value here causes undefined behavior
1154// :83:30: error: use of undefined value here causes undefined behavior
1155// :83:30: error: use of undefined value here causes undefined behavior
1156// :83:30: error: use of undefined value here causes undefined behavior
1157// :83:30: error: use of undefined value here causes undefined behavior
1158// :83:30: error: use of undefined value here causes undefined behavior
1159// :83:30: error: use of undefined value here causes undefined behavior
1160// :83:30: error: use of undefined value here causes undefined behavior
1161// :83:30: error: use of undefined value here causes undefined behavior
1162// :83:30: error: use of undefined value here causes undefined behavior
1163// :83:30: error: use of undefined value here causes undefined behavior
1164// :83:30: error: use of undefined value here causes undefined behavior
1165// :83:30: error: use of undefined value here causes undefined behavior
1166// :87:17: error: use of undefined value here causes undefined behavior
1167// :87:17: error: use of undefined value here causes undefined behavior
1168// :87:17: error: use of undefined value here causes undefined behavior
1169// :87:17: error: use of undefined value here causes undefined behavior
1170// :87:17: error: use of undefined value here causes undefined behavior
1171// :87:17: error: use of undefined value here causes undefined behavior
1172// :87:17: error: use of undefined value here causes undefined behavior
1173// :87:17: error: use of undefined value here causes undefined behavior
1174// :87:17: error: use of undefined value here causes undefined behavior
1175// :87:17: error: use of undefined value here causes undefined behavior
1176// :87:17: error: use of undefined value here causes undefined behavior
1177// :87:17: error: use of undefined value here causes undefined behavior
1178// :87:17: error: use of undefined value here causes undefined behavior
1179// :87:17: error: use of undefined value here causes undefined behavior
1180// :87:17: error: use of undefined value here causes undefined behavior
1181// :87:17: error: use of undefined value here causes undefined behavior
1182// :87:17: error: use of undefined value here causes undefined behavior
1183// :87:17: error: use of undefined value here causes undefined behavior
1184// :87:17: error: use of undefined value here causes undefined behavior
1185// :87:17: error: use of undefined value here causes undefined behavior
1186// :87:17: error: use of undefined value here causes undefined behavior
1187// :87:17: error: use of undefined value here causes undefined behavior
1188// :87:17: error: use of undefined value here causes undefined behavior
1189// :87:17: error: use of undefined value here causes undefined behavior
1190// :87:17: error: use of undefined value here causes undefined behavior
1191// :87:17: error: use of undefined value here causes undefined behavior
1192// :87:17: error: use of undefined value here causes undefined behavior
1193// :87:17: error: use of undefined value here causes undefined behavior
1194// :87:17: error: use of undefined value here causes undefined behavior
1195// :87:17: error: use of undefined value here causes undefined behavior
1196// :87:17: error: use of undefined value here causes undefined behavior
1197// :87:17: error: use of undefined value here causes undefined behavior
1198// :87:17: error: use of undefined value here causes undefined behavior
1199// :87:17: error: use of undefined value here causes undefined behavior
1200// :87:17: error: use of undefined value here causes undefined behavior
1201// :87:17: error: use of undefined value here causes undefined behavior
1202// :87:17: error: use of undefined value here causes undefined behavior
1203// :87:17: error: use of undefined value here causes undefined behavior
1204// :87:17: error: use of undefined value here causes undefined behavior
1205// :87:17: error: use of undefined value here causes undefined behavior
1206// :87:17: error: use of undefined value here causes undefined behavior
1207// :87:17: error: use of undefined value here causes undefined behavior
1208// :87:17: error: use of undefined value here causes undefined behavior
1209// :87:17: error: use of undefined value here causes undefined behavior
1210// :87:17: error: use of undefined value here causes undefined behavior
1211// :87:17: error: use of undefined value here causes undefined behavior
1212// :87:17: error: use of undefined value here causes undefined behavior
1213// :87:17: error: use of undefined value here causes undefined behavior
1214// :87:17: error: use of undefined value here causes undefined behavior
1215// :87:17: error: use of undefined value here causes undefined behavior
1216// :87:17: error: use of undefined value here causes undefined behavior
1217// :87:17: error: use of undefined value here causes undefined behavior
1218// :87:17: error: use of undefined value here causes undefined behavior
1219// :87:17: error: use of undefined value here causes undefined behavior
1220// :87:17: error: use of undefined value here causes undefined behavior
1221// :87:17: error: use of undefined value here causes undefined behavior
1222// :87:17: error: use of undefined value here causes undefined behavior
1223// :87:17: error: use of undefined value here causes undefined behavior
1224// :87:17: error: use of undefined value here causes undefined behavior
1225// :87:17: error: use of undefined value here causes undefined behavior
1226// :87:17: error: use of undefined value here causes undefined behavior
1227// :87:17: error: use of undefined value here causes undefined behavior
1228// :87:17: error: use of undefined value here causes undefined behavior
1229// :87:17: error: use of undefined value here causes undefined behavior
1230// :87:17: error: use of undefined value here causes undefined behavior
1231// :87:17: error: use of undefined value here causes undefined behavior
1232// :87:17: error: use of undefined value here causes undefined behavior
1233// :87:17: error: use of undefined value here causes undefined behavior
1234// :87:17: error: use of undefined value here causes undefined behavior
1235// :87:17: error: use of undefined value here causes undefined behavior
1236// :87:17: error: use of undefined value here causes undefined behavior
1237// :87:17: error: use of undefined value here causes undefined behavior
1238// :87:17: error: use of undefined value here causes undefined behavior
1239// :87:17: error: use of undefined value here causes undefined behavior
1240// :87:17: error: use of undefined value here causes undefined behavior
1241// :87:17: error: use of undefined value here causes undefined behavior
1242// :87:17: error: use of undefined value here causes undefined behavior
1243// :87:17: error: use of undefined value here causes undefined behavior
1244// :87:17: error: use of undefined value here causes undefined behavior
1245// :87:17: error: use of undefined value here causes undefined behavior
1246// :87:17: error: use of undefined value here causes undefined behavior
1247// :87:17: error: use of undefined value here causes undefined behavior
1248// :87:17: error: use of undefined value here causes undefined behavior
1249// :87:17: error: use of undefined value here causes undefined behavior
1250// :87:17: error: use of undefined value here causes undefined behavior
1251// :87:17: error: use of undefined value here causes undefined behavior
1252// :87:17: error: use of undefined value here causes undefined behavior
1253// :87:17: error: use of undefined value here causes undefined behavior
1254// :87:17: error: use of undefined value here causes undefined behavior
1255// :87:17: error: use of undefined value here causes undefined behavior
1256// :87:17: error: use of undefined value here causes undefined behavior
1257// :87:17: error: use of undefined value here causes undefined behavior
1258// :87:17: error: use of undefined value here causes undefined behavior
1259// :87:17: error: use of undefined value here causes undefined behavior
1260// :87:17: error: use of undefined value here causes undefined behavior
1261// :87:17: error: use of undefined value here causes undefined behavior
1262// :87:17: error: use of undefined value here causes undefined behavior
1263// :87:17: error: use of undefined value here causes undefined behavior
1264// :87:17: error: use of undefined value here causes undefined behavior
1265// :87:17: error: use of undefined value here causes undefined behavior
1266// :87:17: error: use of undefined value here causes undefined behavior
1267// :87:17: error: use of undefined value here causes undefined behavior
1268// :87:17: error: use of undefined value here causes undefined behavior
1269// :87:17: error: use of undefined value here causes undefined behavior
1270// :87:17: error: use of undefined value here causes undefined behavior
1271// :87:17: error: use of undefined value here causes undefined behavior
1272// :87:17: error: use of undefined value here causes undefined behavior
1273// :87:17: error: use of undefined value here causes undefined behavior
1274// :87:17: error: use of undefined value here causes undefined behavior
1275// :87:17: error: use of undefined value here causes undefined behavior
1276// :87:17: error: use of undefined value here causes undefined behavior
1277// :87:17: error: use of undefined value here causes undefined behavior
1278// :87:17: error: use of undefined value here causes undefined behavior
1279// :87:17: error: use of undefined value here causes undefined behavior
1280// :87:17: error: use of undefined value here causes undefined behavior
1281// :87:17: error: use of undefined value here causes undefined behavior
1282// :87:17: error: use of undefined value here causes undefined behavior
1283// :87:17: error: use of undefined value here causes undefined behavior
1284// :87:17: error: use of undefined value here causes undefined behavior
1285// :87:17: error: use of undefined value here causes undefined behavior
1286// :87:17: error: use of undefined value here causes undefined behavior
1287// :87:17: error: use of undefined value here causes undefined behavior
1288// :87:17: error: use of undefined value here causes undefined behavior
1289// :87:17: error: use of undefined value here causes undefined behavior
1290// :87:17: error: use of undefined value here causes undefined behavior
1291// :87:17: error: use of undefined value here causes undefined behavior
1292// :87:17: error: use of undefined value here causes undefined behavior
1293// :87:17: error: use of undefined value here causes undefined behavior
1294// :87:17: error: use of undefined value here causes undefined behavior
1295// :87:17: error: use of undefined value here causes undefined behavior
1296// :87:17: error: use of undefined value here causes undefined behavior
1297// :87:17: error: use of undefined value here causes undefined behavior
1298// :87:17: error: use of undefined value here causes undefined behavior
1299// :87:17: error: use of undefined value here causes undefined behavior
1300// :87:17: error: use of undefined value here causes undefined behavior
1301// :87:17: error: use of undefined value here causes undefined behavior
1302// :87:17: error: use of undefined value here causes undefined behavior
1303// :87:17: error: use of undefined value here causes undefined behavior
1304// :87:17: error: use of undefined value here causes undefined behavior
1305// :87:17: error: use of undefined value here causes undefined behavior
1306// :87:17: error: use of undefined value here causes undefined behavior
1307// :87:17: error: use of undefined value here causes undefined behavior
1308// :87:17: error: use of undefined value here causes undefined behavior
1309// :87:17: error: use of undefined value here causes undefined behavior
1310// :87:17: error: use of undefined value here causes undefined behavior
1311// :87:17: error: use of undefined value here causes undefined behavior
1312// :87:17: error: use of undefined value here causes undefined behavior
1313// :87:17: error: use of undefined value here causes undefined behavior
1314// :87:17: error: use of undefined value here causes undefined behavior
1315// :87:17: error: use of undefined value here causes undefined behavior
1316// :87:17: error: use of undefined value here causes undefined behavior
1317// :87:17: error: use of undefined value here causes undefined behavior
1318// :87:17: error: use of undefined value here causes undefined behavior
1319// :87:17: error: use of undefined value here causes undefined behavior
1320// :87:17: error: use of undefined value here causes undefined behavior
1321// :87:17: error: use of undefined value here causes undefined behavior
1322// :87:17: error: use of undefined value here causes undefined behavior
1323// :87:17: error: use of undefined value here causes undefined behavior
1324// :87:17: error: use of undefined value here causes undefined behavior
1325// :87:17: error: use of undefined value here causes undefined behavior
1326// :87:17: error: use of undefined value here causes undefined behavior
1327// :87:17: error: use of undefined value here causes undefined behavior
1328// :87:17: error: use of undefined value here causes undefined behavior
1329// :87:17: error: use of undefined value here causes undefined behavior
1330// :87:17: error: use of undefined value here causes undefined behavior
1331// :87:17: error: use of undefined value here causes undefined behavior
1332// :87:17: error: use of undefined value here causes undefined behavior
1333// :87:17: error: use of undefined value here causes undefined behavior
1334// :87:17: error: use of undefined value here causes undefined behavior
1335// :87:17: error: use of undefined value here causes undefined behavior
1336// :87:17: error: use of undefined value here causes undefined behavior
1337// :87:17: error: use of undefined value here causes undefined behavior
1338// :87:17: error: use of undefined value here causes undefined behavior
1339// :87:17: error: use of undefined value here causes undefined behavior
1340// :87:17: error: use of undefined value here causes undefined behavior
1341// :87:17: error: use of undefined value here causes undefined behavior
1342// :87:17: error: use of undefined value here causes undefined behavior
1343// :87:17: error: use of undefined value here causes undefined behavior
1344// :87:17: error: use of undefined value here causes undefined behavior
1345// :87:17: error: use of undefined value here causes undefined behavior
1346// :87:17: error: use of undefined value here causes undefined behavior
1347// :87:17: error: use of undefined value here causes undefined behavior
1348// :87:17: error: use of undefined value here causes undefined behavior
1349// :87:17: error: use of undefined value here causes undefined behavior
1350// :87:17: error: use of undefined value here causes undefined behavior
1351// :87:17: error: use of undefined value here causes undefined behavior
1352// :87:17: error: use of undefined value here causes undefined behavior
1353// :87:17: error: use of undefined value here causes undefined behavior
1354// :87:17: error: use of undefined value here causes undefined behavior
1355// :87:17: error: use of undefined value here causes undefined behavior
1356// :87:17: error: use of undefined value here causes undefined behavior
1357// :87:17: error: use of undefined value here causes undefined behavior
1358// :87:17: error: use of undefined value here causes undefined behavior
1359// :87:17: error: use of undefined value here causes undefined behavior
1360// :87:17: error: use of undefined value here causes undefined behavior
1361// :87:17: error: use of undefined value here causes undefined behavior
1362// :87:17: error: use of undefined value here causes undefined behavior
1363// :87:17: error: use of undefined value here causes undefined behavior
1364// :87:17: error: use of undefined value here causes undefined behavior
1365// :87:17: error: use of undefined value here causes undefined behavior
1366// :87:17: error: use of undefined value here causes undefined behavior
1367// :87:17: error: use of undefined value here causes undefined behavior
1368// :87:17: error: use of undefined value here causes undefined behavior
1369// :87:17: error: use of undefined value here causes undefined behavior
1370// :87:17: error: use of undefined value here causes undefined behavior
1371// :87:17: error: use of undefined value here causes undefined behavior
1372// :87:17: error: use of undefined value here causes undefined behavior
1373// :87:17: error: use of undefined value here causes undefined behavior
1374// :87:17: error: use of undefined value here causes undefined behavior
1375// :87:21: error: use of undefined value here causes undefined behavior
1376// :87:21: error: use of undefined value here causes undefined behavior
1377// :87:21: error: use of undefined value here causes undefined behavior
1378// :87:21: error: use of undefined value here causes undefined behavior
1379// :87:21: error: use of undefined value here causes undefined behavior
1380// :87:21: error: use of undefined value here causes undefined behavior
1381// :87:21: error: use of undefined value here causes undefined behavior
1382// :87:21: error: use of undefined value here causes undefined behavior
1383// :87:21: error: use of undefined value here causes undefined behavior
1384// :87:21: error: use of undefined value here causes undefined behavior
1385// :87:21: error: use of undefined value here causes undefined behavior
1386// :87:21: error: use of undefined value here causes undefined behavior
1387// :87:21: error: use of undefined value here causes undefined behavior
1388// :87:21: error: use of undefined value here causes undefined behavior
1389// :87:21: error: use of undefined value here causes undefined behavior
1390// :87:21: error: use of undefined value here causes undefined behavior
1391// :87:21: error: use of undefined value here causes undefined behavior
1392// :87:21: error: use of undefined value here causes undefined behavior
1393// :87:21: error: use of undefined value here causes undefined behavior
1394// :87:21: error: use of undefined value here causes undefined behavior
1395// :87:21: error: use of undefined value here causes undefined behavior
1396// :87:21: error: use of undefined value here causes undefined behavior
1397// :87:21: error: use of undefined value here causes undefined behavior
1398// :87:21: error: use of undefined value here causes undefined behavior
1399// :87:21: error: use of undefined value here causes undefined behavior
1400// :87:21: error: use of undefined value here causes undefined behavior
1401// :87:21: error: use of undefined value here causes undefined behavior
1402// :87:21: error: use of undefined value here causes undefined behavior
1403// :87:21: error: use of undefined value here causes undefined behavior
1404// :87:21: error: use of undefined value here causes undefined behavior
1405// :87:21: error: use of undefined value here causes undefined behavior
1406// :87:21: error: use of undefined value here causes undefined behavior
1407// :87:21: error: use of undefined value here causes undefined behavior
1408// :91:22: error: use of undefined value here causes undefined behavior
1409// :91:22: error: use of undefined value here causes undefined behavior
1410// :91:22: error: use of undefined value here causes undefined behavior
1411// :91:22: error: use of undefined value here causes undefined behavior
1412// :91:22: error: use of undefined value here causes undefined behavior
1413// :91:22: error: use of undefined value here causes undefined behavior
1414// :91:22: error: use of undefined value here causes undefined behavior
1415// :91:22: error: use of undefined value here causes undefined behavior
1416// :91:22: error: use of undefined value here causes undefined behavior
1417// :91:22: error: use of undefined value here causes undefined behavior
1418// :91:22: error: use of undefined value here causes undefined behavior
1419// :91:22: error: use of undefined value here causes undefined behavior
1420// :91:22: error: use of undefined value here causes undefined behavior
1421// :91:22: error: use of undefined value here causes undefined behavior
1422// :91:22: error: use of undefined value here causes undefined behavior
1423// :91:22: error: use of undefined value here causes undefined behavior
1424// :91:22: error: use of undefined value here causes undefined behavior
1425// :91:22: error: use of undefined value here causes undefined behavior
1426// :91:22: error: use of undefined value here causes undefined behavior
1427// :91:22: error: use of undefined value here causes undefined behavior
1428// :91:22: error: use of undefined value here causes undefined behavior
1429// :91:22: error: use of undefined value here causes undefined behavior
1430// :91:22: error: use of undefined value here causes undefined behavior
1431// :91:22: error: use of undefined value here causes undefined behavior
1432// :91:22: error: use of undefined value here causes undefined behavior
1433// :91:22: error: use of undefined value here causes undefined behavior
1434// :91:22: error: use of undefined value here causes undefined behavior
1435// :91:22: error: use of undefined value here causes undefined behavior
1436// :91:22: error: use of undefined value here causes undefined behavior
1437// :91:22: error: use of undefined value here causes undefined behavior
1438// :91:22: error: use of undefined value here causes undefined behavior
1439// :91:22: error: use of undefined value here causes undefined behavior
1440// :91:22: error: use of undefined value here causes undefined behavior
1441// :91:22: error: use of undefined value here causes undefined behavior
1442// :91:22: error: use of undefined value here causes undefined behavior
1443// :91:22: error: use of undefined value here causes undefined behavior
1444// :91:22: error: use of undefined value here causes undefined behavior
1445// :91:22: error: use of undefined value here causes undefined behavior
1446// :91:22: error: use of undefined value here causes undefined behavior
1447// :91:22: error: use of undefined value here causes undefined behavior
1448// :91:22: error: use of undefined value here causes undefined behavior
1449// :91:22: error: use of undefined value here causes undefined behavior
1450// :91:22: error: use of undefined value here causes undefined behavior
1451// :91:22: error: use of undefined value here causes undefined behavior
1452// :91:22: error: use of undefined value here causes undefined behavior
1453// :91:22: error: use of undefined value here causes undefined behavior
1454// :91:22: error: use of undefined value here causes undefined behavior
1455// :91:22: error: use of undefined value here causes undefined behavior
1456// :91:22: error: use of undefined value here causes undefined behavior
1457// :91:22: error: use of undefined value here causes undefined behavior
1458// :91:22: error: use of undefined value here causes undefined behavior
1459// :91:22: error: use of undefined value here causes undefined behavior
1460// :91:22: error: use of undefined value here causes undefined behavior
1461// :91:22: error: use of undefined value here causes undefined behavior
1462// :91:22: error: use of undefined value here causes undefined behavior
1463// :91:22: error: use of undefined value here causes undefined behavior
1464// :91:22: error: use of undefined value here causes undefined behavior
1465// :91:22: error: use of undefined value here causes undefined behavior
1466// :91:22: error: use of undefined value here causes undefined behavior
1467// :91:22: error: use of undefined value here causes undefined behavior
1468// :91:22: error: use of undefined value here causes undefined behavior
1469// :91:22: error: use of undefined value here causes undefined behavior
1470// :91:22: error: use of undefined value here causes undefined behavior
1471// :91:22: error: use of undefined value here causes undefined behavior
1472// :91:22: error: use of undefined value here causes undefined behavior
1473// :91:22: error: use of undefined value here causes undefined behavior
1474// :91:22: error: use of undefined value here causes undefined behavior
1475// :91:22: error: use of undefined value here causes undefined behavior
1476// :91:22: error: use of undefined value here causes undefined behavior
1477// :91:22: error: use of undefined value here causes undefined behavior
1478// :91:22: error: use of undefined value here causes undefined behavior
1479// :91:22: error: use of undefined value here causes undefined behavior
1480// :91:22: error: use of undefined value here causes undefined behavior
1481// :91:22: error: use of undefined value here causes undefined behavior
1482// :91:22: error: use of undefined value here causes undefined behavior
1483// :91:22: error: use of undefined value here causes undefined behavior
1484// :91:22: error: use of undefined value here causes undefined behavior
1485// :91:22: error: use of undefined value here causes undefined behavior
1486// :91:22: error: use of undefined value here causes undefined behavior
1487// :91:22: error: use of undefined value here causes undefined behavior
1488// :91:22: error: use of undefined value here causes undefined behavior
1489// :91:22: error: use of undefined value here causes undefined behavior
1490// :91:22: error: use of undefined value here causes undefined behavior
1491// :91:22: error: use of undefined value here causes undefined behavior
1492// :91:22: error: use of undefined value here causes undefined behavior
1493// :91:22: error: use of undefined value here causes undefined behavior
1494// :91:22: error: use of undefined value here causes undefined behavior
1495// :91:22: error: use of undefined value here causes undefined behavior
1496// :91:22: error: use of undefined value here causes undefined behavior
1497// :91:22: error: use of undefined value here causes undefined behavior
1498// :91:22: error: use of undefined value here causes undefined behavior
1499// :91:22: error: use of undefined value here causes undefined behavior
1500// :91:22: error: use of undefined value here causes undefined behavior
1501// :91:22: error: use of undefined value here causes undefined behavior
1502// :91:22: error: use of undefined value here causes undefined behavior
1503// :91:22: error: use of undefined value here causes undefined behavior
1504// :91:22: error: use of undefined value here causes undefined behavior
1505// :91:22: error: use of undefined value here causes undefined behavior
1506// :91:22: error: use of undefined value here causes undefined behavior
1507// :91:22: error: use of undefined value here causes undefined behavior
1508// :91:22: error: use of undefined value here causes undefined behavior
1509// :91:22: error: use of undefined value here causes undefined behavior
1510// :91:22: error: use of undefined value here causes undefined behavior
1511// :91:22: error: use of undefined value here causes undefined behavior
1512// :91:22: error: use of undefined value here causes undefined behavior
1513// :91:22: error: use of undefined value here causes undefined behavior
1514// :91:22: error: use of undefined value here causes undefined behavior
1515// :91:22: error: use of undefined value here causes undefined behavior
1516// :91:22: error: use of undefined value here causes undefined behavior
1517// :91:22: error: use of undefined value here causes undefined behavior
1518// :91:22: error: use of undefined value here causes undefined behavior
1519// :91:22: error: use of undefined value here causes undefined behavior
1520// :91:22: error: use of undefined value here causes undefined behavior
1521// :91:22: error: use of undefined value here causes undefined behavior
1522// :91:22: error: use of undefined value here causes undefined behavior
1523// :91:22: error: use of undefined value here causes undefined behavior
1524// :91:22: error: use of undefined value here causes undefined behavior
1525// :91:22: error: use of undefined value here causes undefined behavior
1526// :91:22: error: use of undefined value here causes undefined behavior
1527// :91:22: error: use of undefined value here causes undefined behavior
1528// :91:22: error: use of undefined value here causes undefined behavior
1529// :91:22: error: use of undefined value here causes undefined behavior
1530// :91:22: error: use of undefined value here causes undefined behavior
1531// :91:22: error: use of undefined value here causes undefined behavior
1532// :91:22: error: use of undefined value here causes undefined behavior
1533// :91:22: error: use of undefined value here causes undefined behavior
1534// :91:22: error: use of undefined value here causes undefined behavior
1535// :91:22: error: use of undefined value here causes undefined behavior
1536// :91:22: error: use of undefined value here causes undefined behavior
1537// :91:22: error: use of undefined value here causes undefined behavior
1538// :91:22: error: use of undefined value here causes undefined behavior
1539// :91:22: error: use of undefined value here causes undefined behavior
1540// :91:22: error: use of undefined value here causes undefined behavior
1541// :91:22: error: use of undefined value here causes undefined behavior
1542// :91:22: error: use of undefined value here causes undefined behavior
1543// :91:22: error: use of undefined value here causes undefined behavior
1544// :91:22: error: use of undefined value here causes undefined behavior
1545// :91:22: error: use of undefined value here causes undefined behavior
1546// :91:22: error: use of undefined value here causes undefined behavior
1547// :91:22: error: use of undefined value here causes undefined behavior
1548// :91:22: error: use of undefined value here causes undefined behavior
1549// :91:22: error: use of undefined value here causes undefined behavior
1550// :91:22: error: use of undefined value here causes undefined behavior
1551// :91:22: error: use of undefined value here causes undefined behavior
1552// :91:22: error: use of undefined value here causes undefined behavior
1553// :91:22: error: use of undefined value here causes undefined behavior
1554// :91:22: error: use of undefined value here causes undefined behavior
1555// :91:22: error: use of undefined value here causes undefined behavior
1556// :91:22: error: use of undefined value here causes undefined behavior
1557// :91:22: error: use of undefined value here causes undefined behavior
1558// :91:22: error: use of undefined value here causes undefined behavior
1559// :91:22: error: use of undefined value here causes undefined behavior
1560// :91:22: error: use of undefined value here causes undefined behavior
1561// :91:22: error: use of undefined value here causes undefined behavior
1562// :91:22: error: use of undefined value here causes undefined behavior
1563// :91:22: error: use of undefined value here causes undefined behavior
1564// :91:22: error: use of undefined value here causes undefined behavior
1565// :91:22: error: use of undefined value here causes undefined behavior
1566// :91:22: error: use of undefined value here causes undefined behavior
1567// :91:22: error: use of undefined value here causes undefined behavior
1568// :91:22: error: use of undefined value here causes undefined behavior
1569// :91:22: error: use of undefined value here causes undefined behavior
1570// :91:22: error: use of undefined value here causes undefined behavior
1571// :91:22: error: use of undefined value here causes undefined behavior
1572// :91:22: error: use of undefined value here causes undefined behavior
1573// :91:22: error: use of undefined value here causes undefined behavior
1574// :91:22: error: use of undefined value here causes undefined behavior
1575// :91:22: error: use of undefined value here causes undefined behavior
1576// :91:22: error: use of undefined value here causes undefined behavior
1577// :91:22: error: use of undefined value here causes undefined behavior
1578// :91:22: error: use of undefined value here causes undefined behavior
1579// :91:22: error: use of undefined value here causes undefined behavior
1580// :91:22: error: use of undefined value here causes undefined behavior
1581// :91:22: error: use of undefined value here causes undefined behavior
1582// :91:22: error: use of undefined value here causes undefined behavior
1583// :91:22: error: use of undefined value here causes undefined behavior
1584// :91:22: error: use of undefined value here causes undefined behavior
1585// :91:22: error: use of undefined value here causes undefined behavior
1586// :91:22: error: use of undefined value here causes undefined behavior
1587// :91:22: error: use of undefined value here causes undefined behavior
1588// :91:22: error: use of undefined value here causes undefined behavior
1589// :91:22: error: use of undefined value here causes undefined behavior
1590// :91:22: error: use of undefined value here causes undefined behavior
1591// :91:22: error: use of undefined value here causes undefined behavior
1592// :91:22: error: use of undefined value here causes undefined behavior
1593// :91:22: error: use of undefined value here causes undefined behavior
1594// :91:22: error: use of undefined value here causes undefined behavior
1595// :91:22: error: use of undefined value here causes undefined behavior
1596// :91:22: error: use of undefined value here causes undefined behavior
1597// :91:22: error: use of undefined value here causes undefined behavior
1598// :91:22: error: use of undefined value here causes undefined behavior
1599// :91:22: error: use of undefined value here causes undefined behavior
1600// :91:22: error: use of undefined value here causes undefined behavior
1601// :91:22: error: use of undefined value here causes undefined behavior
1602// :91:22: error: use of undefined value here causes undefined behavior
1603// :91:22: error: use of undefined value here causes undefined behavior
1604// :91:22: error: use of undefined value here causes undefined behavior
1605// :91:22: error: use of undefined value here causes undefined behavior
1606// :91:22: error: use of undefined value here causes undefined behavior
1607// :91:22: error: use of undefined value here causes undefined behavior
1608// :91:22: error: use of undefined value here causes undefined behavior
1609// :91:22: error: use of undefined value here causes undefined behavior
1610// :91:22: error: use of undefined value here causes undefined behavior
1611// :91:22: error: use of undefined value here causes undefined behavior
1612// :91:22: error: use of undefined value here causes undefined behavior
1613// :91:22: error: use of undefined value here causes undefined behavior
1614// :91:22: error: use of undefined value here causes undefined behavior
1615// :91:22: error: use of undefined value here causes undefined behavior
1616// :91:22: error: use of undefined value here causes undefined behavior
1617// :91:25: error: use of undefined value here causes undefined behavior
1618// :91:25: error: use of undefined value here causes undefined behavior
1619// :91:25: error: use of undefined value here causes undefined behavior
1620// :91:25: error: use of undefined value here causes undefined behavior
1621// :91:25: error: use of undefined value here causes undefined behavior
1622// :91:25: error: use of undefined value here causes undefined behavior
1623// :91:25: error: use of undefined value here causes undefined behavior
1624// :91:25: error: use of undefined value here causes undefined behavior
1625// :91:25: error: use of undefined value here causes undefined behavior
1626// :91:25: error: use of undefined value here causes undefined behavior
1627// :91:25: error: use of undefined value here causes undefined behavior
1628// :91:25: error: use of undefined value here causes undefined behavior
1629// :91:25: error: use of undefined value here causes undefined behavior
1630// :91:25: error: use of undefined value here causes undefined behavior
1631// :91:25: error: use of undefined value here causes undefined behavior
1632// :91:25: error: use of undefined value here causes undefined behavior
1633// :91:25: error: use of undefined value here causes undefined behavior
1634// :91:25: error: use of undefined value here causes undefined behavior
1635// :91:25: error: use of undefined value here causes undefined behavior
1636// :91:25: error: use of undefined value here causes undefined behavior
1637// :91:25: error: use of undefined value here causes undefined behavior
1638// :91:25: error: use of undefined value here causes undefined behavior
1639// :91:25: error: use of undefined value here causes undefined behavior
1640// :91:25: error: use of undefined value here causes undefined behavior
1641// :91:25: error: use of undefined value here causes undefined behavior
1642// :91:25: error: use of undefined value here causes undefined behavior
1643// :91:25: error: use of undefined value here causes undefined behavior
1644// :91:25: error: use of undefined value here causes undefined behavior
1645// :91:25: error: use of undefined value here causes undefined behavior
1646// :91:25: error: use of undefined value here causes undefined behavior
1647// :91:25: error: use of undefined value here causes undefined behavior
1648// :91:25: error: use of undefined value here causes undefined behavior
1649// :91:25: error: use of undefined value here causes undefined behavior
1650// :95:22: error: use of undefined value here causes undefined behavior
1651// :95:22: error: use of undefined value here causes undefined behavior
1652// :95:22: error: use of undefined value here causes undefined behavior
1653// :95:22: error: use of undefined value here causes undefined behavior
1654// :95:22: error: use of undefined value here causes undefined behavior
1655// :95:22: error: use of undefined value here causes undefined behavior
1656// :95:22: error: use of undefined value here causes undefined behavior
1657// :95:22: error: use of undefined value here causes undefined behavior
1658// :95:22: error: use of undefined value here causes undefined behavior
1659// :95:22: error: use of undefined value here causes undefined behavior
1660// :95:22: error: use of undefined value here causes undefined behavior
1661// :95:22: error: use of undefined value here causes undefined behavior
1662// :95:22: error: use of undefined value here causes undefined behavior
1663// :95:22: error: use of undefined value here causes undefined behavior
1664// :95:22: error: use of undefined value here causes undefined behavior
1665// :95:22: error: use of undefined value here causes undefined behavior
1666// :95:22: error: use of undefined value here causes undefined behavior
1667// :95:22: error: use of undefined value here causes undefined behavior
1668// :95:22: error: use of undefined value here causes undefined behavior
1669// :95:22: error: use of undefined value here causes undefined behavior
1670// :95:22: error: use of undefined value here causes undefined behavior
1671// :95:22: error: use of undefined value here causes undefined behavior
1672// :95:22: error: use of undefined value here causes undefined behavior
1673// :95:22: error: use of undefined value here causes undefined behavior
1674// :95:22: error: use of undefined value here causes undefined behavior
1675// :95:22: error: use of undefined value here causes undefined behavior
1676// :95:22: error: use of undefined value here causes undefined behavior
1677// :95:22: error: use of undefined value here causes undefined behavior
1678// :95:22: error: use of undefined value here causes undefined behavior
1679// :95:22: error: use of undefined value here causes undefined behavior
1680// :95:22: error: use of undefined value here causes undefined behavior
1681// :95:22: error: use of undefined value here causes undefined behavior
1682// :95:22: error: use of undefined value here causes undefined behavior
1683// :95:22: error: use of undefined value here causes undefined behavior
1684// :95:22: error: use of undefined value here causes undefined behavior
1685// :95:22: error: use of undefined value here causes undefined behavior
1686// :95:22: error: use of undefined value here causes undefined behavior
1687// :95:22: error: use of undefined value here causes undefined behavior
1688// :95:22: error: use of undefined value here causes undefined behavior
1689// :95:22: error: use of undefined value here causes undefined behavior
1690// :95:22: error: use of undefined value here causes undefined behavior
1691// :95:22: error: use of undefined value here causes undefined behavior
1692// :95:22: error: use of undefined value here causes undefined behavior
1693// :95:22: error: use of undefined value here causes undefined behavior
1694// :95:22: error: use of undefined value here causes undefined behavior
1695// :95:22: error: use of undefined value here causes undefined behavior
1696// :95:22: error: use of undefined value here causes undefined behavior
1697// :95:22: error: use of undefined value here causes undefined behavior
1698// :95:22: error: use of undefined value here causes undefined behavior
1699// :95:22: error: use of undefined value here causes undefined behavior
1700// :95:22: error: use of undefined value here causes undefined behavior
1701// :95:22: error: use of undefined value here causes undefined behavior
1702// :95:22: error: use of undefined value here causes undefined behavior
1703// :95:22: error: use of undefined value here causes undefined behavior
1704// :95:22: error: use of undefined value here causes undefined behavior
1705// :95:22: error: use of undefined value here causes undefined behavior
1706// :95:22: error: use of undefined value here causes undefined behavior
1707// :95:22: error: use of undefined value here causes undefined behavior
1708// :95:22: error: use of undefined value here causes undefined behavior
1709// :95:22: error: use of undefined value here causes undefined behavior
1710// :95:22: error: use of undefined value here causes undefined behavior
1711// :95:22: error: use of undefined value here causes undefined behavior
1712// :95:22: error: use of undefined value here causes undefined behavior
1713// :95:22: error: use of undefined value here causes undefined behavior
1714// :95:22: error: use of undefined value here causes undefined behavior
1715// :95:22: error: use of undefined value here causes undefined behavior
1716// :95:22: error: use of undefined value here causes undefined behavior
1717// :95:22: error: use of undefined value here causes undefined behavior
1718// :95:22: error: use of undefined value here causes undefined behavior
1719// :95:22: error: use of undefined value here causes undefined behavior
1720// :95:22: error: use of undefined value here causes undefined behavior
1721// :95:22: error: use of undefined value here causes undefined behavior
1722// :95:22: error: use of undefined value here causes undefined behavior
1723// :95:22: error: use of undefined value here causes undefined behavior
1724// :95:22: error: use of undefined value here causes undefined behavior
1725// :95:22: error: use of undefined value here causes undefined behavior
1726// :95:22: error: use of undefined value here causes undefined behavior
1727// :95:22: error: use of undefined value here causes undefined behavior
1728// :95:22: error: use of undefined value here causes undefined behavior
1729// :95:22: error: use of undefined value here causes undefined behavior
1730// :95:22: error: use of undefined value here causes undefined behavior
1731// :95:22: error: use of undefined value here causes undefined behavior
1732// :95:22: error: use of undefined value here causes undefined behavior
1733// :95:22: error: use of undefined value here causes undefined behavior
1734// :95:22: error: use of undefined value here causes undefined behavior
1735// :95:22: error: use of undefined value here causes undefined behavior
1736// :95:22: error: use of undefined value here causes undefined behavior
1737// :95:22: error: use of undefined value here causes undefined behavior
1738// :95:22: error: use of undefined value here causes undefined behavior
1739// :95:22: error: use of undefined value here causes undefined behavior
1740// :95:22: error: use of undefined value here causes undefined behavior
1741// :95:22: error: use of undefined value here causes undefined behavior
1742// :95:22: error: use of undefined value here causes undefined behavior
1743// :95:22: error: use of undefined value here causes undefined behavior
1744// :95:22: error: use of undefined value here causes undefined behavior
1745// :95:22: error: use of undefined value here causes undefined behavior
1746// :95:22: error: use of undefined value here causes undefined behavior
1747// :95:22: error: use of undefined value here causes undefined behavior
1748// :95:22: error: use of undefined value here causes undefined behavior
1749// :95:22: error: use of undefined value here causes undefined behavior
1750// :95:22: error: use of undefined value here causes undefined behavior
1751// :95:22: error: use of undefined value here causes undefined behavior
1752// :95:22: error: use of undefined value here causes undefined behavior
1753// :95:22: error: use of undefined value here causes undefined behavior
1754// :95:22: error: use of undefined value here causes undefined behavior
1755// :95:22: error: use of undefined value here causes undefined behavior
1756// :95:22: error: use of undefined value here causes undefined behavior
1757// :95:22: error: use of undefined value here causes undefined behavior
1758// :95:22: error: use of undefined value here causes undefined behavior
1759// :95:22: error: use of undefined value here causes undefined behavior
1760// :95:22: error: use of undefined value here causes undefined behavior
1761// :95:22: error: use of undefined value here causes undefined behavior
1762// :95:22: error: use of undefined value here causes undefined behavior
1763// :95:22: error: use of undefined value here causes undefined behavior
1764// :95:22: error: use of undefined value here causes undefined behavior
1765// :95:22: error: use of undefined value here causes undefined behavior
1766// :95:22: error: use of undefined value here causes undefined behavior
1767// :95:22: error: use of undefined value here causes undefined behavior
1768// :95:22: error: use of undefined value here causes undefined behavior
1769// :95:22: error: use of undefined value here causes undefined behavior
1770// :95:22: error: use of undefined value here causes undefined behavior
1771// :95:22: error: use of undefined value here causes undefined behavior
1772// :95:22: error: use of undefined value here causes undefined behavior
1773// :95:22: error: use of undefined value here causes undefined behavior
1774// :95:22: error: use of undefined value here causes undefined behavior
1775// :95:22: error: use of undefined value here causes undefined behavior
1776// :95:22: error: use of undefined value here causes undefined behavior
1777// :95:22: error: use of undefined value here causes undefined behavior
1778// :95:22: error: use of undefined value here causes undefined behavior
1779// :95:22: error: use of undefined value here causes undefined behavior
1780// :95:22: error: use of undefined value here causes undefined behavior
1781// :95:22: error: use of undefined value here causes undefined behavior
1782// :95:22: error: use of undefined value here causes undefined behavior
1783// :95:22: error: use of undefined value here causes undefined behavior
1784// :95:22: error: use of undefined value here causes undefined behavior
1785// :95:22: error: use of undefined value here causes undefined behavior
1786// :95:22: error: use of undefined value here causes undefined behavior
1787// :95:22: error: use of undefined value here causes undefined behavior
1788// :95:22: error: use of undefined value here causes undefined behavior
1789// :95:22: error: use of undefined value here causes undefined behavior
1790// :95:22: error: use of undefined value here causes undefined behavior
1791// :95:22: error: use of undefined value here causes undefined behavior
1792// :95:22: error: use of undefined value here causes undefined behavior
1793// :95:22: error: use of undefined value here causes undefined behavior
1794// :95:22: error: use of undefined value here causes undefined behavior
1795// :95:22: error: use of undefined value here causes undefined behavior
1796// :95:22: error: use of undefined value here causes undefined behavior
1797// :95:22: error: use of undefined value here causes undefined behavior
1798// :95:22: error: use of undefined value here causes undefined behavior
1799// :95:22: error: use of undefined value here causes undefined behavior
1800// :95:22: error: use of undefined value here causes undefined behavior
1801// :95:22: error: use of undefined value here causes undefined behavior
1802// :95:22: error: use of undefined value here causes undefined behavior
1803// :95:22: error: use of undefined value here causes undefined behavior
1804// :95:22: error: use of undefined value here causes undefined behavior
1805// :95:22: error: use of undefined value here causes undefined behavior
1806// :95:22: error: use of undefined value here causes undefined behavior
1807// :95:22: error: use of undefined value here causes undefined behavior
1808// :95:22: error: use of undefined value here causes undefined behavior
1809// :95:22: error: use of undefined value here causes undefined behavior
1810// :95:22: error: use of undefined value here causes undefined behavior
1811// :95:22: error: use of undefined value here causes undefined behavior
1812// :95:22: error: use of undefined value here causes undefined behavior
1813// :95:22: error: use of undefined value here causes undefined behavior
1814// :95:22: error: use of undefined value here causes undefined behavior
1815// :95:22: error: use of undefined value here causes undefined behavior
1816// :95:22: error: use of undefined value here causes undefined behavior
1817// :95:22: error: use of undefined value here causes undefined behavior
1818// :95:22: error: use of undefined value here causes undefined behavior
1819// :95:22: error: use of undefined value here causes undefined behavior
1820// :95:22: error: use of undefined value here causes undefined behavior
1821// :95:22: error: use of undefined value here causes undefined behavior
1822// :95:22: error: use of undefined value here causes undefined behavior
1823// :95:22: error: use of undefined value here causes undefined behavior
1824// :95:22: error: use of undefined value here causes undefined behavior
1825// :95:22: error: use of undefined value here causes undefined behavior
1826// :95:22: error: use of undefined value here causes undefined behavior
1827// :95:22: error: use of undefined value here causes undefined behavior
1828// :95:22: error: use of undefined value here causes undefined behavior
1829// :95:22: error: use of undefined value here causes undefined behavior
1830// :95:22: error: use of undefined value here causes undefined behavior
1831// :95:22: error: use of undefined value here causes undefined behavior
1832// :95:22: error: use of undefined value here causes undefined behavior
1833// :95:22: error: use of undefined value here causes undefined behavior
1834// :95:22: error: use of undefined value here causes undefined behavior
1835// :95:22: error: use of undefined value here causes undefined behavior
1836// :95:22: error: use of undefined value here causes undefined behavior
1837// :95:22: error: use of undefined value here causes undefined behavior
1838// :95:22: error: use of undefined value here causes undefined behavior
1839// :95:22: error: use of undefined value here causes undefined behavior
1840// :95:22: error: use of undefined value here causes undefined behavior
1841// :95:22: error: use of undefined value here causes undefined behavior
1842// :95:22: error: use of undefined value here causes undefined behavior
1843// :95:22: error: use of undefined value here causes undefined behavior
1844// :95:22: error: use of undefined value here causes undefined behavior
1845// :95:22: error: use of undefined value here causes undefined behavior
1846// :95:22: error: use of undefined value here causes undefined behavior
1847// :95:22: error: use of undefined value here causes undefined behavior
1848// :95:22: error: use of undefined value here causes undefined behavior
1849// :95:22: error: use of undefined value here causes undefined behavior
1850// :95:22: error: use of undefined value here causes undefined behavior
1851// :95:22: error: use of undefined value here causes undefined behavior
1852// :95:22: error: use of undefined value here causes undefined behavior
1853// :95:22: error: use of undefined value here causes undefined behavior
1854// :95:22: error: use of undefined value here causes undefined behavior
1855// :95:22: error: use of undefined value here causes undefined behavior
1856// :95:22: error: use of undefined value here causes undefined behavior
1857// :95:22: error: use of undefined value here causes undefined behavior
1858// :95:22: error: use of undefined value here causes undefined behavior
1859// :95:25: error: use of undefined value here causes undefined behavior
1860// :95:25: error: use of undefined value here causes undefined behavior
1861// :95:25: error: use of undefined value here causes undefined behavior
1862// :95:25: error: use of undefined value here causes undefined behavior
1863// :95:25: error: use of undefined value here causes undefined behavior
1864// :95:25: error: use of undefined value here causes undefined behavior
1865// :95:25: error: use of undefined value here causes undefined behavior
1866// :95:25: error: use of undefined value here causes undefined behavior
1867// :95:25: error: use of undefined value here causes undefined behavior
1868// :95:25: error: use of undefined value here causes undefined behavior
1869// :95:25: error: use of undefined value here causes undefined behavior
1870// :95:25: error: use of undefined value here causes undefined behavior
1871// :95:25: error: use of undefined value here causes undefined behavior
1872// :95:25: error: use of undefined value here causes undefined behavior
1873// :95:25: error: use of undefined value here causes undefined behavior
1874// :95:25: error: use of undefined value here causes undefined behavior
1875// :95:25: error: use of undefined value here causes undefined behavior
1876// :95:25: error: use of undefined value here causes undefined behavior
1877// :95:25: error: use of undefined value here causes undefined behavior
1878// :95:25: error: use of undefined value here causes undefined behavior
1879// :95:25: error: use of undefined value here causes undefined behavior
1880// :95:25: error: use of undefined value here causes undefined behavior
1881// :95:25: error: use of undefined value here causes undefined behavior
1882// :95:25: error: use of undefined value here causes undefined behavior
1883// :95:25: error: use of undefined value here causes undefined behavior
1884// :95:25: error: use of undefined value here causes undefined behavior
1885// :95:25: error: use of undefined value here causes undefined behavior
1886// :95:25: error: use of undefined value here causes undefined behavior
1887// :95:25: error: use of undefined value here causes undefined behavior
1888// :95:25: error: use of undefined value here causes undefined behavior
1889// :95:25: error: use of undefined value here causes undefined behavior
1890// :95:25: error: use of undefined value here causes undefined behavior
1891// :95:25: error: use of undefined value here causes undefined behavior
1892// :101:17: error: use of undefined value here causes undefined behavior
1893// :101:17: error: use of undefined value here causes undefined behavior
1894// :101:17: error: use of undefined value here causes undefined behavior
1895// :101:17: error: use of undefined value here causes undefined behavior
1896// :101:17: error: use of undefined value here causes undefined behavior
1897// :101:17: error: use of undefined value here causes undefined behavior
1898// :101:17: error: use of undefined value here causes undefined behavior
1899// :101:17: error: use of undefined value here causes undefined behavior
1900// :101:17: error: use of undefined value here causes undefined behavior
1901// :101:17: error: use of undefined value here causes undefined behavior
1902// :101:17: error: use of undefined value here causes undefined behavior
1903// :101:17: error: use of undefined value here causes undefined behavior
1904// :101:17: error: use of undefined value here causes undefined behavior
1905// :101:17: error: use of undefined value here causes undefined behavior
1906// :101:17: error: use of undefined value here causes undefined behavior
1907// :101:17: error: use of undefined value here causes undefined behavior
1908// :101:17: error: use of undefined value here causes undefined behavior
1909// :101:17: error: use of undefined value here causes undefined behavior
1910// :101:17: error: use of undefined value here causes undefined behavior
1911// :101:17: error: use of undefined value here causes undefined behavior
1912// :101:17: error: use of undefined value here causes undefined behavior
1913// :101:17: error: use of undefined value here causes undefined behavior
1914// :101:17: error: use of undefined value here causes undefined behavior
1915// :101:17: error: use of undefined value here causes undefined behavior
1916// :101:17: error: use of undefined value here causes undefined behavior
1917// :101:17: error: use of undefined value here causes undefined behavior
1918// :101:17: error: use of undefined value here causes undefined behavior
1919// :101:17: error: use of undefined value here causes undefined behavior
1920// :101:17: error: use of undefined value here causes undefined behavior
1921// :101:17: error: use of undefined value here causes undefined behavior
1922// :101:17: error: use of undefined value here causes undefined behavior
1923// :101:17: error: use of undefined value here causes undefined behavior
1924// :101:17: error: use of undefined value here causes undefined behavior
1925// :101:17: error: use of undefined value here causes undefined behavior
1926// :101:17: error: use of undefined value here causes undefined behavior
1927// :101:17: error: use of undefined value here causes undefined behavior
1928// :101:17: error: use of undefined value here causes undefined behavior
1929// :101:17: error: use of undefined value here causes undefined behavior
1930// :101:17: error: use of undefined value here causes undefined behavior
1931// :101:17: error: use of undefined value here causes undefined behavior
1932// :101:17: error: use of undefined value here causes undefined behavior
1933// :101:17: error: use of undefined value here causes undefined behavior
1934// :101:17: error: use of undefined value here causes undefined behavior
1935// :101:17: error: use of undefined value here causes undefined behavior
1936// :101:17: error: use of undefined value here causes undefined behavior
1937// :101:17: error: use of undefined value here causes undefined behavior
1938// :101:17: error: use of undefined value here causes undefined behavior
1939// :101:17: error: use of undefined value here causes undefined behavior
1940// :101:17: error: use of undefined value here causes undefined behavior
1941// :101:17: error: use of undefined value here causes undefined behavior
1942// :101:17: error: use of undefined value here causes undefined behavior
1943// :101:17: error: use of undefined value here causes undefined behavior
1944// :101:17: error: use of undefined value here causes undefined behavior
1945// :101:17: error: use of undefined value here causes undefined behavior
1946// :101:17: error: use of undefined value here causes undefined behavior
1947// :101:17: error: use of undefined value here causes undefined behavior
1948// :101:17: error: use of undefined value here causes undefined behavior
1949// :101:17: error: use of undefined value here causes undefined behavior
1950// :101:17: error: use of undefined value here causes undefined behavior
1951// :101:17: error: use of undefined value here causes undefined behavior
1952// :101:17: error: use of undefined value here causes undefined behavior
1953// :101:17: error: use of undefined value here causes undefined behavior
1954// :101:17: error: use of undefined value here causes undefined behavior
1955// :101:17: error: use of undefined value here causes undefined behavior
1956// :101:17: error: use of undefined value here causes undefined behavior
1957// :101:17: error: use of undefined value here causes undefined behavior
1958// :101:17: error: use of undefined value here causes undefined behavior
1959// :101:17: error: use of undefined value here causes undefined behavior
1960// :101:17: error: use of undefined value here causes undefined behavior
1961// :101:17: error: use of undefined value here causes undefined behavior
1962// :101:17: error: use of undefined value here causes undefined behavior
1963// :101:17: error: use of undefined value here causes undefined behavior
1964// :101:17: error: use of undefined value here causes undefined behavior
1965// :101:17: error: use of undefined value here causes undefined behavior
1966// :101:17: error: use of undefined value here causes undefined behavior
1967// :101:17: error: use of undefined value here causes undefined behavior
1968// :101:17: error: use of undefined value here causes undefined behavior
1969// :101:17: error: use of undefined value here causes undefined behavior
1970// :101:17: error: use of undefined value here causes undefined behavior
1971// :101:17: error: use of undefined value here causes undefined behavior
1972// :101:17: error: use of undefined value here causes undefined behavior
1973// :101:17: error: use of undefined value here causes undefined behavior
1974// :101:17: error: use of undefined value here causes undefined behavior
1975// :101:17: error: use of undefined value here causes undefined behavior
1976// :101:17: error: use of undefined value here causes undefined behavior
1977// :101:17: error: use of undefined value here causes undefined behavior
1978// :101:17: error: use of undefined value here causes undefined behavior
1979// :101:17: error: use of undefined value here causes undefined behavior
1980// :101:17: error: use of undefined value here causes undefined behavior
1981// :101:17: error: use of undefined value here causes undefined behavior
1982// :101:17: error: use of undefined value here causes undefined behavior
1983// :101:17: error: use of undefined value here causes undefined behavior
1984// :101:17: error: use of undefined value here causes undefined behavior
1985// :101:17: error: use of undefined value here causes undefined behavior
1986// :101:17: error: use of undefined value here causes undefined behavior
1987// :101:17: error: use of undefined value here causes undefined behavior
1988// :101:17: error: use of undefined value here causes undefined behavior
1989// :101:17: error: use of undefined value here causes undefined behavior
1990// :101:17: error: use of undefined value here causes undefined behavior
1991// :101:17: error: use of undefined value here causes undefined behavior
1992// :101:17: error: use of undefined value here causes undefined behavior
1993// :101:17: error: use of undefined value here causes undefined behavior
1994// :101:17: error: use of undefined value here causes undefined behavior
1995// :101:17: error: use of undefined value here causes undefined behavior
1996// :101:17: error: use of undefined value here causes undefined behavior
1997// :101:17: error: use of undefined value here causes undefined behavior
1998// :101:17: error: use of undefined value here causes undefined behavior
1999// :101:17: error: use of undefined value here causes undefined behavior
2000// :101:17: error: use of undefined value here causes undefined behavior
2001// :101:17: error: use of undefined value here causes undefined behavior
2002// :101:17: error: use of undefined value here causes undefined behavior
2003// :101:17: error: use of undefined value here causes undefined behavior
2004// :101:17: error: use of undefined value here causes undefined behavior
2005// :101:17: error: use of undefined value here causes undefined behavior
2006// :101:17: error: use of undefined value here causes undefined behavior
2007// :101:17: error: use of undefined value here causes undefined behavior
2008// :101:17: error: use of undefined value here causes undefined behavior
2009// :101:17: error: use of undefined value here causes undefined behavior
2010// :101:17: error: use of undefined value here causes undefined behavior
2011// :101:17: error: use of undefined value here causes undefined behavior
2012// :101:17: error: use of undefined value here causes undefined behavior
2013// :101:17: error: use of undefined value here causes undefined behavior
2014// :101:17: error: use of undefined value here causes undefined behavior
2015// :101:17: error: use of undefined value here causes undefined behavior
2016// :101:17: error: use of undefined value here causes undefined behavior
2017// :101:17: error: use of undefined value here causes undefined behavior
2018// :101:17: error: use of undefined value here causes undefined behavior
2019// :101:17: error: use of undefined value here causes undefined behavior
2020// :101:17: error: use of undefined value here causes undefined behavior
2021// :101:17: error: use of undefined value here causes undefined behavior
2022// :101:17: error: use of undefined value here causes undefined behavior
2023// :101:17: error: use of undefined value here causes undefined behavior
2024// :101:17: error: use of undefined value here causes undefined behavior
2025// :101:17: error: use of undefined value here causes undefined behavior
2026// :101:17: error: use of undefined value here causes undefined behavior
2027// :101:17: error: use of undefined value here causes undefined behavior
2028// :101:17: error: use of undefined value here causes undefined behavior
2029// :101:17: error: use of undefined value here causes undefined behavior
2030// :101:17: error: use of undefined value here causes undefined behavior
2031// :101:17: error: use of undefined value here causes undefined behavior
2032// :101:17: error: use of undefined value here causes undefined behavior
2033// :101:17: error: use of undefined value here causes undefined behavior
2034// :101:17: error: use of undefined value here causes undefined behavior
2035// :101:17: error: use of undefined value here causes undefined behavior
2036// :101:17: error: use of undefined value here causes undefined behavior
2037// :101:17: error: use of undefined value here causes undefined behavior
2038// :101:17: error: use of undefined value here causes undefined behavior
2039// :101:17: error: use of undefined value here causes undefined behavior
2040// :101:17: error: use of undefined value here causes undefined behavior
2041// :101:17: error: use of undefined value here causes undefined behavior
2042// :101:17: error: use of undefined value here causes undefined behavior
2043// :101:17: error: use of undefined value here causes undefined behavior
2044// :101:17: error: use of undefined value here causes undefined behavior
2045// :101:17: error: use of undefined value here causes undefined behavior
2046// :101:17: error: use of undefined value here causes undefined behavior
2047// :101:17: error: use of undefined value here causes undefined behavior
2048// :101:17: error: use of undefined value here causes undefined behavior
2049// :101:17: error: use of undefined value here causes undefined behavior
2050// :101:17: error: use of undefined value here causes undefined behavior
2051// :101:17: error: use of undefined value here causes undefined behavior
2052// :101:17: error: use of undefined value here causes undefined behavior
2053// :101:17: error: use of undefined value here causes undefined behavior
2054// :101:17: error: use of undefined value here causes undefined behavior
2055// :101:17: error: use of undefined value here causes undefined behavior
2056// :101:17: error: use of undefined value here causes undefined behavior
2057// :101:17: error: use of undefined value here causes undefined behavior
2058// :101:17: error: use of undefined value here causes undefined behavior
2059// :101:17: error: use of undefined value here causes undefined behavior
2060// :101:17: error: use of undefined value here causes undefined behavior
2061// :101:17: error: use of undefined value here causes undefined behavior
2062// :101:17: error: use of undefined value here causes undefined behavior
2063// :101:17: error: use of undefined value here causes undefined behavior
2064// :101:17: error: use of undefined value here causes undefined behavior
2065// :101:17: error: use of undefined value here causes undefined behavior
2066// :101:17: error: use of undefined value here causes undefined behavior
2067// :101:17: error: use of undefined value here causes undefined behavior
2068// :101:17: error: use of undefined value here causes undefined behavior
2069// :101:17: error: use of undefined value here causes undefined behavior
2070// :101:17: error: use of undefined value here causes undefined behavior
2071// :101:17: error: use of undefined value here causes undefined behavior
2072// :101:17: error: use of undefined value here causes undefined behavior
2073// :101:17: error: use of undefined value here causes undefined behavior
2074// :101:17: error: use of undefined value here causes undefined behavior
2075// :101:17: error: use of undefined value here causes undefined behavior
2076// :101:17: error: use of undefined value here causes undefined behavior
2077// :101:17: error: use of undefined value here causes undefined behavior
2078// :101:17: error: use of undefined value here causes undefined behavior
2079// :101:17: error: use of undefined value here causes undefined behavior
2080// :101:17: error: use of undefined value here causes undefined behavior
2081// :101:17: error: use of undefined value here causes undefined behavior
2082// :101:17: error: use of undefined value here causes undefined behavior
2083// :101:17: error: use of undefined value here causes undefined behavior
2084// :101:17: error: use of undefined value here causes undefined behavior
2085// :101:17: error: use of undefined value here causes undefined behavior
2086// :101:17: error: use of undefined value here causes undefined behavior
2087// :101:17: error: use of undefined value here causes undefined behavior
2088// :101:17: error: use of undefined value here causes undefined behavior
2089// :101:17: error: use of undefined value here causes undefined behavior
2090// :101:17: error: use of undefined value here causes undefined behavior
2091// :101:17: error: use of undefined value here causes undefined behavior
2092// :101:17: error: use of undefined value here causes undefined behavior
2093// :101:17: error: use of undefined value here causes undefined behavior
2094// :101:17: error: use of undefined value here causes undefined behavior
2095// :101:17: error: use of undefined value here causes undefined behavior
2096// :101:17: error: use of undefined value here causes undefined behavior
2097// :101:17: error: use of undefined value here causes undefined behavior
2098// :101:17: error: use of undefined value here causes undefined behavior
2099// :101:17: error: use of undefined value here causes undefined behavior
2100// :101:17: error: use of undefined value here causes undefined behavior
2101// :101:17: error: use of undefined value here causes undefined behavior
2102// :101:17: error: use of undefined value here causes undefined behavior
2103// :101:17: error: use of undefined value here causes undefined behavior
2104// :101:17: error: use of undefined value here causes undefined behavior
2105// :101:17: error: use of undefined value here causes undefined behavior
2106// :101:17: error: use of undefined value here causes undefined behavior
2107// :101:17: error: use of undefined value here causes undefined behavior
2108// :101:17: error: use of undefined value here causes undefined behavior
2109// :101:17: error: use of undefined value here causes undefined behavior
2110// :101:17: error: use of undefined value here causes undefined behavior
2111// :101:17: error: use of undefined value here causes undefined behavior
2112// :101:17: error: use of undefined value here causes undefined behavior
2113// :101:17: error: use of undefined value here causes undefined behavior
2114// :101:17: error: use of undefined value here causes undefined behavior
2115// :101:17: error: use of undefined value here causes undefined behavior
2116// :101:17: error: use of undefined value here causes undefined behavior
2117// :101:17: error: use of undefined value here causes undefined behavior
2118// :101:17: error: use of undefined value here causes undefined behavior
2119// :101:17: error: use of undefined value here causes undefined behavior
2120// :101:17: error: use of undefined value here causes undefined behavior
2121// :101:17: error: use of undefined value here causes undefined behavior
2122// :101:17: error: use of undefined value here causes undefined behavior
2123// :101:17: error: use of undefined value here causes undefined behavior
2124// :101:17: error: use of undefined value here causes undefined behavior
2125// :101:17: error: use of undefined value here causes undefined behavior
2126// :101:17: error: use of undefined value here causes undefined behavior
2127// :101:17: error: use of undefined value here causes undefined behavior
2128// :101:17: error: use of undefined value here causes undefined behavior
2129// :101:17: error: use of undefined value here causes undefined behavior
2130// :101:17: error: use of undefined value here causes undefined behavior
2131// :101:17: error: use of undefined value here causes undefined behavior
2132// :101:17: error: use of undefined value here causes undefined behavior
2133// :101:17: error: use of undefined value here causes undefined behavior
2134// :105:27: error: use of undefined value here causes undefined behavior
2135// :105:27: error: use of undefined value here causes undefined behavior
2136// :105:27: error: use of undefined value here causes undefined behavior
2137// :105:27: error: use of undefined value here causes undefined behavior
2138// :105:27: error: use of undefined value here causes undefined behavior
2139// :105:27: error: use of undefined value here causes undefined behavior
2140// :105:27: error: use of undefined value here causes undefined behavior
2141// :105:27: error: use of undefined value here causes undefined behavior
2142// :105:27: error: use of undefined value here causes undefined behavior
2143// :105:27: error: use of undefined value here causes undefined behavior
2144// :105:27: error: use of undefined value here causes undefined behavior
2145// :105:27: error: use of undefined value here causes undefined behavior
2146// :105:27: error: use of undefined value here causes undefined behavior
2147// :105:27: error: use of undefined value here causes undefined behavior
2148// :105:27: error: use of undefined value here causes undefined behavior
2149// :105:27: error: use of undefined value here causes undefined behavior
2150// :105:27: error: use of undefined value here causes undefined behavior
2151// :105:27: error: use of undefined value here causes undefined behavior
2152// :105:27: error: use of undefined value here causes undefined behavior
2153// :105:27: error: use of undefined value here causes undefined behavior
2154// :105:27: error: use of undefined value here causes undefined behavior
2155// :105:27: error: use of undefined value here causes undefined behavior
2156// :105:27: error: use of undefined value here causes undefined behavior
2157// :105:27: error: use of undefined value here causes undefined behavior
2158// :105:27: error: use of undefined value here causes undefined behavior
2159// :105:27: error: use of undefined value here causes undefined behavior
2160// :105:27: error: use of undefined value here causes undefined behavior
2161// :105:27: error: use of undefined value here causes undefined behavior
2162// :105:27: error: use of undefined value here causes undefined behavior
2163// :105:27: error: use of undefined value here causes undefined behavior
2164// :105:27: error: use of undefined value here causes undefined behavior
2165// :105:27: error: use of undefined value here causes undefined behavior
2166// :105:27: error: use of undefined value here causes undefined behavior
2167// :105:27: error: use of undefined value here causes undefined behavior
2168// :105:27: error: use of undefined value here causes undefined behavior
2169// :105:27: error: use of undefined value here causes undefined behavior
2170// :105:27: error: use of undefined value here causes undefined behavior
2171// :105:27: error: use of undefined value here causes undefined behavior
2172// :105:27: error: use of undefined value here causes undefined behavior
2173// :105:27: error: use of undefined value here causes undefined behavior
2174// :105:27: error: use of undefined value here causes undefined behavior
2175// :105:27: error: use of undefined value here causes undefined behavior
2176// :105:27: error: use of undefined value here causes undefined behavior
2177// :105:27: error: use of undefined value here causes undefined behavior
2178// :105:27: error: use of undefined value here causes undefined behavior
2179// :105:27: error: use of undefined value here causes undefined behavior
2180// :105:27: error: use of undefined value here causes undefined behavior
2181// :105:27: error: use of undefined value here causes undefined behavior
2182// :105:27: error: use of undefined value here causes undefined behavior
2183// :105:27: error: use of undefined value here causes undefined behavior
2184// :105:27: error: use of undefined value here causes undefined behavior
2185// :105:27: error: use of undefined value here causes undefined behavior
2186// :105:27: error: use of undefined value here causes undefined behavior
2187// :105:27: error: use of undefined value here causes undefined behavior
2188// :105:27: error: use of undefined value here causes undefined behavior
2189// :105:27: error: use of undefined value here causes undefined behavior
2190// :105:27: error: use of undefined value here causes undefined behavior
2191// :105:27: error: use of undefined value here causes undefined behavior
2192// :105:27: error: use of undefined value here causes undefined behavior
2193// :105:27: error: use of undefined value here causes undefined behavior
2194// :105:27: error: use of undefined value here causes undefined behavior
2195// :105:27: error: use of undefined value here causes undefined behavior
2196// :105:27: error: use of undefined value here causes undefined behavior
2197// :105:27: error: use of undefined value here causes undefined behavior
2198// :105:27: error: use of undefined value here causes undefined behavior
2199// :105:27: error: use of undefined value here causes undefined behavior
2200// :105:27: error: use of undefined value here causes undefined behavior
2201// :105:27: error: use of undefined value here causes undefined behavior
2202// :105:27: error: use of undefined value here causes undefined behavior
2203// :105:27: error: use of undefined value here causes undefined behavior
2204// :105:27: error: use of undefined value here causes undefined behavior
2205// :105:27: error: use of undefined value here causes undefined behavior
2206// :105:27: error: use of undefined value here causes undefined behavior
2207// :105:27: error: use of undefined value here causes undefined behavior
2208// :105:27: error: use of undefined value here causes undefined behavior
2209// :105:27: error: use of undefined value here causes undefined behavior
2210// :105:27: error: use of undefined value here causes undefined behavior
2211// :105:27: error: use of undefined value here causes undefined behavior
2212// :105:27: error: use of undefined value here causes undefined behavior
2213// :105:27: error: use of undefined value here causes undefined behavior
2214// :105:27: error: use of undefined value here causes undefined behavior
2215// :105:27: error: use of undefined value here causes undefined behavior
2216// :105:27: error: use of undefined value here causes undefined behavior
2217// :105:27: error: use of undefined value here causes undefined behavior
2218// :105:27: error: use of undefined value here causes undefined behavior
2219// :105:27: error: use of undefined value here causes undefined behavior
2220// :105:27: error: use of undefined value here causes undefined behavior
2221// :105:27: error: use of undefined value here causes undefined behavior
2222// :105:27: error: use of undefined value here causes undefined behavior
2223// :105:27: error: use of undefined value here causes undefined behavior
2224// :105:27: error: use of undefined value here causes undefined behavior
2225// :105:27: error: use of undefined value here causes undefined behavior
2226// :105:27: error: use of undefined value here causes undefined behavior
2227// :105:27: error: use of undefined value here causes undefined behavior
2228// :105:27: error: use of undefined value here causes undefined behavior
2229// :105:27: error: use of undefined value here causes undefined behavior
2230// :105:27: error: use of undefined value here causes undefined behavior
2231// :105:27: error: use of undefined value here causes undefined behavior
2232// :105:27: error: use of undefined value here causes undefined behavior
2233// :105:27: error: use of undefined value here causes undefined behavior
2234// :105:27: error: use of undefined value here causes undefined behavior
2235// :105:27: error: use of undefined value here causes undefined behavior
2236// :105:27: error: use of undefined value here causes undefined behavior
2237// :105:27: error: use of undefined value here causes undefined behavior
2238// :105:27: error: use of undefined value here causes undefined behavior
2239// :105:27: error: use of undefined value here causes undefined behavior
2240// :105:27: error: use of undefined value here causes undefined behavior
2241// :105:27: error: use of undefined value here causes undefined behavior
2242// :105:27: error: use of undefined value here causes undefined behavior
2243// :105:27: error: use of undefined value here causes undefined behavior
2244// :105:27: error: use of undefined value here causes undefined behavior
2245// :105:27: error: use of undefined value here causes undefined behavior
2246// :105:27: error: use of undefined value here causes undefined behavior
2247// :105:27: error: use of undefined value here causes undefined behavior
2248// :105:27: error: use of undefined value here causes undefined behavior
2249// :105:27: error: use of undefined value here causes undefined behavior
2250// :105:27: error: use of undefined value here causes undefined behavior
2251// :105:27: error: use of undefined value here causes undefined behavior
2252// :105:27: error: use of undefined value here causes undefined behavior
2253// :105:27: error: use of undefined value here causes undefined behavior
2254// :105:27: error: use of undefined value here causes undefined behavior
2255// :105:27: error: use of undefined value here causes undefined behavior
2256// :105:27: error: use of undefined value here causes undefined behavior
2257// :105:27: error: use of undefined value here causes undefined behavior
2258// :105:27: error: use of undefined value here causes undefined behavior
2259// :105:27: error: use of undefined value here causes undefined behavior
2260// :105:27: error: use of undefined value here causes undefined behavior
2261// :105:27: error: use of undefined value here causes undefined behavior
2262// :105:27: error: use of undefined value here causes undefined behavior
2263// :105:27: error: use of undefined value here causes undefined behavior
2264// :105:27: error: use of undefined value here causes undefined behavior
2265// :105:27: error: use of undefined value here causes undefined behavior
2266// :105:27: error: use of undefined value here causes undefined behavior
2267// :105:27: error: use of undefined value here causes undefined behavior
2268// :105:27: error: use of undefined value here causes undefined behavior
2269// :105:27: error: use of undefined value here causes undefined behavior
2270// :105:27: error: use of undefined value here causes undefined behavior
2271// :105:27: error: use of undefined value here causes undefined behavior
2272// :105:27: error: use of undefined value here causes undefined behavior
2273// :105:27: error: use of undefined value here causes undefined behavior
2274// :105:27: error: use of undefined value here causes undefined behavior
2275// :105:27: error: use of undefined value here causes undefined behavior
2276// :105:27: error: use of undefined value here causes undefined behavior
2277// :105:27: error: use of undefined value here causes undefined behavior
2278// :105:27: error: use of undefined value here causes undefined behavior
2279// :105:27: error: use of undefined value here causes undefined behavior
2280// :105:27: error: use of undefined value here causes undefined behavior
2281// :105:27: error: use of undefined value here causes undefined behavior
2282// :105:27: error: use of undefined value here causes undefined behavior
2283// :105:27: error: use of undefined value here causes undefined behavior
2284// :105:27: error: use of undefined value here causes undefined behavior
2285// :105:27: error: use of undefined value here causes undefined behavior
2286// :105:27: error: use of undefined value here causes undefined behavior
2287// :105:27: error: use of undefined value here causes undefined behavior
2288// :105:27: error: use of undefined value here causes undefined behavior
2289// :105:27: error: use of undefined value here causes undefined behavior
2290// :105:27: error: use of undefined value here causes undefined behavior
2291// :105:27: error: use of undefined value here causes undefined behavior
2292// :105:27: error: use of undefined value here causes undefined behavior
2293// :105:27: error: use of undefined value here causes undefined behavior
2294// :105:27: error: use of undefined value here causes undefined behavior
2295// :105:27: error: use of undefined value here causes undefined behavior
2296// :105:27: error: use of undefined value here causes undefined behavior
2297// :105:27: error: use of undefined value here causes undefined behavior
2298// :105:27: error: use of undefined value here causes undefined behavior
2299// :105:27: error: use of undefined value here causes undefined behavior
2300// :105:27: error: use of undefined value here causes undefined behavior
2301// :105:27: error: use of undefined value here causes undefined behavior
2302// :105:27: error: use of undefined value here causes undefined behavior
2303// :105:27: error: use of undefined value here causes undefined behavior
2304// :105:27: error: use of undefined value here causes undefined behavior
2305// :105:27: error: use of undefined value here causes undefined behavior
2306// :105:27: error: use of undefined value here causes undefined behavior
2307// :105:27: error: use of undefined value here causes undefined behavior
2308// :105:27: error: use of undefined value here causes undefined behavior
2309// :105:27: error: use of undefined value here causes undefined behavior
2310// :105:27: error: use of undefined value here causes undefined behavior
2311// :105:27: error: use of undefined value here causes undefined behavior
2312// :105:27: error: use of undefined value here causes undefined behavior
2313// :105:27: error: use of undefined value here causes undefined behavior
2314// :105:27: error: use of undefined value here causes undefined behavior
2315// :105:27: error: use of undefined value here causes undefined behavior
2316// :105:27: error: use of undefined value here causes undefined behavior
2317// :105:27: error: use of undefined value here causes undefined behavior
2318// :105:27: error: use of undefined value here causes undefined behavior
2319// :105:27: error: use of undefined value here causes undefined behavior
2320// :105:27: error: use of undefined value here causes undefined behavior
2321// :105:27: error: use of undefined value here causes undefined behavior
2322// :105:27: error: use of undefined value here causes undefined behavior
2323// :105:27: error: use of undefined value here causes undefined behavior
2324// :105:27: error: use of undefined value here causes undefined behavior
2325// :105:27: error: use of undefined value here causes undefined behavior
2326// :105:27: error: use of undefined value here causes undefined behavior
2327// :105:27: error: use of undefined value here causes undefined behavior
2328// :105:27: error: use of undefined value here causes undefined behavior
2329// :105:27: error: use of undefined value here causes undefined behavior
2330// :105:27: error: use of undefined value here causes undefined behavior
2331// :105:27: error: use of undefined value here causes undefined behavior
2332// :105:27: error: use of undefined value here causes undefined behavior
2333// :105:27: error: use of undefined value here causes undefined behavior
2334// :105:27: error: use of undefined value here causes undefined behavior
2335// :105:27: error: use of undefined value here causes undefined behavior
2336// :105:27: error: use of undefined value here causes undefined behavior
2337// :105:27: error: use of undefined value here causes undefined behavior
2338// :105:27: error: use of undefined value here causes undefined behavior
2339// :105:27: error: use of undefined value here causes undefined behavior
2340// :105:27: error: use of undefined value here causes undefined behavior
2341// :105:27: error: use of undefined value here causes undefined behavior
2342// :105:27: error: use of undefined value here causes undefined behavior
2343// :105:27: error: use of undefined value here causes undefined behavior
2344// :105:27: error: use of undefined value here causes undefined behavior
2345// :105:27: error: use of undefined value here causes undefined behavior
2346// :105:27: error: use of undefined value here causes undefined behavior
2347// :105:27: error: use of undefined value here causes undefined behavior
2348// :105:27: error: use of undefined value here causes undefined behavior
2349// :105:27: error: use of undefined value here causes undefined behavior
2350// :105:27: error: use of undefined value here causes undefined behavior
2351// :105:27: error: use of undefined value here causes undefined behavior
2352// :105:27: error: use of undefined value here causes undefined behavior
2353// :105:27: error: use of undefined value here causes undefined behavior
2354// :105:27: error: use of undefined value here causes undefined behavior
2355// :105:27: error: use of undefined value here causes undefined behavior
2356// :105:27: error: use of undefined value here causes undefined behavior
2357// :105:27: error: use of undefined value here causes undefined behavior
2358// :105:27: error: use of undefined value here causes undefined behavior
2359// :105:27: error: use of undefined value here causes undefined behavior
2360// :105:27: error: use of undefined value here causes undefined behavior
2361// :105:27: error: use of undefined value here causes undefined behavior
2362// :105:27: error: use of undefined value here causes undefined behavior
2363// :105:27: error: use of undefined value here causes undefined behavior
2364// :105:27: error: use of undefined value here causes undefined behavior
2365// :105:27: error: use of undefined value here causes undefined behavior
2366// :105:27: error: use of undefined value here causes undefined behavior
2367// :105:27: error: use of undefined value here causes undefined behavior
2368// :105:27: error: use of undefined value here causes undefined behavior
2369// :105:27: error: use of undefined value here causes undefined behavior
2370// :105:27: error: use of undefined value here causes undefined behavior
2371// :105:27: error: use of undefined value here causes undefined behavior
2372// :105:27: error: use of undefined value here causes undefined behavior
2373// :105:27: error: use of undefined value here causes undefined behavior
2374// :105:27: error: use of undefined value here causes undefined behavior
2375// :105:27: error: use of undefined value here causes undefined behavior
2376// :109:27: error: use of undefined value here causes undefined behavior
2377// :109:27: error: use of undefined value here causes undefined behavior
2378// :109:27: error: use of undefined value here causes undefined behavior
2379// :109:27: error: use of undefined value here causes undefined behavior
2380// :109:27: error: use of undefined value here causes undefined behavior
2381// :109:27: error: use of undefined value here causes undefined behavior
2382// :109:27: error: use of undefined value here causes undefined behavior
2383// :109:27: error: use of undefined value here causes undefined behavior
2384// :109:27: error: use of undefined value here causes undefined behavior
2385// :109:27: error: use of undefined value here causes undefined behavior
2386// :109:27: error: use of undefined value here causes undefined behavior
2387// :109:27: error: use of undefined value here causes undefined behavior
2388// :109:27: error: use of undefined value here causes undefined behavior
2389// :109:27: error: use of undefined value here causes undefined behavior
2390// :109:27: error: use of undefined value here causes undefined behavior
2391// :109:27: error: use of undefined value here causes undefined behavior
2392// :109:27: error: use of undefined value here causes undefined behavior
2393// :109:27: error: use of undefined value here causes undefined behavior
2394// :109:27: error: use of undefined value here causes undefined behavior
2395// :109:27: error: use of undefined value here causes undefined behavior
2396// :109:27: error: use of undefined value here causes undefined behavior
2397// :109:27: error: use of undefined value here causes undefined behavior
2398// :109:27: error: use of undefined value here causes undefined behavior
2399// :109:27: error: use of undefined value here causes undefined behavior
2400// :109:27: error: use of undefined value here causes undefined behavior
2401// :109:27: error: use of undefined value here causes undefined behavior
2402// :109:27: error: use of undefined value here causes undefined behavior
2403// :109:27: error: use of undefined value here causes undefined behavior
2404// :109:27: error: use of undefined value here causes undefined behavior
2405// :109:27: error: use of undefined value here causes undefined behavior
2406// :109:27: error: use of undefined value here causes undefined behavior
2407// :109:27: error: use of undefined value here causes undefined behavior
2408// :109:27: error: use of undefined value here causes undefined behavior
2409// :109:27: error: use of undefined value here causes undefined behavior
2410// :109:27: error: use of undefined value here causes undefined behavior
2411// :109:27: error: use of undefined value here causes undefined behavior
2412// :109:27: error: use of undefined value here causes undefined behavior
2413// :109:27: error: use of undefined value here causes undefined behavior
2414// :109:27: error: use of undefined value here causes undefined behavior
2415// :109:27: error: use of undefined value here causes undefined behavior
2416// :109:27: error: use of undefined value here causes undefined behavior
2417// :109:27: error: use of undefined value here causes undefined behavior
2418// :109:27: error: use of undefined value here causes undefined behavior
2419// :109:27: error: use of undefined value here causes undefined behavior
2420// :109:27: error: use of undefined value here causes undefined behavior
2421// :109:27: error: use of undefined value here causes undefined behavior
2422// :109:27: error: use of undefined value here causes undefined behavior
2423// :109:27: error: use of undefined value here causes undefined behavior
2424// :109:27: error: use of undefined value here causes undefined behavior
2425// :109:27: error: use of undefined value here causes undefined behavior
2426// :109:27: error: use of undefined value here causes undefined behavior
2427// :109:27: error: use of undefined value here causes undefined behavior
2428// :109:27: error: use of undefined value here causes undefined behavior
2429// :109:27: error: use of undefined value here causes undefined behavior
2430// :109:27: error: use of undefined value here causes undefined behavior
2431// :109:27: error: use of undefined value here causes undefined behavior
2432// :109:27: error: use of undefined value here causes undefined behavior
2433// :109:27: error: use of undefined value here causes undefined behavior
2434// :109:27: error: use of undefined value here causes undefined behavior
2435// :109:27: error: use of undefined value here causes undefined behavior
2436// :109:27: error: use of undefined value here causes undefined behavior
2437// :109:27: error: use of undefined value here causes undefined behavior
2438// :109:27: error: use of undefined value here causes undefined behavior
2439// :109:27: error: use of undefined value here causes undefined behavior
2440// :109:27: error: use of undefined value here causes undefined behavior
2441// :109:27: error: use of undefined value here causes undefined behavior
2442// :109:27: error: use of undefined value here causes undefined behavior
2443// :109:27: error: use of undefined value here causes undefined behavior
2444// :109:27: error: use of undefined value here causes undefined behavior
2445// :109:27: error: use of undefined value here causes undefined behavior
2446// :109:27: error: use of undefined value here causes undefined behavior
2447// :109:27: error: use of undefined value here causes undefined behavior
2448// :109:27: error: use of undefined value here causes undefined behavior
2449// :109:27: error: use of undefined value here causes undefined behavior
2450// :109:27: error: use of undefined value here causes undefined behavior
2451// :109:27: error: use of undefined value here causes undefined behavior
2452// :109:27: error: use of undefined value here causes undefined behavior
2453// :109:27: error: use of undefined value here causes undefined behavior
2454// :109:27: error: use of undefined value here causes undefined behavior
2455// :109:27: error: use of undefined value here causes undefined behavior
2456// :109:27: error: use of undefined value here causes undefined behavior
2457// :109:27: error: use of undefined value here causes undefined behavior
2458// :109:27: error: use of undefined value here causes undefined behavior
2459// :109:27: error: use of undefined value here causes undefined behavior
2460// :109:27: error: use of undefined value here causes undefined behavior
2461// :109:27: error: use of undefined value here causes undefined behavior
2462// :109:27: error: use of undefined value here causes undefined behavior
2463// :109:27: error: use of undefined value here causes undefined behavior
2464// :109:27: error: use of undefined value here causes undefined behavior
2465// :109:27: error: use of undefined value here causes undefined behavior
2466// :109:27: error: use of undefined value here causes undefined behavior
2467// :109:27: error: use of undefined value here causes undefined behavior
2468// :109:27: error: use of undefined value here causes undefined behavior
2469// :109:27: error: use of undefined value here causes undefined behavior
2470// :109:27: error: use of undefined value here causes undefined behavior
2471// :109:27: error: use of undefined value here causes undefined behavior
2472// :109:27: error: use of undefined value here causes undefined behavior
2473// :109:27: error: use of undefined value here causes undefined behavior
2474// :109:27: error: use of undefined value here causes undefined behavior
2475// :109:27: error: use of undefined value here causes undefined behavior
2476// :109:27: error: use of undefined value here causes undefined behavior
2477// :109:27: error: use of undefined value here causes undefined behavior
2478// :109:27: error: use of undefined value here causes undefined behavior
2479// :109:27: error: use of undefined value here causes undefined behavior
2480// :109:27: error: use of undefined value here causes undefined behavior
2481// :109:27: error: use of undefined value here causes undefined behavior
2482// :109:27: error: use of undefined value here causes undefined behavior
2483// :109:27: error: use of undefined value here causes undefined behavior
2484// :109:27: error: use of undefined value here causes undefined behavior
2485// :109:27: error: use of undefined value here causes undefined behavior
2486// :109:27: error: use of undefined value here causes undefined behavior
2487// :109:27: error: use of undefined value here causes undefined behavior
2488// :109:27: error: use of undefined value here causes undefined behavior
2489// :109:27: error: use of undefined value here causes undefined behavior
2490// :109:27: error: use of undefined value here causes undefined behavior
2491// :109:27: error: use of undefined value here causes undefined behavior
2492// :109:27: error: use of undefined value here causes undefined behavior
2493// :109:27: error: use of undefined value here causes undefined behavior
2494// :109:27: error: use of undefined value here causes undefined behavior
2495// :109:27: error: use of undefined value here causes undefined behavior
2496// :109:27: error: use of undefined value here causes undefined behavior
2497// :109:27: error: use of undefined value here causes undefined behavior
2498// :109:27: error: use of undefined value here causes undefined behavior
2499// :109:27: error: use of undefined value here causes undefined behavior
2500// :109:27: error: use of undefined value here causes undefined behavior
2501// :109:27: error: use of undefined value here causes undefined behavior
2502// :109:27: error: use of undefined value here causes undefined behavior
2503// :109:27: error: use of undefined value here causes undefined behavior
2504// :109:27: error: use of undefined value here causes undefined behavior
2505// :109:27: error: use of undefined value here causes undefined behavior
2506// :109:27: error: use of undefined value here causes undefined behavior
2507// :109:27: error: use of undefined value here causes undefined behavior
2508// :109:27: error: use of undefined value here causes undefined behavior
2509// :109:27: error: use of undefined value here causes undefined behavior
2510// :109:27: error: use of undefined value here causes undefined behavior
2511// :109:27: error: use of undefined value here causes undefined behavior
2512// :109:27: error: use of undefined value here causes undefined behavior
2513// :109:27: error: use of undefined value here causes undefined behavior
2514// :109:27: error: use of undefined value here causes undefined behavior
2515// :109:27: error: use of undefined value here causes undefined behavior
2516// :109:27: error: use of undefined value here causes undefined behavior
2517// :109:27: error: use of undefined value here causes undefined behavior
2518// :109:27: error: use of undefined value here causes undefined behavior
2519// :109:27: error: use of undefined value here causes undefined behavior
2520// :109:27: error: use of undefined value here causes undefined behavior
2521// :109:27: error: use of undefined value here causes undefined behavior
2522// :109:27: error: use of undefined value here causes undefined behavior
2523// :109:27: error: use of undefined value here causes undefined behavior
2524// :109:27: error: use of undefined value here causes undefined behavior
2525// :109:27: error: use of undefined value here causes undefined behavior
2526// :109:27: error: use of undefined value here causes undefined behavior
2527// :109:27: error: use of undefined value here causes undefined behavior
2528// :109:27: error: use of undefined value here causes undefined behavior
2529// :109:27: error: use of undefined value here causes undefined behavior
2530// :109:27: error: use of undefined value here causes undefined behavior
2531// :109:27: error: use of undefined value here causes undefined behavior
2532// :109:27: error: use of undefined value here causes undefined behavior
2533// :109:27: error: use of undefined value here causes undefined behavior
2534// :109:27: error: use of undefined value here causes undefined behavior
2535// :109:27: error: use of undefined value here causes undefined behavior
2536// :109:27: error: use of undefined value here causes undefined behavior
2537// :109:27: error: use of undefined value here causes undefined behavior
2538// :109:27: error: use of undefined value here causes undefined behavior
2539// :109:27: error: use of undefined value here causes undefined behavior
2540// :109:27: error: use of undefined value here causes undefined behavior
2541// :109:27: error: use of undefined value here causes undefined behavior
2542// :109:27: error: use of undefined value here causes undefined behavior
2543// :109:27: error: use of undefined value here causes undefined behavior
2544// :109:27: error: use of undefined value here causes undefined behavior
2545// :109:27: error: use of undefined value here causes undefined behavior
2546// :109:27: error: use of undefined value here causes undefined behavior
2547// :109:27: error: use of undefined value here causes undefined behavior
2548// :109:27: error: use of undefined value here causes undefined behavior
2549// :109:27: error: use of undefined value here causes undefined behavior
2550// :109:27: error: use of undefined value here causes undefined behavior
2551// :109:27: error: use of undefined value here causes undefined behavior
2552// :109:27: error: use of undefined value here causes undefined behavior
2553// :109:27: error: use of undefined value here causes undefined behavior
2554// :109:27: error: use of undefined value here causes undefined behavior
2555// :109:27: error: use of undefined value here causes undefined behavior
2556// :109:27: error: use of undefined value here causes undefined behavior
2557// :109:27: error: use of undefined value here causes undefined behavior
2558// :109:27: error: use of undefined value here causes undefined behavior
2559// :109:27: error: use of undefined value here causes undefined behavior
2560// :109:27: error: use of undefined value here causes undefined behavior
2561// :109:27: error: use of undefined value here causes undefined behavior
2562// :109:27: error: use of undefined value here causes undefined behavior
2563// :109:27: error: use of undefined value here causes undefined behavior
2564// :109:27: error: use of undefined value here causes undefined behavior
2565// :109:27: error: use of undefined value here causes undefined behavior
2566// :109:27: error: use of undefined value here causes undefined behavior
2567// :109:27: error: use of undefined value here causes undefined behavior
2568// :109:27: error: use of undefined value here causes undefined behavior
2569// :109:27: error: use of undefined value here causes undefined behavior
2570// :109:27: error: use of undefined value here causes undefined behavior
2571// :109:27: error: use of undefined value here causes undefined behavior
2572// :109:27: error: use of undefined value here causes undefined behavior
2573// :109:27: error: use of undefined value here causes undefined behavior
2574// :109:27: error: use of undefined value here causes undefined behavior
2575// :109:27: error: use of undefined value here causes undefined behavior
2576// :109:27: error: use of undefined value here causes undefined behavior
2577// :109:27: error: use of undefined value here causes undefined behavior
2578// :109:27: error: use of undefined value here causes undefined behavior
2579// :109:27: error: use of undefined value here causes undefined behavior
2580// :109:27: error: use of undefined value here causes undefined behavior
2581// :109:27: error: use of undefined value here causes undefined behavior
2582// :109:27: error: use of undefined value here causes undefined behavior
2583// :109:27: error: use of undefined value here causes undefined behavior
2584// :109:27: error: use of undefined value here causes undefined behavior
2585// :109:27: error: use of undefined value here causes undefined behavior
2586// :109:27: error: use of undefined value here causes undefined behavior
2587// :109:27: error: use of undefined value here causes undefined behavior
2588// :109:27: error: use of undefined value here causes undefined behavior
2589// :109:27: error: use of undefined value here causes undefined behavior
2590// :109:27: error: use of undefined value here causes undefined behavior
2591// :109:27: error: use of undefined value here causes undefined behavior
2592// :109:27: error: use of undefined value here causes undefined behavior
2593// :109:27: error: use of undefined value here causes undefined behavior
2594// :109:27: error: use of undefined value here causes undefined behavior
2595// :109:27: error: use of undefined value here causes undefined behavior
2596// :109:27: error: use of undefined value here causes undefined behavior
2597// :109:27: error: use of undefined value here causes undefined behavior
2598// :109:27: error: use of undefined value here causes undefined behavior
2599// :109:27: error: use of undefined value here causes undefined behavior
2600// :109:27: error: use of undefined value here causes undefined behavior
2601// :109:27: error: use of undefined value here causes undefined behavior
2602// :109:27: error: use of undefined value here causes undefined behavior
2603// :109:27: error: use of undefined value here causes undefined behavior
2604// :109:27: error: use of undefined value here causes undefined behavior
2605// :109:27: error: use of undefined value here causes undefined behavior
2606// :109:27: error: use of undefined value here causes undefined behavior
2607// :109:27: error: use of undefined value here causes undefined behavior
2608// :109:27: error: use of undefined value here causes undefined behavior
2609// :109:27: error: use of undefined value here causes undefined behavior
2610// :109:27: error: use of undefined value here causes undefined behavior
2611// :109:27: error: use of undefined value here causes undefined behavior
2612// :109:27: error: use of undefined value here causes undefined behavior
2613// :109:27: error: use of undefined value here causes undefined behavior
2614// :109:27: error: use of undefined value here causes undefined behavior
2615// :109:27: error: use of undefined value here causes undefined behavior
2616// :109:27: error: use of undefined value here causes undefined behavior
2617// :109:27: error: use of undefined value here causes undefined behavior
2618// :113:27: error: use of undefined value here causes undefined behavior
2619// :113:27: error: use of undefined value here causes undefined behavior
2620// :113:27: error: use of undefined value here causes undefined behavior
2621// :113:27: error: use of undefined value here causes undefined behavior
2622// :113:27: error: use of undefined value here causes undefined behavior
2623// :113:27: error: use of undefined value here causes undefined behavior
2624// :113:27: error: use of undefined value here causes undefined behavior
2625// :113:27: error: use of undefined value here causes undefined behavior
2626// :113:27: error: use of undefined value here causes undefined behavior
2627// :113:27: error: use of undefined value here causes undefined behavior
2628// :113:27: error: use of undefined value here causes undefined behavior
2629// :113:27: error: use of undefined value here causes undefined behavior
2630// :113:27: error: use of undefined value here causes undefined behavior
2631// :113:27: error: use of undefined value here causes undefined behavior
2632// :113:27: error: use of undefined value here causes undefined behavior
2633// :113:27: error: use of undefined value here causes undefined behavior
2634// :113:27: error: use of undefined value here causes undefined behavior
2635// :113:27: error: use of undefined value here causes undefined behavior
2636// :113:27: error: use of undefined value here causes undefined behavior
2637// :113:27: error: use of undefined value here causes undefined behavior
2638// :113:27: error: use of undefined value here causes undefined behavior
2639// :113:27: error: use of undefined value here causes undefined behavior
2640// :113:27: error: use of undefined value here causes undefined behavior
2641// :113:27: error: use of undefined value here causes undefined behavior
2642// :113:27: error: use of undefined value here causes undefined behavior
2643// :113:27: error: use of undefined value here causes undefined behavior
2644// :113:27: error: use of undefined value here causes undefined behavior
2645// :113:27: error: use of undefined value here causes undefined behavior
2646// :113:27: error: use of undefined value here causes undefined behavior
2647// :113:27: error: use of undefined value here causes undefined behavior
2648// :113:27: error: use of undefined value here causes undefined behavior
2649// :113:27: error: use of undefined value here causes undefined behavior
2650// :113:27: error: use of undefined value here causes undefined behavior
2651// :113:27: error: use of undefined value here causes undefined behavior
2652// :113:27: error: use of undefined value here causes undefined behavior
2653// :113:27: error: use of undefined value here causes undefined behavior
2654// :113:27: error: use of undefined value here causes undefined behavior
2655// :113:27: error: use of undefined value here causes undefined behavior
2656// :113:27: error: use of undefined value here causes undefined behavior
2657// :113:27: error: use of undefined value here causes undefined behavior
2658// :113:27: error: use of undefined value here causes undefined behavior
2659// :113:27: error: use of undefined value here causes undefined behavior
2660// :113:27: error: use of undefined value here causes undefined behavior
2661// :113:27: error: use of undefined value here causes undefined behavior
2662// :113:27: error: use of undefined value here causes undefined behavior
2663// :113:27: error: use of undefined value here causes undefined behavior
2664// :113:27: error: use of undefined value here causes undefined behavior
2665// :113:27: error: use of undefined value here causes undefined behavior
2666// :113:27: error: use of undefined value here causes undefined behavior
2667// :113:27: error: use of undefined value here causes undefined behavior
2668// :113:27: error: use of undefined value here causes undefined behavior
2669// :113:27: error: use of undefined value here causes undefined behavior
2670// :113:27: error: use of undefined value here causes undefined behavior
2671// :113:27: error: use of undefined value here causes undefined behavior
2672// :113:27: error: use of undefined value here causes undefined behavior
2673// :113:27: error: use of undefined value here causes undefined behavior
2674// :113:27: error: use of undefined value here causes undefined behavior
2675// :113:27: error: use of undefined value here causes undefined behavior
2676// :113:27: error: use of undefined value here causes undefined behavior
2677// :113:27: error: use of undefined value here causes undefined behavior
2678// :113:27: error: use of undefined value here causes undefined behavior
2679// :113:27: error: use of undefined value here causes undefined behavior
2680// :113:27: error: use of undefined value here causes undefined behavior
2681// :113:27: error: use of undefined value here causes undefined behavior
2682// :113:27: error: use of undefined value here causes undefined behavior
2683// :113:27: error: use of undefined value here causes undefined behavior
2684// :113:27: error: use of undefined value here causes undefined behavior
2685// :113:27: error: use of undefined value here causes undefined behavior
2686// :113:27: error: use of undefined value here causes undefined behavior
2687// :113:27: error: use of undefined value here causes undefined behavior
2688// :113:27: error: use of undefined value here causes undefined behavior
2689// :113:27: error: use of undefined value here causes undefined behavior
2690// :113:27: error: use of undefined value here causes undefined behavior
2691// :113:27: error: use of undefined value here causes undefined behavior
2692// :113:27: error: use of undefined value here causes undefined behavior
2693// :113:27: error: use of undefined value here causes undefined behavior
2694// :113:27: error: use of undefined value here causes undefined behavior
2695// :113:27: error: use of undefined value here causes undefined behavior
2696// :113:27: error: use of undefined value here causes undefined behavior
2697// :113:27: error: use of undefined value here causes undefined behavior
2698// :113:27: error: use of undefined value here causes undefined behavior
2699// :113:27: error: use of undefined value here causes undefined behavior
2700// :113:27: error: use of undefined value here causes undefined behavior
2701// :113:27: error: use of undefined value here causes undefined behavior
2702// :113:27: error: use of undefined value here causes undefined behavior
2703// :113:27: error: use of undefined value here causes undefined behavior
2704// :113:27: error: use of undefined value here causes undefined behavior
2705// :113:27: error: use of undefined value here causes undefined behavior
2706// :113:27: error: use of undefined value here causes undefined behavior
2707// :113:27: error: use of undefined value here causes undefined behavior
2708// :113:27: error: use of undefined value here causes undefined behavior
2709// :113:27: error: use of undefined value here causes undefined behavior
2710// :113:27: error: use of undefined value here causes undefined behavior
2711// :113:27: error: use of undefined value here causes undefined behavior
2712// :113:27: error: use of undefined value here causes undefined behavior
2713// :113:27: error: use of undefined value here causes undefined behavior
2714// :113:27: error: use of undefined value here causes undefined behavior
2715// :113:27: error: use of undefined value here causes undefined behavior
2716// :113:27: error: use of undefined value here causes undefined behavior
2717// :113:27: error: use of undefined value here causes undefined behavior
2718// :113:27: error: use of undefined value here causes undefined behavior
2719// :113:27: error: use of undefined value here causes undefined behavior
2720// :113:27: error: use of undefined value here causes undefined behavior
2721// :113:27: error: use of undefined value here causes undefined behavior
2722// :113:27: error: use of undefined value here causes undefined behavior
2723// :113:27: error: use of undefined value here causes undefined behavior
2724// :113:27: error: use of undefined value here causes undefined behavior
2725// :113:27: error: use of undefined value here causes undefined behavior
2726// :113:27: error: use of undefined value here causes undefined behavior
2727// :113:27: error: use of undefined value here causes undefined behavior
2728// :113:27: error: use of undefined value here causes undefined behavior
2729// :113:27: error: use of undefined value here causes undefined behavior
2730// :113:27: error: use of undefined value here causes undefined behavior
2731// :113:27: error: use of undefined value here causes undefined behavior
2732// :113:27: error: use of undefined value here causes undefined behavior
2733// :113:27: error: use of undefined value here causes undefined behavior
2734// :113:27: error: use of undefined value here causes undefined behavior
2735// :113:27: error: use of undefined value here causes undefined behavior
2736// :113:27: error: use of undefined value here causes undefined behavior
2737// :113:27: error: use of undefined value here causes undefined behavior
2738// :113:27: error: use of undefined value here causes undefined behavior
2739// :113:27: error: use of undefined value here causes undefined behavior
2740// :113:27: error: use of undefined value here causes undefined behavior
2741// :113:27: error: use of undefined value here causes undefined behavior
2742// :113:27: error: use of undefined value here causes undefined behavior
2743// :113:27: error: use of undefined value here causes undefined behavior
2744// :113:27: error: use of undefined value here causes undefined behavior
2745// :113:27: error: use of undefined value here causes undefined behavior
2746// :113:27: error: use of undefined value here causes undefined behavior
2747// :113:27: error: use of undefined value here causes undefined behavior
2748// :113:27: error: use of undefined value here causes undefined behavior
2749// :113:27: error: use of undefined value here causes undefined behavior
2750// :113:27: error: use of undefined value here causes undefined behavior
2751// :113:27: error: use of undefined value here causes undefined behavior
2752// :113:27: error: use of undefined value here causes undefined behavior
2753// :113:27: error: use of undefined value here causes undefined behavior
2754// :113:27: error: use of undefined value here causes undefined behavior
2755// :113:27: error: use of undefined value here causes undefined behavior
2756// :113:27: error: use of undefined value here causes undefined behavior
2757// :113:27: error: use of undefined value here causes undefined behavior
2758// :113:27: error: use of undefined value here causes undefined behavior
2759// :113:27: error: use of undefined value here causes undefined behavior
2760// :113:27: error: use of undefined value here causes undefined behavior
2761// :113:27: error: use of undefined value here causes undefined behavior
2762// :113:27: error: use of undefined value here causes undefined behavior
2763// :113:27: error: use of undefined value here causes undefined behavior
2764// :113:27: error: use of undefined value here causes undefined behavior
2765// :113:27: error: use of undefined value here causes undefined behavior
2766// :113:27: error: use of undefined value here causes undefined behavior
2767// :113:27: error: use of undefined value here causes undefined behavior
2768// :113:27: error: use of undefined value here causes undefined behavior
2769// :113:27: error: use of undefined value here causes undefined behavior
2770// :113:27: error: use of undefined value here causes undefined behavior
2771// :113:27: error: use of undefined value here causes undefined behavior
2772// :113:27: error: use of undefined value here causes undefined behavior
2773// :113:27: error: use of undefined value here causes undefined behavior
2774// :113:27: error: use of undefined value here causes undefined behavior
2775// :113:27: error: use of undefined value here causes undefined behavior
2776// :113:27: error: use of undefined value here causes undefined behavior
2777// :113:27: error: use of undefined value here causes undefined behavior
2778// :113:27: error: use of undefined value here causes undefined behavior
2779// :113:27: error: use of undefined value here causes undefined behavior
2780// :113:27: error: use of undefined value here causes undefined behavior
2781// :113:27: error: use of undefined value here causes undefined behavior
2782// :113:27: error: use of undefined value here causes undefined behavior
2783// :113:27: error: use of undefined value here causes undefined behavior
2784// :113:27: error: use of undefined value here causes undefined behavior
2785// :113:27: error: use of undefined value here causes undefined behavior
2786// :113:27: error: use of undefined value here causes undefined behavior
2787// :113:27: error: use of undefined value here causes undefined behavior
2788// :113:27: error: use of undefined value here causes undefined behavior
2789// :113:27: error: use of undefined value here causes undefined behavior
2790// :113:27: error: use of undefined value here causes undefined behavior
2791// :113:27: error: use of undefined value here causes undefined behavior
2792// :113:27: error: use of undefined value here causes undefined behavior
2793// :113:27: error: use of undefined value here causes undefined behavior
2794// :113:27: error: use of undefined value here causes undefined behavior
2795// :113:27: error: use of undefined value here causes undefined behavior
2796// :113:27: error: use of undefined value here causes undefined behavior
2797// :113:27: error: use of undefined value here causes undefined behavior
2798// :113:27: error: use of undefined value here causes undefined behavior
2799// :113:27: error: use of undefined value here causes undefined behavior
2800// :113:27: error: use of undefined value here causes undefined behavior
2801// :113:27: error: use of undefined value here causes undefined behavior
2802// :113:27: error: use of undefined value here causes undefined behavior
2803// :113:27: error: use of undefined value here causes undefined behavior
2804// :113:27: error: use of undefined value here causes undefined behavior
2805// :113:27: error: use of undefined value here causes undefined behavior
2806// :113:27: error: use of undefined value here causes undefined behavior
2807// :113:27: error: use of undefined value here causes undefined behavior
2808// :113:27: error: use of undefined value here causes undefined behavior
2809// :113:27: error: use of undefined value here causes undefined behavior
2810// :113:27: error: use of undefined value here causes undefined behavior
2811// :113:27: error: use of undefined value here causes undefined behavior
2812// :113:27: error: use of undefined value here causes undefined behavior
2813// :113:27: error: use of undefined value here causes undefined behavior
2814// :113:27: error: use of undefined value here causes undefined behavior
2815// :113:27: error: use of undefined value here causes undefined behavior
2816// :113:27: error: use of undefined value here causes undefined behavior
2817// :113:27: error: use of undefined value here causes undefined behavior
2818// :113:27: error: use of undefined value here causes undefined behavior
2819// :113:27: error: use of undefined value here causes undefined behavior
2820// :113:27: error: use of undefined value here causes undefined behavior
2821// :113:27: error: use of undefined value here causes undefined behavior
2822// :113:27: error: use of undefined value here causes undefined behavior
2823// :113:27: error: use of undefined value here causes undefined behavior
2824// :113:27: error: use of undefined value here causes undefined behavior
2825// :113:27: error: use of undefined value here causes undefined behavior
2826// :113:27: error: use of undefined value here causes undefined behavior
2827// :113:27: error: use of undefined value here causes undefined behavior
2828// :113:27: error: use of undefined value here causes undefined behavior
2829// :113:27: error: use of undefined value here causes undefined behavior
2830// :113:27: error: use of undefined value here causes undefined behavior
2831// :113:27: error: use of undefined value here causes undefined behavior
2832// :113:27: error: use of undefined value here causes undefined behavior
2833// :113:27: error: use of undefined value here causes undefined behavior
2834// :113:27: error: use of undefined value here causes undefined behavior
2835// :113:27: error: use of undefined value here causes undefined behavior
2836// :113:27: error: use of undefined value here causes undefined behavior
2837// :113:27: error: use of undefined value here causes undefined behavior
2838// :113:27: error: use of undefined value here causes undefined behavior
2839// :113:27: error: use of undefined value here causes undefined behavior
2840// :113:27: error: use of undefined value here causes undefined behavior
2841// :113:27: error: use of undefined value here causes undefined behavior
2842// :113:27: error: use of undefined value here causes undefined behavior
2843// :113:27: error: use of undefined value here causes undefined behavior
2844// :113:27: error: use of undefined value here causes undefined behavior
2845// :113:27: error: use of undefined value here causes undefined behavior
2846// :113:27: error: use of undefined value here causes undefined behavior
2847// :113:27: error: use of undefined value here causes undefined behavior
2848// :113:27: error: use of undefined value here causes undefined behavior
2849// :113:27: error: use of undefined value here causes undefined behavior
2850// :113:27: error: use of undefined value here causes undefined behavior
2851// :113:27: error: use of undefined value here causes undefined behavior
2852// :113:27: error: use of undefined value here causes undefined behavior
2853// :113:27: error: use of undefined value here causes undefined behavior
2854// :113:27: error: use of undefined value here causes undefined behavior
2855// :113:27: error: use of undefined value here causes undefined behavior
2856// :113:27: error: use of undefined value here causes undefined behavior
2857// :113:27: error: use of undefined value here causes undefined behavior
2858// :113:27: error: use of undefined value here causes undefined behavior
2859// :113:27: error: use of undefined value here causes undefined behavior
2860// :117:22: error: use of undefined value here causes undefined behavior
2861// :117:22: error: use of undefined value here causes undefined behavior
2862// :117:22: error: use of undefined value here causes undefined behavior
2863// :117:22: error: use of undefined value here causes undefined behavior
2864// :117:22: error: use of undefined value here causes undefined behavior
2865// :117:22: error: use of undefined value here causes undefined behavior
2866// :117:22: error: use of undefined value here causes undefined behavior
2867// :117:22: error: use of undefined value here causes undefined behavior
2868// :117:22: error: use of undefined value here causes undefined behavior
2869// :117:22: error: use of undefined value here causes undefined behavior
2870// :117:22: error: use of undefined value here causes undefined behavior
2871// :117:22: error: use of undefined value here causes undefined behavior
2872// :117:22: error: use of undefined value here causes undefined behavior
2873// :117:22: error: use of undefined value here causes undefined behavior
2874// :117:22: error: use of undefined value here causes undefined behavior
2875// :117:22: error: use of undefined value here causes undefined behavior
2876// :117:22: error: use of undefined value here causes undefined behavior
2877// :117:22: error: use of undefined value here causes undefined behavior
2878// :117:22: error: use of undefined value here causes undefined behavior
2879// :117:22: error: use of undefined value here causes undefined behavior
2880// :117:22: error: use of undefined value here causes undefined behavior
2881// :117:22: error: use of undefined value here causes undefined behavior
2882// :117:22: error: use of undefined value here causes undefined behavior
2883// :117:22: error: use of undefined value here causes undefined behavior
2884// :117:22: error: use of undefined value here causes undefined behavior
2885// :117:22: error: use of undefined value here causes undefined behavior
2886// :117:22: error: use of undefined value here causes undefined behavior
2887// :117:22: error: use of undefined value here causes undefined behavior
2888// :117:22: error: use of undefined value here causes undefined behavior
2889// :117:22: error: use of undefined value here causes undefined behavior
2890// :117:22: error: use of undefined value here causes undefined behavior
2891// :117:22: error: use of undefined value here causes undefined behavior
2892// :117:22: error: use of undefined value here causes undefined behavior
2893// :117:22: error: use of undefined value here causes undefined behavior
2894// :117:22: error: use of undefined value here causes undefined behavior
2895// :117:22: error: use of undefined value here causes undefined behavior
2896// :117:22: error: use of undefined value here causes undefined behavior
2897// :117:22: error: use of undefined value here causes undefined behavior
2898// :117:22: error: use of undefined value here causes undefined behavior
2899// :117:22: error: use of undefined value here causes undefined behavior
2900// :117:22: error: use of undefined value here causes undefined behavior
2901// :117:22: error: use of undefined value here causes undefined behavior
2902// :117:22: error: use of undefined value here causes undefined behavior
2903// :117:22: error: use of undefined value here causes undefined behavior
2904// :117:22: error: use of undefined value here causes undefined behavior
2905// :117:22: error: use of undefined value here causes undefined behavior
2906// :117:22: error: use of undefined value here causes undefined behavior
2907// :117:22: error: use of undefined value here causes undefined behavior
2908// :117:22: error: use of undefined value here causes undefined behavior
2909// :117:22: error: use of undefined value here causes undefined behavior
2910// :117:22: error: use of undefined value here causes undefined behavior
2911// :117:22: error: use of undefined value here causes undefined behavior
2912// :117:22: error: use of undefined value here causes undefined behavior
2913// :117:22: error: use of undefined value here causes undefined behavior
2914// :117:22: error: use of undefined value here causes undefined behavior
2915// :117:22: error: use of undefined value here causes undefined behavior
2916// :117:22: error: use of undefined value here causes undefined behavior
2917// :117:22: error: use of undefined value here causes undefined behavior
2918// :117:22: error: use of undefined value here causes undefined behavior
2919// :117:22: error: use of undefined value here causes undefined behavior
2920// :117:22: error: use of undefined value here causes undefined behavior
2921// :117:22: error: use of undefined value here causes undefined behavior
2922// :117:22: error: use of undefined value here causes undefined behavior
2923// :117:22: error: use of undefined value here causes undefined behavior
2924// :117:22: error: use of undefined value here causes undefined behavior
2925// :117:22: error: use of undefined value here causes undefined behavior
2926// :117:22: error: use of undefined value here causes undefined behavior
2927// :117:22: error: use of undefined value here causes undefined behavior
2928// :117:22: error: use of undefined value here causes undefined behavior
2929// :117:22: error: use of undefined value here causes undefined behavior
2930// :117:22: error: use of undefined value here causes undefined behavior
2931// :117:22: error: use of undefined value here causes undefined behavior
2932// :117:22: error: use of undefined value here causes undefined behavior
2933// :117:22: error: use of undefined value here causes undefined behavior
2934// :117:22: error: use of undefined value here causes undefined behavior
2935// :117:22: error: use of undefined value here causes undefined behavior
2936// :117:22: error: use of undefined value here causes undefined behavior
2937// :117:22: error: use of undefined value here causes undefined behavior
2938// :117:22: error: use of undefined value here causes undefined behavior
2939// :117:22: error: use of undefined value here causes undefined behavior
2940// :117:22: error: use of undefined value here causes undefined behavior
2941// :117:22: error: use of undefined value here causes undefined behavior
2942// :117:22: error: use of undefined value here causes undefined behavior
2943// :117:22: error: use of undefined value here causes undefined behavior
2944// :117:22: error: use of undefined value here causes undefined behavior
2945// :117:22: error: use of undefined value here causes undefined behavior
2946// :117:22: error: use of undefined value here causes undefined behavior
2947// :117:22: error: use of undefined value here causes undefined behavior
2948// :117:22: error: use of undefined value here causes undefined behavior
2949// :117:22: error: use of undefined value here causes undefined behavior
2950// :117:22: error: use of undefined value here causes undefined behavior
2951// :117:22: error: use of undefined value here causes undefined behavior
2952// :117:22: error: use of undefined value here causes undefined behavior
2953// :117:22: error: use of undefined value here causes undefined behavior
2954// :117:22: error: use of undefined value here causes undefined behavior
2955// :117:22: error: use of undefined value here causes undefined behavior
2956// :117:22: error: use of undefined value here causes undefined behavior
2957// :117:22: error: use of undefined value here causes undefined behavior
2958// :117:22: error: use of undefined value here causes undefined behavior
2959// :117:22: error: use of undefined value here causes undefined behavior
2960// :117:22: error: use of undefined value here causes undefined behavior
2961// :117:22: error: use of undefined value here causes undefined behavior
2962// :117:22: error: use of undefined value here causes undefined behavior
2963// :117:22: error: use of undefined value here causes undefined behavior
2964// :117:22: error: use of undefined value here causes undefined behavior
2965// :117:22: error: use of undefined value here causes undefined behavior
2966// :117:22: error: use of undefined value here causes undefined behavior
2967// :117:22: error: use of undefined value here causes undefined behavior
2968// :117:22: error: use of undefined value here causes undefined behavior
2969// :117:22: error: use of undefined value here causes undefined behavior
2970// :117:22: error: use of undefined value here causes undefined behavior
2971// :117:22: error: use of undefined value here causes undefined behavior
2972// :117:22: error: use of undefined value here causes undefined behavior
2973// :117:22: error: use of undefined value here causes undefined behavior
2974// :117:22: error: use of undefined value here causes undefined behavior
2975// :117:22: error: use of undefined value here causes undefined behavior
2976// :117:22: error: use of undefined value here causes undefined behavior
2977// :117:22: error: use of undefined value here causes undefined behavior
2978// :117:22: error: use of undefined value here causes undefined behavior
2979// :117:22: error: use of undefined value here causes undefined behavior
2980// :117:22: error: use of undefined value here causes undefined behavior
2981// :117:22: error: use of undefined value here causes undefined behavior
2982// :117:22: error: use of undefined value here causes undefined behavior
2983// :117:22: error: use of undefined value here causes undefined behavior
2984// :117:22: error: use of undefined value here causes undefined behavior
2985// :117:22: error: use of undefined value here causes undefined behavior
2986// :117:22: error: use of undefined value here causes undefined behavior
2987// :117:22: error: use of undefined value here causes undefined behavior
2988// :117:22: error: use of undefined value here causes undefined behavior
2989// :117:22: error: use of undefined value here causes undefined behavior
2990// :117:22: error: use of undefined value here causes undefined behavior
2991// :117:22: error: use of undefined value here causes undefined behavior
2992// :117:22: error: use of undefined value here causes undefined behavior
2993// :117:22: error: use of undefined value here causes undefined behavior
2994// :117:22: error: use of undefined value here causes undefined behavior
2995// :117:22: error: use of undefined value here causes undefined behavior
2996// :117:22: error: use of undefined value here causes undefined behavior
2997// :117:22: error: use of undefined value here causes undefined behavior
2998// :117:22: error: use of undefined value here causes undefined behavior
2999// :117:22: error: use of undefined value here causes undefined behavior
3000// :117:22: error: use of undefined value here causes undefined behavior
3001// :117:22: error: use of undefined value here causes undefined behavior
3002// :117:22: error: use of undefined value here causes undefined behavior
3003// :117:22: error: use of undefined value here causes undefined behavior
3004// :117:22: error: use of undefined value here causes undefined behavior
3005// :117:22: error: use of undefined value here causes undefined behavior
3006// :117:22: error: use of undefined value here causes undefined behavior
3007// :117:22: error: use of undefined value here causes undefined behavior
3008// :117:22: error: use of undefined value here causes undefined behavior
3009// :117:22: error: use of undefined value here causes undefined behavior
3010// :117:22: error: use of undefined value here causes undefined behavior
3011// :117:22: error: use of undefined value here causes undefined behavior
3012// :117:22: error: use of undefined value here causes undefined behavior
3013// :117:22: error: use of undefined value here causes undefined behavior
3014// :117:22: error: use of undefined value here causes undefined behavior
3015// :117:22: error: use of undefined value here causes undefined behavior
3016// :117:22: error: use of undefined value here causes undefined behavior
3017// :117:22: error: use of undefined value here causes undefined behavior
3018// :117:22: error: use of undefined value here causes undefined behavior
3019// :117:22: error: use of undefined value here causes undefined behavior
3020// :117:22: error: use of undefined value here causes undefined behavior
3021// :117:22: error: use of undefined value here causes undefined behavior
3022// :117:22: error: use of undefined value here causes undefined behavior
3023// :117:22: error: use of undefined value here causes undefined behavior
3024// :117:22: error: use of undefined value here causes undefined behavior
3025// :117:22: error: use of undefined value here causes undefined behavior
3026// :117:22: error: use of undefined value here causes undefined behavior
3027// :117:22: error: use of undefined value here causes undefined behavior
3028// :117:22: error: use of undefined value here causes undefined behavior
3029// :117:22: error: use of undefined value here causes undefined behavior
3030// :117:22: error: use of undefined value here causes undefined behavior
3031// :117:22: error: use of undefined value here causes undefined behavior
3032// :117:22: error: use of undefined value here causes undefined behavior
3033// :117:22: error: use of undefined value here causes undefined behavior
3034// :117:22: error: use of undefined value here causes undefined behavior
3035// :117:22: error: use of undefined value here causes undefined behavior
3036// :117:22: error: use of undefined value here causes undefined behavior
3037// :117:22: error: use of undefined value here causes undefined behavior
3038// :117:22: error: use of undefined value here causes undefined behavior
3039// :117:22: error: use of undefined value here causes undefined behavior
3040// :117:22: error: use of undefined value here causes undefined behavior
3041// :117:22: error: use of undefined value here causes undefined behavior
3042// :117:22: error: use of undefined value here causes undefined behavior
3043// :117:22: error: use of undefined value here causes undefined behavior
3044// :117:22: error: use of undefined value here causes undefined behavior
3045// :117:22: error: use of undefined value here causes undefined behavior
3046// :117:22: error: use of undefined value here causes undefined behavior
3047// :117:22: error: use of undefined value here causes undefined behavior
3048// :117:22: error: use of undefined value here causes undefined behavior
3049// :117:22: error: use of undefined value here causes undefined behavior
3050// :117:22: error: use of undefined value here causes undefined behavior
3051// :117:22: error: use of undefined value here causes undefined behavior
3052// :117:22: error: use of undefined value here causes undefined behavior
3053// :117:22: error: use of undefined value here causes undefined behavior
3054// :117:22: error: use of undefined value here causes undefined behavior
3055// :117:22: error: use of undefined value here causes undefined behavior
3056// :117:22: error: use of undefined value here causes undefined behavior
3057// :117:22: error: use of undefined value here causes undefined behavior
3058// :117:22: error: use of undefined value here causes undefined behavior
3059// :117:22: error: use of undefined value here causes undefined behavior
3060// :117:22: error: use of undefined value here causes undefined behavior
3061// :117:22: error: use of undefined value here causes undefined behavior
3062// :117:22: error: use of undefined value here causes undefined behavior
3063// :117:22: error: use of undefined value here causes undefined behavior
3064// :117:22: error: use of undefined value here causes undefined behavior
3065// :117:22: error: use of undefined value here causes undefined behavior
3066// :117:22: error: use of undefined value here causes undefined behavior
3067// :117:22: error: use of undefined value here causes undefined behavior
3068// :117:22: error: use of undefined value here causes undefined behavior
3069// :117:22: error: use of undefined value here causes undefined behavior
3070// :117:22: error: use of undefined value here causes undefined behavior
3071// :117:22: error: use of undefined value here causes undefined behavior
3072// :117:22: error: use of undefined value here causes undefined behavior
3073// :117:22: error: use of undefined value here causes undefined behavior
3074// :117:22: error: use of undefined value here causes undefined behavior
3075// :117:22: error: use of undefined value here causes undefined behavior
3076// :117:22: error: use of undefined value here causes undefined behavior
3077// :117:22: error: use of undefined value here causes undefined behavior
3078// :117:22: error: use of undefined value here causes undefined behavior
3079// :117:22: error: use of undefined value here causes undefined behavior
3080// :117:22: error: use of undefined value here causes undefined behavior
3081// :117:22: error: use of undefined value here causes undefined behavior
3082// :117:22: error: use of undefined value here causes undefined behavior
3083// :117:22: error: use of undefined value here causes undefined behavior
3084// :117:22: error: use of undefined value here causes undefined behavior
3085// :117:22: error: use of undefined value here causes undefined behavior
3086// :117:22: error: use of undefined value here causes undefined behavior
3087// :117:22: error: use of undefined value here causes undefined behavior
3088// :117:22: error: use of undefined value here causes undefined behavior
3089// :117:22: error: use of undefined value here causes undefined behavior
3090// :117:22: error: use of undefined value here causes undefined behavior
3091// :117:22: error: use of undefined value here causes undefined behavior
3092// :117:22: error: use of undefined value here causes undefined behavior
3093// :117:22: error: use of undefined value here causes undefined behavior
3094// :117:22: error: use of undefined value here causes undefined behavior
3095// :117:22: error: use of undefined value here causes undefined behavior
3096// :117:22: error: use of undefined value here causes undefined behavior
3097// :117:22: error: use of undefined value here causes undefined behavior
3098// :117:22: error: use of undefined value here causes undefined behavior
3099// :117:22: error: use of undefined value here causes undefined behavior
3100// :117:22: error: use of undefined value here causes undefined behavior
3101// :117:22: error: use of undefined value here causes undefined behavior
3102// :121:22: error: use of undefined value here causes undefined behavior
3103// :121:22: error: use of undefined value here causes undefined behavior
3104// :121:22: error: use of undefined value here causes undefined behavior
3105// :121:22: error: use of undefined value here causes undefined behavior
3106// :121:22: error: use of undefined value here causes undefined behavior
3107// :121:22: error: use of undefined value here causes undefined behavior
3108// :121:22: error: use of undefined value here causes undefined behavior
3109// :121:22: error: use of undefined value here causes undefined behavior
3110// :121:22: error: use of undefined value here causes undefined behavior
3111// :121:22: error: use of undefined value here causes undefined behavior
3112// :121:22: error: use of undefined value here causes undefined behavior
3113// :121:22: error: use of undefined value here causes undefined behavior
3114// :121:22: error: use of undefined value here causes undefined behavior
3115// :121:22: error: use of undefined value here causes undefined behavior
3116// :121:22: error: use of undefined value here causes undefined behavior
3117// :121:22: error: use of undefined value here causes undefined behavior
3118// :121:22: error: use of undefined value here causes undefined behavior
3119// :121:22: error: use of undefined value here causes undefined behavior
3120// :121:22: error: use of undefined value here causes undefined behavior
3121// :121:22: error: use of undefined value here causes undefined behavior
3122// :121:22: error: use of undefined value here causes undefined behavior
3123// :121:22: error: use of undefined value here causes undefined behavior
3124// :121:22: error: use of undefined value here causes undefined behavior
3125// :121:22: error: use of undefined value here causes undefined behavior
3126// :121:22: error: use of undefined value here causes undefined behavior
3127// :121:22: error: use of undefined value here causes undefined behavior
3128// :121:22: error: use of undefined value here causes undefined behavior
3129// :121:22: error: use of undefined value here causes undefined behavior
3130// :121:22: error: use of undefined value here causes undefined behavior
3131// :121:22: error: use of undefined value here causes undefined behavior
3132// :121:22: error: use of undefined value here causes undefined behavior
3133// :121:22: error: use of undefined value here causes undefined behavior
3134// :121:22: error: use of undefined value here causes undefined behavior
3135// :121:22: error: use of undefined value here causes undefined behavior
3136// :121:22: error: use of undefined value here causes undefined behavior
3137// :121:22: error: use of undefined value here causes undefined behavior
3138// :121:22: error: use of undefined value here causes undefined behavior
3139// :121:22: error: use of undefined value here causes undefined behavior
3140// :121:22: error: use of undefined value here causes undefined behavior
3141// :121:22: error: use of undefined value here causes undefined behavior
3142// :121:22: error: use of undefined value here causes undefined behavior
3143// :121:22: error: use of undefined value here causes undefined behavior
3144// :121:22: error: use of undefined value here causes undefined behavior
3145// :121:22: error: use of undefined value here causes undefined behavior
3146// :121:22: error: use of undefined value here causes undefined behavior
3147// :121:22: error: use of undefined value here causes undefined behavior
3148// :121:22: error: use of undefined value here causes undefined behavior
3149// :121:22: error: use of undefined value here causes undefined behavior
3150// :121:22: error: use of undefined value here causes undefined behavior
3151// :121:22: error: use of undefined value here causes undefined behavior
3152// :121:22: error: use of undefined value here causes undefined behavior
3153// :121:22: error: use of undefined value here causes undefined behavior
3154// :121:22: error: use of undefined value here causes undefined behavior
3155// :121:22: error: use of undefined value here causes undefined behavior
3156// :121:22: error: use of undefined value here causes undefined behavior
3157// :121:22: error: use of undefined value here causes undefined behavior
3158// :121:22: error: use of undefined value here causes undefined behavior
3159// :121:22: error: use of undefined value here causes undefined behavior
3160// :121:22: error: use of undefined value here causes undefined behavior
3161// :121:22: error: use of undefined value here causes undefined behavior
3162// :121:22: error: use of undefined value here causes undefined behavior
3163// :121:22: error: use of undefined value here causes undefined behavior
3164// :121:22: error: use of undefined value here causes undefined behavior
3165// :121:22: error: use of undefined value here causes undefined behavior
3166// :121:22: error: use of undefined value here causes undefined behavior
3167// :121:22: error: use of undefined value here causes undefined behavior
3168// :121:22: error: use of undefined value here causes undefined behavior
3169// :121:22: error: use of undefined value here causes undefined behavior
3170// :121:22: error: use of undefined value here causes undefined behavior
3171// :121:22: error: use of undefined value here causes undefined behavior
3172// :121:22: error: use of undefined value here causes undefined behavior
3173// :121:22: error: use of undefined value here causes undefined behavior
3174// :121:22: error: use of undefined value here causes undefined behavior
3175// :121:22: error: use of undefined value here causes undefined behavior
3176// :121:22: error: use of undefined value here causes undefined behavior
3177// :121:22: error: use of undefined value here causes undefined behavior
3178// :121:22: error: use of undefined value here causes undefined behavior
3179// :121:22: error: use of undefined value here causes undefined behavior
3180// :121:22: error: use of undefined value here causes undefined behavior
3181// :121:22: error: use of undefined value here causes undefined behavior
3182// :121:22: error: use of undefined value here causes undefined behavior
3183// :121:22: error: use of undefined value here causes undefined behavior
3184// :121:22: error: use of undefined value here causes undefined behavior
3185// :121:22: error: use of undefined value here causes undefined behavior
3186// :121:22: error: use of undefined value here causes undefined behavior
3187// :121:22: error: use of undefined value here causes undefined behavior
3188// :121:22: error: use of undefined value here causes undefined behavior
3189// :121:22: error: use of undefined value here causes undefined behavior
3190// :121:22: error: use of undefined value here causes undefined behavior
3191// :121:22: error: use of undefined value here causes undefined behavior
3192// :121:22: error: use of undefined value here causes undefined behavior
3193// :121:22: error: use of undefined value here causes undefined behavior
3194// :121:22: error: use of undefined value here causes undefined behavior
3195// :121:22: error: use of undefined value here causes undefined behavior
3196// :121:22: error: use of undefined value here causes undefined behavior
3197// :121:22: error: use of undefined value here causes undefined behavior
3198// :121:22: error: use of undefined value here causes undefined behavior
3199// :121:22: error: use of undefined value here causes undefined behavior
3200// :121:22: error: use of undefined value here causes undefined behavior
3201// :121:22: error: use of undefined value here causes undefined behavior
3202// :121:22: error: use of undefined value here causes undefined behavior
3203// :121:22: error: use of undefined value here causes undefined behavior
3204// :121:22: error: use of undefined value here causes undefined behavior
3205// :121:22: error: use of undefined value here causes undefined behavior
3206// :121:22: error: use of undefined value here causes undefined behavior
3207// :121:22: error: use of undefined value here causes undefined behavior
3208// :121:22: error: use of undefined value here causes undefined behavior
3209// :121:22: error: use of undefined value here causes undefined behavior
3210// :121:22: error: use of undefined value here causes undefined behavior
3211// :121:22: error: use of undefined value here causes undefined behavior
3212// :121:22: error: use of undefined value here causes undefined behavior
3213// :121:22: error: use of undefined value here causes undefined behavior
3214// :121:22: error: use of undefined value here causes undefined behavior
3215// :121:22: error: use of undefined value here causes undefined behavior
3216// :121:22: error: use of undefined value here causes undefined behavior
3217// :121:22: error: use of undefined value here causes undefined behavior
3218// :121:22: error: use of undefined value here causes undefined behavior
3219// :121:22: error: use of undefined value here causes undefined behavior
3220// :121:22: error: use of undefined value here causes undefined behavior
3221// :121:22: error: use of undefined value here causes undefined behavior
3222// :121:22: error: use of undefined value here causes undefined behavior
3223// :121:22: error: use of undefined value here causes undefined behavior
3224// :121:22: error: use of undefined value here causes undefined behavior
3225// :121:22: error: use of undefined value here causes undefined behavior
3226// :121:22: error: use of undefined value here causes undefined behavior
3227// :121:22: error: use of undefined value here causes undefined behavior
3228// :121:22: error: use of undefined value here causes undefined behavior
3229// :121:22: error: use of undefined value here causes undefined behavior
3230// :121:22: error: use of undefined value here causes undefined behavior
3231// :121:22: error: use of undefined value here causes undefined behavior
3232// :121:22: error: use of undefined value here causes undefined behavior
3233// :121:22: error: use of undefined value here causes undefined behavior
3234// :121:22: error: use of undefined value here causes undefined behavior
3235// :121:22: error: use of undefined value here causes undefined behavior
3236// :121:22: error: use of undefined value here causes undefined behavior
3237// :121:22: error: use of undefined value here causes undefined behavior
3238// :121:22: error: use of undefined value here causes undefined behavior
3239// :121:22: error: use of undefined value here causes undefined behavior
3240// :121:22: error: use of undefined value here causes undefined behavior
3241// :121:22: error: use of undefined value here causes undefined behavior
3242// :121:22: error: use of undefined value here causes undefined behavior
3243// :121:22: error: use of undefined value here causes undefined behavior
3244// :121:22: error: use of undefined value here causes undefined behavior
3245// :121:22: error: use of undefined value here causes undefined behavior
3246// :121:22: error: use of undefined value here causes undefined behavior
3247// :121:22: error: use of undefined value here causes undefined behavior
3248// :121:22: error: use of undefined value here causes undefined behavior
3249// :121:22: error: use of undefined value here causes undefined behavior
3250// :121:22: error: use of undefined value here causes undefined behavior
3251// :121:22: error: use of undefined value here causes undefined behavior
3252// :121:22: error: use of undefined value here causes undefined behavior
3253// :121:22: error: use of undefined value here causes undefined behavior
3254// :121:22: error: use of undefined value here causes undefined behavior
3255// :121:22: error: use of undefined value here causes undefined behavior
3256// :121:22: error: use of undefined value here causes undefined behavior
3257// :121:22: error: use of undefined value here causes undefined behavior
3258// :121:22: error: use of undefined value here causes undefined behavior
3259// :121:22: error: use of undefined value here causes undefined behavior
3260// :121:22: error: use of undefined value here causes undefined behavior
3261// :121:22: error: use of undefined value here causes undefined behavior
3262// :121:22: error: use of undefined value here causes undefined behavior
3263// :121:22: error: use of undefined value here causes undefined behavior
3264// :121:22: error: use of undefined value here causes undefined behavior
3265// :121:22: error: use of undefined value here causes undefined behavior
3266// :121:22: error: use of undefined value here causes undefined behavior
3267// :121:22: error: use of undefined value here causes undefined behavior
3268// :121:22: error: use of undefined value here causes undefined behavior
3269// :121:22: error: use of undefined value here causes undefined behavior
3270// :121:22: error: use of undefined value here causes undefined behavior
3271// :121:22: error: use of undefined value here causes undefined behavior
3272// :121:22: error: use of undefined value here causes undefined behavior
3273// :121:22: error: use of undefined value here causes undefined behavior
3274// :121:22: error: use of undefined value here causes undefined behavior
3275// :121:22: error: use of undefined value here causes undefined behavior
3276// :121:22: error: use of undefined value here causes undefined behavior
3277// :121:22: error: use of undefined value here causes undefined behavior
3278// :121:22: error: use of undefined value here causes undefined behavior
3279// :121:22: error: use of undefined value here causes undefined behavior
3280// :121:22: error: use of undefined value here causes undefined behavior
3281// :121:22: error: use of undefined value here causes undefined behavior
3282// :121:22: error: use of undefined value here causes undefined behavior
3283// :121:22: error: use of undefined value here causes undefined behavior
3284// :121:22: error: use of undefined value here causes undefined behavior
3285// :121:22: error: use of undefined value here causes undefined behavior
3286// :121:22: error: use of undefined value here causes undefined behavior
3287// :121:22: error: use of undefined value here causes undefined behavior
3288// :121:22: error: use of undefined value here causes undefined behavior
3289// :121:22: error: use of undefined value here causes undefined behavior
3290// :121:22: error: use of undefined value here causes undefined behavior
3291// :121:22: error: use of undefined value here causes undefined behavior
3292// :121:22: error: use of undefined value here causes undefined behavior
3293// :121:22: error: use of undefined value here causes undefined behavior
3294// :121:22: error: use of undefined value here causes undefined behavior
3295// :121:22: error: use of undefined value here causes undefined behavior
3296// :121:22: error: use of undefined value here causes undefined behavior
3297// :121:22: error: use of undefined value here causes undefined behavior
3298// :121:22: error: use of undefined value here causes undefined behavior
3299// :121:22: error: use of undefined value here causes undefined behavior
3300// :121:22: error: use of undefined value here causes undefined behavior
3301// :121:22: error: use of undefined value here causes undefined behavior
3302// :121:22: error: use of undefined value here causes undefined behavior
3303// :121:22: error: use of undefined value here causes undefined behavior
3304// :121:22: error: use of undefined value here causes undefined behavior
3305// :121:22: error: use of undefined value here causes undefined behavior
3306// :121:22: error: use of undefined value here causes undefined behavior
3307// :121:22: error: use of undefined value here causes undefined behavior
3308// :121:22: error: use of undefined value here causes undefined behavior
3309// :121:22: error: use of undefined value here causes undefined behavior
3310// :121:22: error: use of undefined value here causes undefined behavior
3311// :121:22: error: use of undefined value here causes undefined behavior
3312// :121:22: error: use of undefined value here causes undefined behavior
3313// :121:22: error: use of undefined value here causes undefined behavior
3314// :121:22: error: use of undefined value here causes undefined behavior
3315// :121:22: error: use of undefined value here causes undefined behavior
3316// :121:22: error: use of undefined value here causes undefined behavior
3317// :121:22: error: use of undefined value here causes undefined behavior
3318// :121:22: error: use of undefined value here causes undefined behavior
3319// :121:22: error: use of undefined value here causes undefined behavior
3320// :121:22: error: use of undefined value here causes undefined behavior
3321// :121:22: error: use of undefined value here causes undefined behavior
3322// :121:22: error: use of undefined value here causes undefined behavior
3323// :121:22: error: use of undefined value here causes undefined behavior
3324// :121:22: error: use of undefined value here causes undefined behavior
3325// :121:22: error: use of undefined value here causes undefined behavior
3326// :121:22: error: use of undefined value here causes undefined behavior
3327// :121:22: error: use of undefined value here causes undefined behavior
3328// :121:22: error: use of undefined value here causes undefined behavior
3329// :121:22: error: use of undefined value here causes undefined behavior
3330// :121:22: error: use of undefined value here causes undefined behavior
3331// :121:22: error: use of undefined value here causes undefined behavior
3332// :121:22: error: use of undefined value here causes undefined behavior
3333// :121:22: error: use of undefined value here causes undefined behavior
3334// :121:22: error: use of undefined value here causes undefined behavior
3335// :121:22: error: use of undefined value here causes undefined behavior
3336// :121:22: error: use of undefined value here causes undefined behavior
3337// :121:22: error: use of undefined value here causes undefined behavior
3338// :121:22: error: use of undefined value here causes undefined behavior
3339// :121:22: error: use of undefined value here causes undefined behavior
3340// :121:22: error: use of undefined value here causes undefined behavior
3341// :121:22: error: use of undefined value here causes undefined behavior
3342// :121:22: error: use of undefined value here causes undefined behavior
3343// :121:22: error: use of undefined value here causes undefined behavior
3344// :127:17: error: use of undefined value here causes undefined behavior
3345// :127:17: error: use of undefined value here causes undefined behavior
3346// :127:17: error: use of undefined value here causes undefined behavior
3347// :127:17: error: use of undefined value here causes undefined behavior
3348// :127:17: error: use of undefined value here causes undefined behavior
3349// :127:17: error: use of undefined value here causes undefined behavior
3350// :127:17: error: use of undefined value here causes undefined behavior
3351// :127:17: error: use of undefined value here causes undefined behavior
3352// :127:17: error: use of undefined value here causes undefined behavior
3353// :127:17: error: use of undefined value here causes undefined behavior
3354// :127:17: error: use of undefined value here causes undefined behavior
3355// :127:17: error: use of undefined value here causes undefined behavior
3356// :127:17: error: use of undefined value here causes undefined behavior
3357// :127:17: error: use of undefined value here causes undefined behavior
3358// :127:17: error: use of undefined value here causes undefined behavior
3359// :127:17: error: use of undefined value here causes undefined behavior
3360// :127:17: error: use of undefined value here causes undefined behavior
3361// :127:17: error: use of undefined value here causes undefined behavior
3362// :127:17: error: use of undefined value here causes undefined behavior
3363// :127:17: error: use of undefined value here causes undefined behavior
3364// :127:17: error: use of undefined value here causes undefined behavior
3365// :127:17: error: use of undefined value here causes undefined behavior
3366// :127:17: error: use of undefined value here causes undefined behavior
3367// :127:17: error: use of undefined value here causes undefined behavior
3368// :127:17: error: use of undefined value here causes undefined behavior
3369// :127:17: error: use of undefined value here causes undefined behavior
3370// :127:17: error: use of undefined value here causes undefined behavior
3371// :127:17: error: use of undefined value here causes undefined behavior
3372// :127:17: error: use of undefined value here causes undefined behavior
3373// :127:17: error: use of undefined value here causes undefined behavior
3374// :127:17: error: use of undefined value here causes undefined behavior
3375// :127:17: error: use of undefined value here causes undefined behavior
3376// :127:17: error: use of undefined value here causes undefined behavior
3377// :127:17: error: use of undefined value here causes undefined behavior
3378// :127:17: error: use of undefined value here causes undefined behavior
3379// :127:17: error: use of undefined value here causes undefined behavior
3380// :127:17: error: use of undefined value here causes undefined behavior
3381// :127:17: error: use of undefined value here causes undefined behavior
3382// :127:17: error: use of undefined value here causes undefined behavior
3383// :127:17: error: use of undefined value here causes undefined behavior
3384// :127:17: error: use of undefined value here causes undefined behavior
3385// :127:17: error: use of undefined value here causes undefined behavior
3386// :127:17: error: use of undefined value here causes undefined behavior
3387// :127:17: error: use of undefined value here causes undefined behavior
3388// :127:17: error: use of undefined value here causes undefined behavior
3389// :127:17: error: use of undefined value here causes undefined behavior
3390// :127:17: error: use of undefined value here causes undefined behavior
3391// :127:17: error: use of undefined value here causes undefined behavior
3392// :127:17: error: use of undefined value here causes undefined behavior
3393// :127:17: error: use of undefined value here causes undefined behavior
3394// :127:17: error: use of undefined value here causes undefined behavior
3395// :127:17: error: use of undefined value here causes undefined behavior
3396// :127:17: error: use of undefined value here causes undefined behavior
3397// :127:17: error: use of undefined value here causes undefined behavior
3398// :127:17: error: use of undefined value here causes undefined behavior
3399// :127:17: error: use of undefined value here causes undefined behavior
3400// :127:17: error: use of undefined value here causes undefined behavior
3401// :127:17: error: use of undefined value here causes undefined behavior
3402// :127:17: error: use of undefined value here causes undefined behavior
3403// :127:17: error: use of undefined value here causes undefined behavior
3404// :127:17: error: use of undefined value here causes undefined behavior
3405// :127:17: error: use of undefined value here causes undefined behavior
3406// :127:17: error: use of undefined value here causes undefined behavior
3407// :127:17: error: use of undefined value here causes undefined behavior
3408// :127:17: error: use of undefined value here causes undefined behavior
3409// :127:17: error: use of undefined value here causes undefined behavior
3410// :127:17: error: use of undefined value here causes undefined behavior
3411// :127:17: error: use of undefined value here causes undefined behavior
3412// :127:17: error: use of undefined value here causes undefined behavior
3413// :127:17: error: use of undefined value here causes undefined behavior
3414// :127:17: error: use of undefined value here causes undefined behavior
3415// :127:17: error: use of undefined value here causes undefined behavior
3416// :127:17: error: use of undefined value here causes undefined behavior
3417// :127:17: error: use of undefined value here causes undefined behavior
3418// :127:17: error: use of undefined value here causes undefined behavior
3419// :127:17: error: use of undefined value here causes undefined behavior
3420// :127:17: error: use of undefined value here causes undefined behavior
3421// :127:17: error: use of undefined value here causes undefined behavior
3422// :127:17: error: use of undefined value here causes undefined behavior
3423// :127:17: error: use of undefined value here causes undefined behavior
3424// :127:17: error: use of undefined value here causes undefined behavior
3425// :127:17: error: use of undefined value here causes undefined behavior
3426// :127:17: error: use of undefined value here causes undefined behavior
3427// :127:17: error: use of undefined value here causes undefined behavior
3428// :127:17: error: use of undefined value here causes undefined behavior
3429// :127:17: error: use of undefined value here causes undefined behavior
3430// :127:17: error: use of undefined value here causes undefined behavior
3431// :127:17: error: use of undefined value here causes undefined behavior
3432// :127:17: error: use of undefined value here causes undefined behavior
3433// :127:17: error: use of undefined value here causes undefined behavior
3434// :127:17: error: use of undefined value here causes undefined behavior
3435// :127:17: error: use of undefined value here causes undefined behavior
3436// :127:17: error: use of undefined value here causes undefined behavior
3437// :127:17: error: use of undefined value here causes undefined behavior
3438// :127:17: error: use of undefined value here causes undefined behavior
3439// :127:17: error: use of undefined value here causes undefined behavior
3440// :127:17: error: use of undefined value here causes undefined behavior
3441// :127:17: error: use of undefined value here causes undefined behavior
3442// :127:17: error: use of undefined value here causes undefined behavior
3443// :127:17: error: use of undefined value here causes undefined behavior
3444// :127:17: error: use of undefined value here causes undefined behavior
3445// :127:17: error: use of undefined value here causes undefined behavior
3446// :127:17: error: use of undefined value here causes undefined behavior
3447// :127:17: error: use of undefined value here causes undefined behavior
3448// :127:17: error: use of undefined value here causes undefined behavior
3449// :127:17: error: use of undefined value here causes undefined behavior
3450// :127:17: error: use of undefined value here causes undefined behavior
3451// :127:17: error: use of undefined value here causes undefined behavior
3452// :127:17: error: use of undefined value here causes undefined behavior
3453// :127:17: error: use of undefined value here causes undefined behavior
3454// :127:17: error: use of undefined value here causes undefined behavior
3455// :127:17: error: use of undefined value here causes undefined behavior
3456// :127:17: error: use of undefined value here causes undefined behavior
3457// :127:17: error: use of undefined value here causes undefined behavior
3458// :127:17: error: use of undefined value here causes undefined behavior
3459// :127:17: error: use of undefined value here causes undefined behavior
3460// :127:17: error: use of undefined value here causes undefined behavior
3461// :127:17: error: use of undefined value here causes undefined behavior
3462// :127:17: error: use of undefined value here causes undefined behavior
3463// :127:17: error: use of undefined value here causes undefined behavior
3464// :127:17: error: use of undefined value here causes undefined behavior
3465// :127:17: error: use of undefined value here causes undefined behavior
3466// :127:17: error: use of undefined value here causes undefined behavior
3467// :127:17: error: use of undefined value here causes undefined behavior
3468// :127:17: error: use of undefined value here causes undefined behavior
3469// :127:17: error: use of undefined value here causes undefined behavior
3470// :127:17: error: use of undefined value here causes undefined behavior
3471// :127:17: error: use of undefined value here causes undefined behavior
3472// :127:17: error: use of undefined value here causes undefined behavior
3473// :127:17: error: use of undefined value here causes undefined behavior
3474// :127:17: error: use of undefined value here causes undefined behavior
3475// :127:17: error: use of undefined value here causes undefined behavior
3476// :127:17: error: use of undefined value here causes undefined behavior
3477// :127:17: error: use of undefined value here causes undefined behavior
3478// :127:17: error: use of undefined value here causes undefined behavior
3479// :127:17: error: use of undefined value here causes undefined behavior
3480// :127:17: error: use of undefined value here causes undefined behavior
3481// :127:17: error: use of undefined value here causes undefined behavior
3482// :127:17: error: use of undefined value here causes undefined behavior
3483// :127:17: error: use of undefined value here causes undefined behavior
3484// :127:17: error: use of undefined value here causes undefined behavior
3485// :127:17: error: use of undefined value here causes undefined behavior
3486// :127:17: error: use of undefined value here causes undefined behavior
3487// :127:17: error: use of undefined value here causes undefined behavior
3488// :127:17: error: use of undefined value here causes undefined behavior
3489// :127:17: error: use of undefined value here causes undefined behavior
3490// :127:17: error: use of undefined value here causes undefined behavior
3491// :127:17: error: use of undefined value here causes undefined behavior
3492// :127:17: error: use of undefined value here causes undefined behavior
3493// :127:17: error: use of undefined value here causes undefined behavior
3494// :127:17: error: use of undefined value here causes undefined behavior
3495// :127:17: error: use of undefined value here causes undefined behavior
3496// :127:17: error: use of undefined value here causes undefined behavior
3497// :127:17: error: use of undefined value here causes undefined behavior
3498// :127:21: error: use of undefined value here causes undefined behavior
3499// :127:21: error: use of undefined value here causes undefined behavior
3500// :127:21: error: use of undefined value here causes undefined behavior
3501// :127:21: error: use of undefined value here causes undefined behavior
3502// :127:21: error: use of undefined value here causes undefined behavior
3503// :127:21: error: use of undefined value here causes undefined behavior
3504// :127:21: error: use of undefined value here causes undefined behavior
3505// :127:21: error: use of undefined value here causes undefined behavior
3506// :127:21: error: use of undefined value here causes undefined behavior
3507// :127:21: error: use of undefined value here causes undefined behavior
3508// :127:21: error: use of undefined value here causes undefined behavior
3509// :127:21: error: use of undefined value here causes undefined behavior
3510// :127:21: error: use of undefined value here causes undefined behavior
3511// :127:21: error: use of undefined value here causes undefined behavior
3512// :127:21: error: use of undefined value here causes undefined behavior
3513// :127:21: error: use of undefined value here causes undefined behavior
3514// :127:21: error: use of undefined value here causes undefined behavior
3515// :127:21: error: use of undefined value here causes undefined behavior
3516// :127:21: error: use of undefined value here causes undefined behavior
3517// :127:21: error: use of undefined value here causes undefined behavior
3518// :127:21: error: use of undefined value here causes undefined behavior
3519// :127:21: error: use of undefined value here causes undefined behavior
3520// :127:21: error: use of undefined value here causes undefined behavior
3521// :127:21: error: use of undefined value here causes undefined behavior
3522// :127:21: error: use of undefined value here causes undefined behavior
3523// :127:21: error: use of undefined value here causes undefined behavior
3524// :127:21: error: use of undefined value here causes undefined behavior
3525// :127:21: error: use of undefined value here causes undefined behavior
3526// :127:21: error: use of undefined value here causes undefined behavior
3527// :127:21: error: use of undefined value here causes undefined behavior
3528// :127:21: error: use of undefined value here causes undefined behavior
3529// :127:21: error: use of undefined value here causes undefined behavior
3530// :127:21: error: use of undefined value here causes undefined behavior
3531// :127:21: error: use of undefined value here causes undefined behavior
3532// :127:21: error: use of undefined value here causes undefined behavior
3533// :127:21: error: use of undefined value here causes undefined behavior
3534// :127:21: error: use of undefined value here causes undefined behavior
3535// :127:21: error: use of undefined value here causes undefined behavior
3536// :127:21: error: use of undefined value here causes undefined behavior
3537// :127:21: error: use of undefined value here causes undefined behavior
3538// :127:21: error: use of undefined value here causes undefined behavior
3539// :127:21: error: use of undefined value here causes undefined behavior
3540// :127:21: error: use of undefined value here causes undefined behavior
3541// :127:21: error: use of undefined value here causes undefined behavior
3542// :127:21: error: use of undefined value here causes undefined behavior
3543// :127:21: error: use of undefined value here causes undefined behavior
3544// :127:21: error: use of undefined value here causes undefined behavior
3545// :127:21: error: use of undefined value here causes undefined behavior
3546// :127:21: error: use of undefined value here causes undefined behavior
3547// :127:21: error: use of undefined value here causes undefined behavior
3548// :127:21: error: use of undefined value here causes undefined behavior
3549// :127:21: error: use of undefined value here causes undefined behavior
3550// :127:21: error: use of undefined value here causes undefined behavior
3551// :127:21: error: use of undefined value here causes undefined behavior
3552// :127:21: error: use of undefined value here causes undefined behavior
3553// :127:21: error: use of undefined value here causes undefined behavior
3554// :127:21: error: use of undefined value here causes undefined behavior
3555// :127:21: error: use of undefined value here causes undefined behavior
3556// :127:21: error: use of undefined value here causes undefined behavior
3557// :127:21: error: use of undefined value here causes undefined behavior
3558// :127:21: error: use of undefined value here causes undefined behavior
3559// :127:21: error: use of undefined value here causes undefined behavior
3560// :127:21: error: use of undefined value here causes undefined behavior
3561// :127:21: error: use of undefined value here causes undefined behavior
3562// :127:21: error: use of undefined value here causes undefined behavior
3563// :127:21: error: use of undefined value here causes undefined behavior
3564// :127:21: error: use of undefined value here causes undefined behavior
3565// :127:21: error: use of undefined value here causes undefined behavior
3566// :127:21: error: use of undefined value here causes undefined behavior
3567// :127:21: error: use of undefined value here causes undefined behavior
3568// :127:21: error: use of undefined value here causes undefined behavior
3569// :127:21: error: use of undefined value here causes undefined behavior
3570// :127:21: error: use of undefined value here causes undefined behavior
3571// :127:21: error: use of undefined value here causes undefined behavior
3572// :127:21: error: use of undefined value here causes undefined behavior
3573// :127:21: error: use of undefined value here causes undefined behavior
3574// :127:21: error: use of undefined value here causes undefined behavior
3575// :127:21: error: use of undefined value here causes undefined behavior
3576// :127:21: error: use of undefined value here causes undefined behavior
3577// :127:21: error: use of undefined value here causes undefined behavior
3578// :127:21: error: use of undefined value here causes undefined behavior
3579// :127:21: error: use of undefined value here causes undefined behavior
3580// :127:21: error: use of undefined value here causes undefined behavior
3581// :127:21: error: use of undefined value here causes undefined behavior
3582// :127:21: error: use of undefined value here causes undefined behavior
3583// :127:21: error: use of undefined value here causes undefined behavior
3584// :127:21: error: use of undefined value here causes undefined behavior
3585// :127:21: error: use of undefined value here causes undefined behavior
3586// :131:27: error: use of undefined value here causes undefined behavior
3587// :131:27: error: use of undefined value here causes undefined behavior
3588// :131:27: error: use of undefined value here causes undefined behavior
3589// :131:27: error: use of undefined value here causes undefined behavior
3590// :131:27: error: use of undefined value here causes undefined behavior
3591// :131:27: error: use of undefined value here causes undefined behavior
3592// :131:27: error: use of undefined value here causes undefined behavior
3593// :131:27: error: use of undefined value here causes undefined behavior
3594// :131:27: error: use of undefined value here causes undefined behavior
3595// :131:27: error: use of undefined value here causes undefined behavior
3596// :131:27: error: use of undefined value here causes undefined behavior
3597// :131:27: error: use of undefined value here causes undefined behavior
3598// :131:27: error: use of undefined value here causes undefined behavior
3599// :131:27: error: use of undefined value here causes undefined behavior
3600// :131:27: error: use of undefined value here causes undefined behavior
3601// :131:27: error: use of undefined value here causes undefined behavior
3602// :131:27: error: use of undefined value here causes undefined behavior
3603// :131:27: error: use of undefined value here causes undefined behavior
3604// :131:27: error: use of undefined value here causes undefined behavior
3605// :131:27: error: use of undefined value here causes undefined behavior
3606// :131:27: error: use of undefined value here causes undefined behavior
3607// :131:27: error: use of undefined value here causes undefined behavior
3608// :131:27: error: use of undefined value here causes undefined behavior
3609// :131:27: error: use of undefined value here causes undefined behavior
3610// :131:27: error: use of undefined value here causes undefined behavior
3611// :131:27: error: use of undefined value here causes undefined behavior
3612// :131:27: error: use of undefined value here causes undefined behavior
3613// :131:27: error: use of undefined value here causes undefined behavior
3614// :131:27: error: use of undefined value here causes undefined behavior
3615// :131:27: error: use of undefined value here causes undefined behavior
3616// :131:27: error: use of undefined value here causes undefined behavior
3617// :131:27: error: use of undefined value here causes undefined behavior
3618// :131:27: error: use of undefined value here causes undefined behavior
3619// :131:27: error: use of undefined value here causes undefined behavior
3620// :131:27: error: use of undefined value here causes undefined behavior
3621// :131:27: error: use of undefined value here causes undefined behavior
3622// :131:27: error: use of undefined value here causes undefined behavior
3623// :131:27: error: use of undefined value here causes undefined behavior
3624// :131:27: error: use of undefined value here causes undefined behavior
3625// :131:27: error: use of undefined value here causes undefined behavior
3626// :131:27: error: use of undefined value here causes undefined behavior
3627// :131:27: error: use of undefined value here causes undefined behavior
3628// :131:27: error: use of undefined value here causes undefined behavior
3629// :131:27: error: use of undefined value here causes undefined behavior
3630// :131:27: error: use of undefined value here causes undefined behavior
3631// :131:27: error: use of undefined value here causes undefined behavior
3632// :131:27: error: use of undefined value here causes undefined behavior
3633// :131:27: error: use of undefined value here causes undefined behavior
3634// :131:27: error: use of undefined value here causes undefined behavior
3635// :131:27: error: use of undefined value here causes undefined behavior
3636// :131:27: error: use of undefined value here causes undefined behavior
3637// :131:27: error: use of undefined value here causes undefined behavior
3638// :131:27: error: use of undefined value here causes undefined behavior
3639// :131:27: error: use of undefined value here causes undefined behavior
3640// :131:27: error: use of undefined value here causes undefined behavior
3641// :131:27: error: use of undefined value here causes undefined behavior
3642// :131:27: error: use of undefined value here causes undefined behavior
3643// :131:27: error: use of undefined value here causes undefined behavior
3644// :131:27: error: use of undefined value here causes undefined behavior
3645// :131:27: error: use of undefined value here causes undefined behavior
3646// :131:27: error: use of undefined value here causes undefined behavior
3647// :131:27: error: use of undefined value here causes undefined behavior
3648// :131:27: error: use of undefined value here causes undefined behavior
3649// :131:27: error: use of undefined value here causes undefined behavior
3650// :131:27: error: use of undefined value here causes undefined behavior
3651// :131:27: error: use of undefined value here causes undefined behavior
3652// :131:27: error: use of undefined value here causes undefined behavior
3653// :131:27: error: use of undefined value here causes undefined behavior
3654// :131:27: error: use of undefined value here causes undefined behavior
3655// :131:27: error: use of undefined value here causes undefined behavior
3656// :131:27: error: use of undefined value here causes undefined behavior
3657// :131:27: error: use of undefined value here causes undefined behavior
3658// :131:27: error: use of undefined value here causes undefined behavior
3659// :131:27: error: use of undefined value here causes undefined behavior
3660// :131:27: error: use of undefined value here causes undefined behavior
3661// :131:27: error: use of undefined value here causes undefined behavior
3662// :131:27: error: use of undefined value here causes undefined behavior
3663// :131:27: error: use of undefined value here causes undefined behavior
3664// :131:27: error: use of undefined value here causes undefined behavior
3665// :131:27: error: use of undefined value here causes undefined behavior
3666// :131:27: error: use of undefined value here causes undefined behavior
3667// :131:27: error: use of undefined value here causes undefined behavior
3668// :131:27: error: use of undefined value here causes undefined behavior
3669// :131:27: error: use of undefined value here causes undefined behavior
3670// :131:27: error: use of undefined value here causes undefined behavior
3671// :131:27: error: use of undefined value here causes undefined behavior
3672// :131:27: error: use of undefined value here causes undefined behavior
3673// :131:27: error: use of undefined value here causes undefined behavior
3674// :131:27: error: use of undefined value here causes undefined behavior
3675// :131:27: error: use of undefined value here causes undefined behavior
3676// :131:27: error: use of undefined value here causes undefined behavior
3677// :131:27: error: use of undefined value here causes undefined behavior
3678// :131:27: error: use of undefined value here causes undefined behavior
3679// :131:27: error: use of undefined value here causes undefined behavior
3680// :131:27: error: use of undefined value here causes undefined behavior
3681// :131:27: error: use of undefined value here causes undefined behavior
3682// :131:27: error: use of undefined value here causes undefined behavior
3683// :131:27: error: use of undefined value here causes undefined behavior
3684// :131:27: error: use of undefined value here causes undefined behavior
3685// :131:27: error: use of undefined value here causes undefined behavior
3686// :131:27: error: use of undefined value here causes undefined behavior
3687// :131:27: error: use of undefined value here causes undefined behavior
3688// :131:27: error: use of undefined value here causes undefined behavior
3689// :131:27: error: use of undefined value here causes undefined behavior
3690// :131:27: error: use of undefined value here causes undefined behavior
3691// :131:27: error: use of undefined value here causes undefined behavior
3692// :131:27: error: use of undefined value here causes undefined behavior
3693// :131:27: error: use of undefined value here causes undefined behavior
3694// :131:27: error: use of undefined value here causes undefined behavior
3695// :131:27: error: use of undefined value here causes undefined behavior
3696// :131:27: error: use of undefined value here causes undefined behavior
3697// :131:27: error: use of undefined value here causes undefined behavior
3698// :131:27: error: use of undefined value here causes undefined behavior
3699// :131:27: error: use of undefined value here causes undefined behavior
3700// :131:27: error: use of undefined value here causes undefined behavior
3701// :131:27: error: use of undefined value here causes undefined behavior
3702// :131:27: error: use of undefined value here causes undefined behavior
3703// :131:27: error: use of undefined value here causes undefined behavior
3704// :131:27: error: use of undefined value here causes undefined behavior
3705// :131:27: error: use of undefined value here causes undefined behavior
3706// :131:27: error: use of undefined value here causes undefined behavior
3707// :131:27: error: use of undefined value here causes undefined behavior
3708// :131:27: error: use of undefined value here causes undefined behavior
3709// :131:27: error: use of undefined value here causes undefined behavior
3710// :131:27: error: use of undefined value here causes undefined behavior
3711// :131:27: error: use of undefined value here causes undefined behavior
3712// :131:27: error: use of undefined value here causes undefined behavior
3713// :131:27: error: use of undefined value here causes undefined behavior
3714// :131:27: error: use of undefined value here causes undefined behavior
3715// :131:27: error: use of undefined value here causes undefined behavior
3716// :131:27: error: use of undefined value here causes undefined behavior
3717// :131:27: error: use of undefined value here causes undefined behavior
3718// :131:27: error: use of undefined value here causes undefined behavior
3719// :131:27: error: use of undefined value here causes undefined behavior
3720// :131:27: error: use of undefined value here causes undefined behavior
3721// :131:27: error: use of undefined value here causes undefined behavior
3722// :131:27: error: use of undefined value here causes undefined behavior
3723// :131:27: error: use of undefined value here causes undefined behavior
3724// :131:27: error: use of undefined value here causes undefined behavior
3725// :131:27: error: use of undefined value here causes undefined behavior
3726// :131:27: error: use of undefined value here causes undefined behavior
3727// :131:27: error: use of undefined value here causes undefined behavior
3728// :131:27: error: use of undefined value here causes undefined behavior
3729// :131:27: error: use of undefined value here causes undefined behavior
3730// :131:27: error: use of undefined value here causes undefined behavior
3731// :131:27: error: use of undefined value here causes undefined behavior
3732// :131:27: error: use of undefined value here causes undefined behavior
3733// :131:27: error: use of undefined value here causes undefined behavior
3734// :131:27: error: use of undefined value here causes undefined behavior
3735// :131:27: error: use of undefined value here causes undefined behavior
3736// :131:27: error: use of undefined value here causes undefined behavior
3737// :131:27: error: use of undefined value here causes undefined behavior
3738// :131:27: error: use of undefined value here causes undefined behavior
3739// :131:27: error: use of undefined value here causes undefined behavior
3740// :131:30: error: use of undefined value here causes undefined behavior
3741// :131:30: error: use of undefined value here causes undefined behavior
3742// :131:30: error: use of undefined value here causes undefined behavior
3743// :131:30: error: use of undefined value here causes undefined behavior
3744// :131:30: error: use of undefined value here causes undefined behavior
3745// :131:30: error: use of undefined value here causes undefined behavior
3746// :131:30: error: use of undefined value here causes undefined behavior
3747// :131:30: error: use of undefined value here causes undefined behavior
3748// :131:30: error: use of undefined value here causes undefined behavior
3749// :131:30: error: use of undefined value here causes undefined behavior
3750// :131:30: error: use of undefined value here causes undefined behavior
3751// :131:30: error: use of undefined value here causes undefined behavior
3752// :131:30: error: use of undefined value here causes undefined behavior
3753// :131:30: error: use of undefined value here causes undefined behavior
3754// :131:30: error: use of undefined value here causes undefined behavior
3755// :131:30: error: use of undefined value here causes undefined behavior
3756// :131:30: error: use of undefined value here causes undefined behavior
3757// :131:30: error: use of undefined value here causes undefined behavior
3758// :131:30: error: use of undefined value here causes undefined behavior
3759// :131:30: error: use of undefined value here causes undefined behavior
3760// :131:30: error: use of undefined value here causes undefined behavior
3761// :131:30: error: use of undefined value here causes undefined behavior
3762// :131:30: error: use of undefined value here causes undefined behavior
3763// :131:30: error: use of undefined value here causes undefined behavior
3764// :131:30: error: use of undefined value here causes undefined behavior
3765// :131:30: error: use of undefined value here causes undefined behavior
3766// :131:30: error: use of undefined value here causes undefined behavior
3767// :131:30: error: use of undefined value here causes undefined behavior
3768// :131:30: error: use of undefined value here causes undefined behavior
3769// :131:30: error: use of undefined value here causes undefined behavior
3770// :131:30: error: use of undefined value here causes undefined behavior
3771// :131:30: error: use of undefined value here causes undefined behavior
3772// :131:30: error: use of undefined value here causes undefined behavior
3773// :131:30: error: use of undefined value here causes undefined behavior
3774// :131:30: error: use of undefined value here causes undefined behavior
3775// :131:30: error: use of undefined value here causes undefined behavior
3776// :131:30: error: use of undefined value here causes undefined behavior
3777// :131:30: error: use of undefined value here causes undefined behavior
3778// :131:30: error: use of undefined value here causes undefined behavior
3779// :131:30: error: use of undefined value here causes undefined behavior
3780// :131:30: error: use of undefined value here causes undefined behavior
3781// :131:30: error: use of undefined value here causes undefined behavior
3782// :131:30: error: use of undefined value here causes undefined behavior
3783// :131:30: error: use of undefined value here causes undefined behavior
3784// :131:30: error: use of undefined value here causes undefined behavior
3785// :131:30: error: use of undefined value here causes undefined behavior
3786// :131:30: error: use of undefined value here causes undefined behavior
3787// :131:30: error: use of undefined value here causes undefined behavior
3788// :131:30: error: use of undefined value here causes undefined behavior
3789// :131:30: error: use of undefined value here causes undefined behavior
3790// :131:30: error: use of undefined value here causes undefined behavior
3791// :131:30: error: use of undefined value here causes undefined behavior
3792// :131:30: error: use of undefined value here causes undefined behavior
3793// :131:30: error: use of undefined value here causes undefined behavior
3794// :131:30: error: use of undefined value here causes undefined behavior
3795// :131:30: error: use of undefined value here causes undefined behavior
3796// :131:30: error: use of undefined value here causes undefined behavior
3797// :131:30: error: use of undefined value here causes undefined behavior
3798// :131:30: error: use of undefined value here causes undefined behavior
3799// :131:30: error: use of undefined value here causes undefined behavior
3800// :131:30: error: use of undefined value here causes undefined behavior
3801// :131:30: error: use of undefined value here causes undefined behavior
3802// :131:30: error: use of undefined value here causes undefined behavior
3803// :131:30: error: use of undefined value here causes undefined behavior
3804// :131:30: error: use of undefined value here causes undefined behavior
3805// :131:30: error: use of undefined value here causes undefined behavior
3806// :131:30: error: use of undefined value here causes undefined behavior
3807// :131:30: error: use of undefined value here causes undefined behavior
3808// :131:30: error: use of undefined value here causes undefined behavior
3809// :131:30: error: use of undefined value here causes undefined behavior
3810// :131:30: error: use of undefined value here causes undefined behavior
3811// :131:30: error: use of undefined value here causes undefined behavior
3812// :131:30: error: use of undefined value here causes undefined behavior
3813// :131:30: error: use of undefined value here causes undefined behavior
3814// :131:30: error: use of undefined value here causes undefined behavior
3815// :131:30: error: use of undefined value here causes undefined behavior
3816// :131:30: error: use of undefined value here causes undefined behavior
3817// :131:30: error: use of undefined value here causes undefined behavior
3818// :131:30: error: use of undefined value here causes undefined behavior
3819// :131:30: error: use of undefined value here causes undefined behavior
3820// :131:30: error: use of undefined value here causes undefined behavior
3821// :131:30: error: use of undefined value here causes undefined behavior
3822// :131:30: error: use of undefined value here causes undefined behavior
3823// :131:30: error: use of undefined value here causes undefined behavior
3824// :131:30: error: use of undefined value here causes undefined behavior
3825// :131:30: error: use of undefined value here causes undefined behavior
3826// :131:30: error: use of undefined value here causes undefined behavior
3827// :131:30: error: use of undefined value here causes undefined behavior
3828// :135:27: error: use of undefined value here causes undefined behavior
3829// :135:27: error: use of undefined value here causes undefined behavior
3830// :135:27: error: use of undefined value here causes undefined behavior
3831// :135:27: error: use of undefined value here causes undefined behavior
3832// :135:27: error: use of undefined value here causes undefined behavior
3833// :135:27: error: use of undefined value here causes undefined behavior
3834// :135:27: error: use of undefined value here causes undefined behavior
3835// :135:27: error: use of undefined value here causes undefined behavior
3836// :135:27: error: use of undefined value here causes undefined behavior
3837// :135:27: error: use of undefined value here causes undefined behavior
3838// :135:27: error: use of undefined value here causes undefined behavior
3839// :135:27: error: use of undefined value here causes undefined behavior
3840// :135:27: error: use of undefined value here causes undefined behavior
3841// :135:27: error: use of undefined value here causes undefined behavior
3842// :135:27: error: use of undefined value here causes undefined behavior
3843// :135:27: error: use of undefined value here causes undefined behavior
3844// :135:27: error: use of undefined value here causes undefined behavior
3845// :135:27: error: use of undefined value here causes undefined behavior
3846// :135:27: error: use of undefined value here causes undefined behavior
3847// :135:27: error: use of undefined value here causes undefined behavior
3848// :135:27: error: use of undefined value here causes undefined behavior
3849// :135:27: error: use of undefined value here causes undefined behavior
3850// :135:27: error: use of undefined value here causes undefined behavior
3851// :135:27: error: use of undefined value here causes undefined behavior
3852// :135:27: error: use of undefined value here causes undefined behavior
3853// :135:27: error: use of undefined value here causes undefined behavior
3854// :135:27: error: use of undefined value here causes undefined behavior
3855// :135:27: error: use of undefined value here causes undefined behavior
3856// :135:27: error: use of undefined value here causes undefined behavior
3857// :135:27: error: use of undefined value here causes undefined behavior
3858// :135:27: error: use of undefined value here causes undefined behavior
3859// :135:27: error: use of undefined value here causes undefined behavior
3860// :135:27: error: use of undefined value here causes undefined behavior
3861// :135:27: error: use of undefined value here causes undefined behavior
3862// :135:27: error: use of undefined value here causes undefined behavior
3863// :135:27: error: use of undefined value here causes undefined behavior
3864// :135:27: error: use of undefined value here causes undefined behavior
3865// :135:27: error: use of undefined value here causes undefined behavior
3866// :135:27: error: use of undefined value here causes undefined behavior
3867// :135:27: error: use of undefined value here causes undefined behavior
3868// :135:27: error: use of undefined value here causes undefined behavior
3869// :135:27: error: use of undefined value here causes undefined behavior
3870// :135:27: error: use of undefined value here causes undefined behavior
3871// :135:27: error: use of undefined value here causes undefined behavior
3872// :135:27: error: use of undefined value here causes undefined behavior
3873// :135:27: error: use of undefined value here causes undefined behavior
3874// :135:27: error: use of undefined value here causes undefined behavior
3875// :135:27: error: use of undefined value here causes undefined behavior
3876// :135:27: error: use of undefined value here causes undefined behavior
3877// :135:27: error: use of undefined value here causes undefined behavior
3878// :135:27: error: use of undefined value here causes undefined behavior
3879// :135:27: error: use of undefined value here causes undefined behavior
3880// :135:27: error: use of undefined value here causes undefined behavior
3881// :135:27: error: use of undefined value here causes undefined behavior
3882// :135:27: error: use of undefined value here causes undefined behavior
3883// :135:27: error: use of undefined value here causes undefined behavior
3884// :135:27: error: use of undefined value here causes undefined behavior
3885// :135:27: error: use of undefined value here causes undefined behavior
3886// :135:27: error: use of undefined value here causes undefined behavior
3887// :135:27: error: use of undefined value here causes undefined behavior
3888// :135:27: error: use of undefined value here causes undefined behavior
3889// :135:27: error: use of undefined value here causes undefined behavior
3890// :135:27: error: use of undefined value here causes undefined behavior
3891// :135:27: error: use of undefined value here causes undefined behavior
3892// :135:27: error: use of undefined value here causes undefined behavior
3893// :135:27: error: use of undefined value here causes undefined behavior
3894// :135:27: error: use of undefined value here causes undefined behavior
3895// :135:27: error: use of undefined value here causes undefined behavior
3896// :135:27: error: use of undefined value here causes undefined behavior
3897// :135:27: error: use of undefined value here causes undefined behavior
3898// :135:27: error: use of undefined value here causes undefined behavior
3899// :135:27: error: use of undefined value here causes undefined behavior
3900// :135:27: error: use of undefined value here causes undefined behavior
3901// :135:27: error: use of undefined value here causes undefined behavior
3902// :135:27: error: use of undefined value here causes undefined behavior
3903// :135:27: error: use of undefined value here causes undefined behavior
3904// :135:27: error: use of undefined value here causes undefined behavior
3905// :135:27: error: use of undefined value here causes undefined behavior
3906// :135:27: error: use of undefined value here causes undefined behavior
3907// :135:27: error: use of undefined value here causes undefined behavior
3908// :135:27: error: use of undefined value here causes undefined behavior
3909// :135:27: error: use of undefined value here causes undefined behavior
3910// :135:27: error: use of undefined value here causes undefined behavior
3911// :135:27: error: use of undefined value here causes undefined behavior
3912// :135:27: error: use of undefined value here causes undefined behavior
3913// :135:27: error: use of undefined value here causes undefined behavior
3914// :135:27: error: use of undefined value here causes undefined behavior
3915// :135:27: error: use of undefined value here causes undefined behavior
3916// :135:27: error: use of undefined value here causes undefined behavior
3917// :135:27: error: use of undefined value here causes undefined behavior
3918// :135:27: error: use of undefined value here causes undefined behavior
3919// :135:27: error: use of undefined value here causes undefined behavior
3920// :135:27: error: use of undefined value here causes undefined behavior
3921// :135:27: error: use of undefined value here causes undefined behavior
3922// :135:27: error: use of undefined value here causes undefined behavior
3923// :135:27: error: use of undefined value here causes undefined behavior
3924// :135:27: error: use of undefined value here causes undefined behavior
3925// :135:27: error: use of undefined value here causes undefined behavior
3926// :135:27: error: use of undefined value here causes undefined behavior
3927// :135:27: error: use of undefined value here causes undefined behavior
3928// :135:27: error: use of undefined value here causes undefined behavior
3929// :135:27: error: use of undefined value here causes undefined behavior
3930// :135:27: error: use of undefined value here causes undefined behavior
3931// :135:27: error: use of undefined value here causes undefined behavior
3932// :135:27: error: use of undefined value here causes undefined behavior
3933// :135:27: error: use of undefined value here causes undefined behavior
3934// :135:27: error: use of undefined value here causes undefined behavior
3935// :135:27: error: use of undefined value here causes undefined behavior
3936// :135:27: error: use of undefined value here causes undefined behavior
3937// :135:27: error: use of undefined value here causes undefined behavior
3938// :135:27: error: use of undefined value here causes undefined behavior
3939// :135:27: error: use of undefined value here causes undefined behavior
3940// :135:27: error: use of undefined value here causes undefined behavior
3941// :135:27: error: use of undefined value here causes undefined behavior
3942// :135:27: error: use of undefined value here causes undefined behavior
3943// :135:27: error: use of undefined value here causes undefined behavior
3944// :135:27: error: use of undefined value here causes undefined behavior
3945// :135:27: error: use of undefined value here causes undefined behavior
3946// :135:27: error: use of undefined value here causes undefined behavior
3947// :135:27: error: use of undefined value here causes undefined behavior
3948// :135:27: error: use of undefined value here causes undefined behavior
3949// :135:27: error: use of undefined value here causes undefined behavior
3950// :135:27: error: use of undefined value here causes undefined behavior
3951// :135:27: error: use of undefined value here causes undefined behavior
3952// :135:27: error: use of undefined value here causes undefined behavior
3953// :135:27: error: use of undefined value here causes undefined behavior
3954// :135:27: error: use of undefined value here causes undefined behavior
3955// :135:27: error: use of undefined value here causes undefined behavior
3956// :135:27: error: use of undefined value here causes undefined behavior
3957// :135:27: error: use of undefined value here causes undefined behavior
3958// :135:27: error: use of undefined value here causes undefined behavior
3959// :135:27: error: use of undefined value here causes undefined behavior
3960// :135:27: error: use of undefined value here causes undefined behavior
3961// :135:27: error: use of undefined value here causes undefined behavior
3962// :135:27: error: use of undefined value here causes undefined behavior
3963// :135:27: error: use of undefined value here causes undefined behavior
3964// :135:27: error: use of undefined value here causes undefined behavior
3965// :135:27: error: use of undefined value here causes undefined behavior
3966// :135:27: error: use of undefined value here causes undefined behavior
3967// :135:27: error: use of undefined value here causes undefined behavior
3968// :135:27: error: use of undefined value here causes undefined behavior
3969// :135:27: error: use of undefined value here causes undefined behavior
3970// :135:27: error: use of undefined value here causes undefined behavior
3971// :135:27: error: use of undefined value here causes undefined behavior
3972// :135:27: error: use of undefined value here causes undefined behavior
3973// :135:27: error: use of undefined value here causes undefined behavior
3974// :135:27: error: use of undefined value here causes undefined behavior
3975// :135:27: error: use of undefined value here causes undefined behavior
3976// :135:27: error: use of undefined value here causes undefined behavior
3977// :135:27: error: use of undefined value here causes undefined behavior
3978// :135:27: error: use of undefined value here causes undefined behavior
3979// :135:27: error: use of undefined value here causes undefined behavior
3980// :135:27: error: use of undefined value here causes undefined behavior
3981// :135:27: error: use of undefined value here causes undefined behavior
3982// :135:30: error: use of undefined value here causes undefined behavior
3983// :135:30: error: use of undefined value here causes undefined behavior
3984// :135:30: error: use of undefined value here causes undefined behavior
3985// :135:30: error: use of undefined value here causes undefined behavior
3986// :135:30: error: use of undefined value here causes undefined behavior
3987// :135:30: error: use of undefined value here causes undefined behavior
3988// :135:30: error: use of undefined value here causes undefined behavior
3989// :135:30: error: use of undefined value here causes undefined behavior
3990// :135:30: error: use of undefined value here causes undefined behavior
3991// :135:30: error: use of undefined value here causes undefined behavior
3992// :135:30: error: use of undefined value here causes undefined behavior
3993// :135:30: error: use of undefined value here causes undefined behavior
3994// :135:30: error: use of undefined value here causes undefined behavior
3995// :135:30: error: use of undefined value here causes undefined behavior
3996// :135:30: error: use of undefined value here causes undefined behavior
3997// :135:30: error: use of undefined value here causes undefined behavior
3998// :135:30: error: use of undefined value here causes undefined behavior
3999// :135:30: error: use of undefined value here causes undefined behavior
4000// :135:30: error: use of undefined value here causes undefined behavior
4001// :135:30: error: use of undefined value here causes undefined behavior
4002// :135:30: error: use of undefined value here causes undefined behavior
4003// :135:30: error: use of undefined value here causes undefined behavior
4004// :135:30: error: use of undefined value here causes undefined behavior
4005// :135:30: error: use of undefined value here causes undefined behavior
4006// :135:30: error: use of undefined value here causes undefined behavior
4007// :135:30: error: use of undefined value here causes undefined behavior
4008// :135:30: error: use of undefined value here causes undefined behavior
4009// :135:30: error: use of undefined value here causes undefined behavior
4010// :135:30: error: use of undefined value here causes undefined behavior
4011// :135:30: error: use of undefined value here causes undefined behavior
4012// :135:30: error: use of undefined value here causes undefined behavior
4013// :135:30: error: use of undefined value here causes undefined behavior
4014// :135:30: error: use of undefined value here causes undefined behavior
4015// :135:30: error: use of undefined value here causes undefined behavior
4016// :135:30: error: use of undefined value here causes undefined behavior
4017// :135:30: error: use of undefined value here causes undefined behavior
4018// :135:30: error: use of undefined value here causes undefined behavior
4019// :135:30: error: use of undefined value here causes undefined behavior
4020// :135:30: error: use of undefined value here causes undefined behavior
4021// :135:30: error: use of undefined value here causes undefined behavior
4022// :135:30: error: use of undefined value here causes undefined behavior
4023// :135:30: error: use of undefined value here causes undefined behavior
4024// :135:30: error: use of undefined value here causes undefined behavior
4025// :135:30: error: use of undefined value here causes undefined behavior
4026// :135:30: error: use of undefined value here causes undefined behavior
4027// :135:30: error: use of undefined value here causes undefined behavior
4028// :135:30: error: use of undefined value here causes undefined behavior
4029// :135:30: error: use of undefined value here causes undefined behavior
4030// :135:30: error: use of undefined value here causes undefined behavior
4031// :135:30: error: use of undefined value here causes undefined behavior
4032// :135:30: error: use of undefined value here causes undefined behavior
4033// :135:30: error: use of undefined value here causes undefined behavior
4034// :135:30: error: use of undefined value here causes undefined behavior
4035// :135:30: error: use of undefined value here causes undefined behavior
4036// :135:30: error: use of undefined value here causes undefined behavior
4037// :135:30: error: use of undefined value here causes undefined behavior
4038// :135:30: error: use of undefined value here causes undefined behavior
4039// :135:30: error: use of undefined value here causes undefined behavior
4040// :135:30: error: use of undefined value here causes undefined behavior
4041// :135:30: error: use of undefined value here causes undefined behavior
4042// :135:30: error: use of undefined value here causes undefined behavior
4043// :135:30: error: use of undefined value here causes undefined behavior
4044// :135:30: error: use of undefined value here causes undefined behavior
4045// :135:30: error: use of undefined value here causes undefined behavior
4046// :135:30: error: use of undefined value here causes undefined behavior
4047// :135:30: error: use of undefined value here causes undefined behavior
4048// :135:30: error: use of undefined value here causes undefined behavior
4049// :135:30: error: use of undefined value here causes undefined behavior
4050// :135:30: error: use of undefined value here causes undefined behavior
4051// :135:30: error: use of undefined value here causes undefined behavior
4052// :135:30: error: use of undefined value here causes undefined behavior
4053// :135:30: error: use of undefined value here causes undefined behavior
4054// :135:30: error: use of undefined value here causes undefined behavior
4055// :135:30: error: use of undefined value here causes undefined behavior
4056// :135:30: error: use of undefined value here causes undefined behavior
4057// :135:30: error: use of undefined value here causes undefined behavior
4058// :135:30: error: use of undefined value here causes undefined behavior
4059// :135:30: error: use of undefined value here causes undefined behavior
4060// :135:30: error: use of undefined value here causes undefined behavior
4061// :135:30: error: use of undefined value here causes undefined behavior
4062// :135:30: error: use of undefined value here causes undefined behavior
4063// :135:30: error: use of undefined value here causes undefined behavior
4064// :135:30: error: use of undefined value here causes undefined behavior
4065// :135:30: error: use of undefined value here causes undefined behavior
4066// :135:30: error: use of undefined value here causes undefined behavior
4067// :135:30: error: use of undefined value here causes undefined behavior
4068// :135:30: error: use of undefined value here causes undefined behavior
4069// :135:30: error: use of undefined value here causes undefined behavior
4070// :139:27: error: use of undefined value here causes undefined behavior
4071// :139:27: error: use of undefined value here causes undefined behavior
4072// :139:27: error: use of undefined value here causes undefined behavior
4073// :139:27: error: use of undefined value here causes undefined behavior
4074// :139:27: error: use of undefined value here causes undefined behavior
4075// :139:27: error: use of undefined value here causes undefined behavior
4076// :139:27: error: use of undefined value here causes undefined behavior
4077// :139:27: error: use of undefined value here causes undefined behavior
4078// :139:27: error: use of undefined value here causes undefined behavior
4079// :139:27: error: use of undefined value here causes undefined behavior
4080// :139:27: error: use of undefined value here causes undefined behavior
4081// :139:27: error: use of undefined value here causes undefined behavior
4082// :139:27: error: use of undefined value here causes undefined behavior
4083// :139:27: error: use of undefined value here causes undefined behavior
4084// :139:27: error: use of undefined value here causes undefined behavior
4085// :139:27: error: use of undefined value here causes undefined behavior
4086// :139:27: error: use of undefined value here causes undefined behavior
4087// :139:27: error: use of undefined value here causes undefined behavior
4088// :139:27: error: use of undefined value here causes undefined behavior
4089// :139:27: error: use of undefined value here causes undefined behavior
4090// :139:27: error: use of undefined value here causes undefined behavior
4091// :139:27: error: use of undefined value here causes undefined behavior
4092// :139:27: error: use of undefined value here causes undefined behavior
4093// :139:27: error: use of undefined value here causes undefined behavior
4094// :139:27: error: use of undefined value here causes undefined behavior
4095// :139:27: error: use of undefined value here causes undefined behavior
4096// :139:27: error: use of undefined value here causes undefined behavior
4097// :139:27: error: use of undefined value here causes undefined behavior
4098// :139:27: error: use of undefined value here causes undefined behavior
4099// :139:27: error: use of undefined value here causes undefined behavior
4100// :139:27: error: use of undefined value here causes undefined behavior
4101// :139:27: error: use of undefined value here causes undefined behavior
4102// :139:27: error: use of undefined value here causes undefined behavior
4103// :139:27: error: use of undefined value here causes undefined behavior
4104// :139:27: error: use of undefined value here causes undefined behavior
4105// :139:27: error: use of undefined value here causes undefined behavior
4106// :139:27: error: use of undefined value here causes undefined behavior
4107// :139:27: error: use of undefined value here causes undefined behavior
4108// :139:27: error: use of undefined value here causes undefined behavior
4109// :139:27: error: use of undefined value here causes undefined behavior
4110// :139:27: error: use of undefined value here causes undefined behavior
4111// :139:27: error: use of undefined value here causes undefined behavior
4112// :139:27: error: use of undefined value here causes undefined behavior
4113// :139:27: error: use of undefined value here causes undefined behavior
4114// :139:27: error: use of undefined value here causes undefined behavior
4115// :139:27: error: use of undefined value here causes undefined behavior
4116// :139:27: error: use of undefined value here causes undefined behavior
4117// :139:27: error: use of undefined value here causes undefined behavior
4118// :139:27: error: use of undefined value here causes undefined behavior
4119// :139:27: error: use of undefined value here causes undefined behavior
4120// :139:27: error: use of undefined value here causes undefined behavior
4121// :139:27: error: use of undefined value here causes undefined behavior
4122// :139:27: error: use of undefined value here causes undefined behavior
4123// :139:27: error: use of undefined value here causes undefined behavior
4124// :139:27: error: use of undefined value here causes undefined behavior
4125// :139:27: error: use of undefined value here causes undefined behavior
4126// :139:27: error: use of undefined value here causes undefined behavior
4127// :139:27: error: use of undefined value here causes undefined behavior
4128// :139:27: error: use of undefined value here causes undefined behavior
4129// :139:27: error: use of undefined value here causes undefined behavior
4130// :139:27: error: use of undefined value here causes undefined behavior
4131// :139:27: error: use of undefined value here causes undefined behavior
4132// :139:27: error: use of undefined value here causes undefined behavior
4133// :139:27: error: use of undefined value here causes undefined behavior
4134// :139:27: error: use of undefined value here causes undefined behavior
4135// :139:27: error: use of undefined value here causes undefined behavior
4136// :139:27: error: use of undefined value here causes undefined behavior
4137// :139:27: error: use of undefined value here causes undefined behavior
4138// :139:27: error: use of undefined value here causes undefined behavior
4139// :139:27: error: use of undefined value here causes undefined behavior
4140// :139:27: error: use of undefined value here causes undefined behavior
4141// :139:27: error: use of undefined value here causes undefined behavior
4142// :139:27: error: use of undefined value here causes undefined behavior
4143// :139:27: error: use of undefined value here causes undefined behavior
4144// :139:27: error: use of undefined value here causes undefined behavior
4145// :139:27: error: use of undefined value here causes undefined behavior
4146// :139:27: error: use of undefined value here causes undefined behavior
4147// :139:27: error: use of undefined value here causes undefined behavior
4148// :139:27: error: use of undefined value here causes undefined behavior
4149// :139:27: error: use of undefined value here causes undefined behavior
4150// :139:27: error: use of undefined value here causes undefined behavior
4151// :139:27: error: use of undefined value here causes undefined behavior
4152// :139:27: error: use of undefined value here causes undefined behavior
4153// :139:27: error: use of undefined value here causes undefined behavior
4154// :139:27: error: use of undefined value here causes undefined behavior
4155// :139:27: error: use of undefined value here causes undefined behavior
4156// :139:27: error: use of undefined value here causes undefined behavior
4157// :139:27: error: use of undefined value here causes undefined behavior
4158// :139:27: error: use of undefined value here causes undefined behavior
4159// :139:27: error: use of undefined value here causes undefined behavior
4160// :139:27: error: use of undefined value here causes undefined behavior
4161// :139:27: error: use of undefined value here causes undefined behavior
4162// :139:27: error: use of undefined value here causes undefined behavior
4163// :139:27: error: use of undefined value here causes undefined behavior
4164// :139:27: error: use of undefined value here causes undefined behavior
4165// :139:27: error: use of undefined value here causes undefined behavior
4166// :139:27: error: use of undefined value here causes undefined behavior
4167// :139:27: error: use of undefined value here causes undefined behavior
4168// :139:27: error: use of undefined value here causes undefined behavior
4169// :139:27: error: use of undefined value here causes undefined behavior
4170// :139:27: error: use of undefined value here causes undefined behavior
4171// :139:27: error: use of undefined value here causes undefined behavior
4172// :139:27: error: use of undefined value here causes undefined behavior
4173// :139:27: error: use of undefined value here causes undefined behavior
4174// :139:27: error: use of undefined value here causes undefined behavior
4175// :139:27: error: use of undefined value here causes undefined behavior
4176// :139:27: error: use of undefined value here causes undefined behavior
4177// :139:27: error: use of undefined value here causes undefined behavior
4178// :139:27: error: use of undefined value here causes undefined behavior
4179// :139:27: error: use of undefined value here causes undefined behavior
4180// :139:27: error: use of undefined value here causes undefined behavior
4181// :139:27: error: use of undefined value here causes undefined behavior
4182// :139:27: error: use of undefined value here causes undefined behavior
4183// :139:27: error: use of undefined value here causes undefined behavior
4184// :139:27: error: use of undefined value here causes undefined behavior
4185// :139:27: error: use of undefined value here causes undefined behavior
4186// :139:27: error: use of undefined value here causes undefined behavior
4187// :139:27: error: use of undefined value here causes undefined behavior
4188// :139:27: error: use of undefined value here causes undefined behavior
4189// :139:27: error: use of undefined value here causes undefined behavior
4190// :139:27: error: use of undefined value here causes undefined behavior
4191// :139:27: error: use of undefined value here causes undefined behavior
4192// :139:27: error: use of undefined value here causes undefined behavior
4193// :139:27: error: use of undefined value here causes undefined behavior
4194// :139:27: error: use of undefined value here causes undefined behavior
4195// :139:27: error: use of undefined value here causes undefined behavior
4196// :139:27: error: use of undefined value here causes undefined behavior
4197// :139:27: error: use of undefined value here causes undefined behavior
4198// :139:27: error: use of undefined value here causes undefined behavior
4199// :139:27: error: use of undefined value here causes undefined behavior
4200// :139:27: error: use of undefined value here causes undefined behavior
4201// :139:27: error: use of undefined value here causes undefined behavior
4202// :139:27: error: use of undefined value here causes undefined behavior
4203// :139:27: error: use of undefined value here causes undefined behavior
4204// :139:27: error: use of undefined value here causes undefined behavior
4205// :139:27: error: use of undefined value here causes undefined behavior
4206// :139:27: error: use of undefined value here causes undefined behavior
4207// :139:27: error: use of undefined value here causes undefined behavior
4208// :139:27: error: use of undefined value here causes undefined behavior
4209// :139:27: error: use of undefined value here causes undefined behavior
4210// :139:27: error: use of undefined value here causes undefined behavior
4211// :139:27: error: use of undefined value here causes undefined behavior
4212// :139:27: error: use of undefined value here causes undefined behavior
4213// :139:27: error: use of undefined value here causes undefined behavior
4214// :139:27: error: use of undefined value here causes undefined behavior
4215// :139:27: error: use of undefined value here causes undefined behavior
4216// :139:27: error: use of undefined value here causes undefined behavior
4217// :139:27: error: use of undefined value here causes undefined behavior
4218// :139:27: error: use of undefined value here causes undefined behavior
4219// :139:27: error: use of undefined value here causes undefined behavior
4220// :139:27: error: use of undefined value here causes undefined behavior
4221// :139:27: error: use of undefined value here causes undefined behavior
4222// :139:27: error: use of undefined value here causes undefined behavior
4223// :139:27: error: use of undefined value here causes undefined behavior
4224// :139:30: error: use of undefined value here causes undefined behavior
4225// :139:30: error: use of undefined value here causes undefined behavior
4226// :139:30: error: use of undefined value here causes undefined behavior
4227// :139:30: error: use of undefined value here causes undefined behavior
4228// :139:30: error: use of undefined value here causes undefined behavior
4229// :139:30: error: use of undefined value here causes undefined behavior
4230// :139:30: error: use of undefined value here causes undefined behavior
4231// :139:30: error: use of undefined value here causes undefined behavior
4232// :139:30: error: use of undefined value here causes undefined behavior
4233// :139:30: error: use of undefined value here causes undefined behavior
4234// :139:30: error: use of undefined value here causes undefined behavior
4235// :139:30: error: use of undefined value here causes undefined behavior
4236// :139:30: error: use of undefined value here causes undefined behavior
4237// :139:30: error: use of undefined value here causes undefined behavior
4238// :139:30: error: use of undefined value here causes undefined behavior
4239// :139:30: error: use of undefined value here causes undefined behavior
4240// :139:30: error: use of undefined value here causes undefined behavior
4241// :139:30: error: use of undefined value here causes undefined behavior
4242// :139:30: error: use of undefined value here causes undefined behavior
4243// :139:30: error: use of undefined value here causes undefined behavior
4244// :139:30: error: use of undefined value here causes undefined behavior
4245// :139:30: error: use of undefined value here causes undefined behavior
4246// :139:30: error: use of undefined value here causes undefined behavior
4247// :139:30: error: use of undefined value here causes undefined behavior
4248// :139:30: error: use of undefined value here causes undefined behavior
4249// :139:30: error: use of undefined value here causes undefined behavior
4250// :139:30: error: use of undefined value here causes undefined behavior
4251// :139:30: error: use of undefined value here causes undefined behavior
4252// :139:30: error: use of undefined value here causes undefined behavior
4253// :139:30: error: use of undefined value here causes undefined behavior
4254// :139:30: error: use of undefined value here causes undefined behavior
4255// :139:30: error: use of undefined value here causes undefined behavior
4256// :139:30: error: use of undefined value here causes undefined behavior
4257// :139:30: error: use of undefined value here causes undefined behavior
4258// :139:30: error: use of undefined value here causes undefined behavior
4259// :139:30: error: use of undefined value here causes undefined behavior
4260// :139:30: error: use of undefined value here causes undefined behavior
4261// :139:30: error: use of undefined value here causes undefined behavior
4262// :139:30: error: use of undefined value here causes undefined behavior
4263// :139:30: error: use of undefined value here causes undefined behavior
4264// :139:30: error: use of undefined value here causes undefined behavior
4265// :139:30: error: use of undefined value here causes undefined behavior
4266// :139:30: error: use of undefined value here causes undefined behavior
4267// :139:30: error: use of undefined value here causes undefined behavior
4268// :139:30: error: use of undefined value here causes undefined behavior
4269// :139:30: error: use of undefined value here causes undefined behavior
4270// :139:30: error: use of undefined value here causes undefined behavior
4271// :139:30: error: use of undefined value here causes undefined behavior
4272// :139:30: error: use of undefined value here causes undefined behavior
4273// :139:30: error: use of undefined value here causes undefined behavior
4274// :139:30: error: use of undefined value here causes undefined behavior
4275// :139:30: error: use of undefined value here causes undefined behavior
4276// :139:30: error: use of undefined value here causes undefined behavior
4277// :139:30: error: use of undefined value here causes undefined behavior
4278// :139:30: error: use of undefined value here causes undefined behavior
4279// :139:30: error: use of undefined value here causes undefined behavior
4280// :139:30: error: use of undefined value here causes undefined behavior
4281// :139:30: error: use of undefined value here causes undefined behavior
4282// :139:30: error: use of undefined value here causes undefined behavior
4283// :139:30: error: use of undefined value here causes undefined behavior
4284// :139:30: error: use of undefined value here causes undefined behavior
4285// :139:30: error: use of undefined value here causes undefined behavior
4286// :139:30: error: use of undefined value here causes undefined behavior
4287// :139:30: error: use of undefined value here causes undefined behavior
4288// :139:30: error: use of undefined value here causes undefined behavior
4289// :139:30: error: use of undefined value here causes undefined behavior
4290// :139:30: error: use of undefined value here causes undefined behavior
4291// :139:30: error: use of undefined value here causes undefined behavior
4292// :139:30: error: use of undefined value here causes undefined behavior
4293// :139:30: error: use of undefined value here causes undefined behavior
4294// :139:30: error: use of undefined value here causes undefined behavior
4295// :139:30: error: use of undefined value here causes undefined behavior
4296// :139:30: error: use of undefined value here causes undefined behavior
4297// :139:30: error: use of undefined value here causes undefined behavior
4298// :139:30: error: use of undefined value here causes undefined behavior
4299// :139:30: error: use of undefined value here causes undefined behavior
4300// :139:30: error: use of undefined value here causes undefined behavior
4301// :139:30: error: use of undefined value here causes undefined behavior
4302// :139:30: error: use of undefined value here causes undefined behavior
4303// :139:30: error: use of undefined value here causes undefined behavior
4304// :139:30: error: use of undefined value here causes undefined behavior
4305// :139:30: error: use of undefined value here causes undefined behavior
4306// :139:30: error: use of undefined value here causes undefined behavior
4307// :139:30: error: use of undefined value here causes undefined behavior
4308// :139:30: error: use of undefined value here causes undefined behavior
4309// :139:30: error: use of undefined value here causes undefined behavior
4310// :139:30: error: use of undefined value here causes undefined behavior
4311// :139:30: error: use of undefined value here causes undefined behavior
4312// :143:17: error: use of undefined value here causes undefined behavior
4313// :143:17: error: use of undefined value here causes undefined behavior
4314// :143:17: error: use of undefined value here causes undefined behavior
4315// :143:17: error: use of undefined value here causes undefined behavior
4316// :143:17: error: use of undefined value here causes undefined behavior
4317// :143:17: error: use of undefined value here causes undefined behavior
4318// :143:17: error: use of undefined value here causes undefined behavior
4319// :143:17: error: use of undefined value here causes undefined behavior
4320// :143:17: error: use of undefined value here causes undefined behavior
4321// :143:17: error: use of undefined value here causes undefined behavior
4322// :143:17: error: use of undefined value here causes undefined behavior
4323// :143:17: error: use of undefined value here causes undefined behavior
4324// :143:17: error: use of undefined value here causes undefined behavior
4325// :143:17: error: use of undefined value here causes undefined behavior
4326// :143:17: error: use of undefined value here causes undefined behavior
4327// :143:17: error: use of undefined value here causes undefined behavior
4328// :143:17: error: use of undefined value here causes undefined behavior
4329// :143:17: error: use of undefined value here causes undefined behavior
4330// :143:17: error: use of undefined value here causes undefined behavior
4331// :143:17: error: use of undefined value here causes undefined behavior
4332// :143:17: error: use of undefined value here causes undefined behavior
4333// :143:17: error: use of undefined value here causes undefined behavior
4334// :143:17: error: use of undefined value here causes undefined behavior
4335// :143:17: error: use of undefined value here causes undefined behavior
4336// :143:17: error: use of undefined value here causes undefined behavior
4337// :143:17: error: use of undefined value here causes undefined behavior
4338// :143:17: error: use of undefined value here causes undefined behavior
4339// :143:17: error: use of undefined value here causes undefined behavior
4340// :143:17: error: use of undefined value here causes undefined behavior
4341// :143:17: error: use of undefined value here causes undefined behavior
4342// :143:17: error: use of undefined value here causes undefined behavior
4343// :143:17: error: use of undefined value here causes undefined behavior
4344// :143:17: error: use of undefined value here causes undefined behavior
4345// :143:17: error: use of undefined value here causes undefined behavior
4346// :143:17: error: use of undefined value here causes undefined behavior
4347// :143:17: error: use of undefined value here causes undefined behavior
4348// :143:17: error: use of undefined value here causes undefined behavior
4349// :143:17: error: use of undefined value here causes undefined behavior
4350// :143:17: error: use of undefined value here causes undefined behavior
4351// :143:17: error: use of undefined value here causes undefined behavior
4352// :143:17: error: use of undefined value here causes undefined behavior
4353// :143:17: error: use of undefined value here causes undefined behavior
4354// :143:17: error: use of undefined value here causes undefined behavior
4355// :143:17: error: use of undefined value here causes undefined behavior
4356// :143:17: error: use of undefined value here causes undefined behavior
4357// :143:17: error: use of undefined value here causes undefined behavior
4358// :143:17: error: use of undefined value here causes undefined behavior
4359// :143:17: error: use of undefined value here causes undefined behavior
4360// :143:17: error: use of undefined value here causes undefined behavior
4361// :143:17: error: use of undefined value here causes undefined behavior
4362// :143:17: error: use of undefined value here causes undefined behavior
4363// :143:17: error: use of undefined value here causes undefined behavior
4364// :143:17: error: use of undefined value here causes undefined behavior
4365// :143:17: error: use of undefined value here causes undefined behavior
4366// :143:17: error: use of undefined value here causes undefined behavior
4367// :143:17: error: use of undefined value here causes undefined behavior
4368// :143:17: error: use of undefined value here causes undefined behavior
4369// :143:17: error: use of undefined value here causes undefined behavior
4370// :143:17: error: use of undefined value here causes undefined behavior
4371// :143:17: error: use of undefined value here causes undefined behavior
4372// :143:17: error: use of undefined value here causes undefined behavior
4373// :143:17: error: use of undefined value here causes undefined behavior
4374// :143:17: error: use of undefined value here causes undefined behavior
4375// :143:17: error: use of undefined value here causes undefined behavior
4376// :143:17: error: use of undefined value here causes undefined behavior
4377// :143:17: error: use of undefined value here causes undefined behavior
4378// :143:17: error: use of undefined value here causes undefined behavior
4379// :143:17: error: use of undefined value here causes undefined behavior
4380// :143:17: error: use of undefined value here causes undefined behavior
4381// :143:17: error: use of undefined value here causes undefined behavior
4382// :143:17: error: use of undefined value here causes undefined behavior
4383// :143:17: error: use of undefined value here causes undefined behavior
4384// :143:17: error: use of undefined value here causes undefined behavior
4385// :143:17: error: use of undefined value here causes undefined behavior
4386// :143:17: error: use of undefined value here causes undefined behavior
4387// :143:17: error: use of undefined value here causes undefined behavior
4388// :143:17: error: use of undefined value here causes undefined behavior
4389// :143:17: error: use of undefined value here causes undefined behavior
4390// :143:17: error: use of undefined value here causes undefined behavior
4391// :143:17: error: use of undefined value here causes undefined behavior
4392// :143:17: error: use of undefined value here causes undefined behavior
4393// :143:17: error: use of undefined value here causes undefined behavior
4394// :143:17: error: use of undefined value here causes undefined behavior
4395// :143:17: error: use of undefined value here causes undefined behavior
4396// :143:17: error: use of undefined value here causes undefined behavior
4397// :143:17: error: use of undefined value here causes undefined behavior
4398// :143:17: error: use of undefined value here causes undefined behavior
4399// :143:17: error: use of undefined value here causes undefined behavior
4400// :143:17: error: use of undefined value here causes undefined behavior
4401// :143:17: error: use of undefined value here causes undefined behavior
4402// :143:17: error: use of undefined value here causes undefined behavior
4403// :143:17: error: use of undefined value here causes undefined behavior
4404// :143:17: error: use of undefined value here causes undefined behavior
4405// :143:17: error: use of undefined value here causes undefined behavior
4406// :143:17: error: use of undefined value here causes undefined behavior
4407// :143:17: error: use of undefined value here causes undefined behavior
4408// :143:17: error: use of undefined value here causes undefined behavior
4409// :143:17: error: use of undefined value here causes undefined behavior
4410// :143:17: error: use of undefined value here causes undefined behavior
4411// :143:17: error: use of undefined value here causes undefined behavior
4412// :143:17: error: use of undefined value here causes undefined behavior
4413// :143:17: error: use of undefined value here causes undefined behavior
4414// :143:17: error: use of undefined value here causes undefined behavior
4415// :143:17: error: use of undefined value here causes undefined behavior
4416// :143:17: error: use of undefined value here causes undefined behavior
4417// :143:17: error: use of undefined value here causes undefined behavior
4418// :143:17: error: use of undefined value here causes undefined behavior
4419// :143:17: error: use of undefined value here causes undefined behavior
4420// :143:17: error: use of undefined value here causes undefined behavior
4421// :143:17: error: use of undefined value here causes undefined behavior
4422// :143:17: error: use of undefined value here causes undefined behavior
4423// :143:17: error: use of undefined value here causes undefined behavior
4424// :143:17: error: use of undefined value here causes undefined behavior
4425// :143:17: error: use of undefined value here causes undefined behavior
4426// :143:17: error: use of undefined value here causes undefined behavior
4427// :143:17: error: use of undefined value here causes undefined behavior
4428// :143:17: error: use of undefined value here causes undefined behavior
4429// :143:17: error: use of undefined value here causes undefined behavior
4430// :143:17: error: use of undefined value here causes undefined behavior
4431// :143:17: error: use of undefined value here causes undefined behavior
4432// :143:17: error: use of undefined value here causes undefined behavior
4433// :143:17: error: use of undefined value here causes undefined behavior
4434// :143:17: error: use of undefined value here causes undefined behavior
4435// :143:17: error: use of undefined value here causes undefined behavior
4436// :143:17: error: use of undefined value here causes undefined behavior
4437// :143:17: error: use of undefined value here causes undefined behavior
4438// :143:17: error: use of undefined value here causes undefined behavior
4439// :143:17: error: use of undefined value here causes undefined behavior
4440// :143:17: error: use of undefined value here causes undefined behavior
4441// :143:17: error: use of undefined value here causes undefined behavior
4442// :143:17: error: use of undefined value here causes undefined behavior
4443// :143:17: error: use of undefined value here causes undefined behavior
4444// :143:17: error: use of undefined value here causes undefined behavior
4445// :143:17: error: use of undefined value here causes undefined behavior
4446// :143:17: error: use of undefined value here causes undefined behavior
4447// :143:17: error: use of undefined value here causes undefined behavior
4448// :143:17: error: use of undefined value here causes undefined behavior
4449// :143:17: error: use of undefined value here causes undefined behavior
4450// :143:17: error: use of undefined value here causes undefined behavior
4451// :143:17: error: use of undefined value here causes undefined behavior
4452// :143:17: error: use of undefined value here causes undefined behavior
4453// :143:17: error: use of undefined value here causes undefined behavior
4454// :143:17: error: use of undefined value here causes undefined behavior
4455// :143:17: error: use of undefined value here causes undefined behavior
4456// :143:17: error: use of undefined value here causes undefined behavior
4457// :143:17: error: use of undefined value here causes undefined behavior
4458// :143:17: error: use of undefined value here causes undefined behavior
4459// :143:17: error: use of undefined value here causes undefined behavior
4460// :143:17: error: use of undefined value here causes undefined behavior
4461// :143:17: error: use of undefined value here causes undefined behavior
4462// :143:17: error: use of undefined value here causes undefined behavior
4463// :143:17: error: use of undefined value here causes undefined behavior
4464// :143:17: error: use of undefined value here causes undefined behavior
4465// :143:17: error: use of undefined value here causes undefined behavior
4466// :143:21: error: use of undefined value here causes undefined behavior
4467// :143:21: error: use of undefined value here causes undefined behavior
4468// :143:21: error: use of undefined value here causes undefined behavior
4469// :143:21: error: use of undefined value here causes undefined behavior
4470// :143:21: error: use of undefined value here causes undefined behavior
4471// :143:21: error: use of undefined value here causes undefined behavior
4472// :143:21: error: use of undefined value here causes undefined behavior
4473// :143:21: error: use of undefined value here causes undefined behavior
4474// :143:21: error: use of undefined value here causes undefined behavior
4475// :143:21: error: use of undefined value here causes undefined behavior
4476// :143:21: error: use of undefined value here causes undefined behavior
4477// :143:21: error: use of undefined value here causes undefined behavior
4478// :143:21: error: use of undefined value here causes undefined behavior
4479// :143:21: error: use of undefined value here causes undefined behavior
4480// :143:21: error: use of undefined value here causes undefined behavior
4481// :143:21: error: use of undefined value here causes undefined behavior
4482// :143:21: error: use of undefined value here causes undefined behavior
4483// :143:21: error: use of undefined value here causes undefined behavior
4484// :143:21: error: use of undefined value here causes undefined behavior
4485// :143:21: error: use of undefined value here causes undefined behavior
4486// :143:21: error: use of undefined value here causes undefined behavior
4487// :143:21: error: use of undefined value here causes undefined behavior
4488// :143:21: error: use of undefined value here causes undefined behavior
4489// :143:21: error: use of undefined value here causes undefined behavior
4490// :143:21: error: use of undefined value here causes undefined behavior
4491// :143:21: error: use of undefined value here causes undefined behavior
4492// :143:21: error: use of undefined value here causes undefined behavior
4493// :143:21: error: use of undefined value here causes undefined behavior
4494// :143:21: error: use of undefined value here causes undefined behavior
4495// :143:21: error: use of undefined value here causes undefined behavior
4496// :143:21: error: use of undefined value here causes undefined behavior
4497// :143:21: error: use of undefined value here causes undefined behavior
4498// :143:21: error: use of undefined value here causes undefined behavior
4499// :143:21: error: use of undefined value here causes undefined behavior
4500// :143:21: error: use of undefined value here causes undefined behavior
4501// :143:21: error: use of undefined value here causes undefined behavior
4502// :143:21: error: use of undefined value here causes undefined behavior
4503// :143:21: error: use of undefined value here causes undefined behavior
4504// :143:21: error: use of undefined value here causes undefined behavior
4505// :143:21: error: use of undefined value here causes undefined behavior
4506// :143:21: error: use of undefined value here causes undefined behavior
4507// :143:21: error: use of undefined value here causes undefined behavior
4508// :143:21: error: use of undefined value here causes undefined behavior
4509// :143:21: error: use of undefined value here causes undefined behavior
4510// :143:21: error: use of undefined value here causes undefined behavior
4511// :143:21: error: use of undefined value here causes undefined behavior
4512// :143:21: error: use of undefined value here causes undefined behavior
4513// :143:21: error: use of undefined value here causes undefined behavior
4514// :143:21: error: use of undefined value here causes undefined behavior
4515// :143:21: error: use of undefined value here causes undefined behavior
4516// :143:21: error: use of undefined value here causes undefined behavior
4517// :143:21: error: use of undefined value here causes undefined behavior
4518// :143:21: error: use of undefined value here causes undefined behavior
4519// :143:21: error: use of undefined value here causes undefined behavior
4520// :143:21: error: use of undefined value here causes undefined behavior
4521// :143:21: error: use of undefined value here causes undefined behavior
4522// :143:21: error: use of undefined value here causes undefined behavior
4523// :143:21: error: use of undefined value here causes undefined behavior
4524// :143:21: error: use of undefined value here causes undefined behavior
4525// :143:21: error: use of undefined value here causes undefined behavior
4526// :143:21: error: use of undefined value here causes undefined behavior
4527// :143:21: error: use of undefined value here causes undefined behavior
4528// :143:21: error: use of undefined value here causes undefined behavior
4529// :143:21: error: use of undefined value here causes undefined behavior
4530// :143:21: error: use of undefined value here causes undefined behavior
4531// :143:21: error: use of undefined value here causes undefined behavior
4532// :143:21: error: use of undefined value here causes undefined behavior
4533// :143:21: error: use of undefined value here causes undefined behavior
4534// :143:21: error: use of undefined value here causes undefined behavior
4535// :143:21: error: use of undefined value here causes undefined behavior
4536// :143:21: error: use of undefined value here causes undefined behavior
4537// :143:21: error: use of undefined value here causes undefined behavior
4538// :143:21: error: use of undefined value here causes undefined behavior
4539// :143:21: error: use of undefined value here causes undefined behavior
4540// :143:21: error: use of undefined value here causes undefined behavior
4541// :143:21: error: use of undefined value here causes undefined behavior
4542// :143:21: error: use of undefined value here causes undefined behavior
4543// :143:21: error: use of undefined value here causes undefined behavior
4544// :143:21: error: use of undefined value here causes undefined behavior
4545// :143:21: error: use of undefined value here causes undefined behavior
4546// :143:21: error: use of undefined value here causes undefined behavior
4547// :143:21: error: use of undefined value here causes undefined behavior
4548// :143:21: error: use of undefined value here causes undefined behavior
4549// :143:21: error: use of undefined value here causes undefined behavior
4550// :143:21: error: use of undefined value here causes undefined behavior
4551// :143:21: error: use of undefined value here causes undefined behavior
4552// :143:21: error: use of undefined value here causes undefined behavior
4553// :143:21: error: use of undefined value here causes undefined behavior
4554// :147:22: error: use of undefined value here causes undefined behavior
4555// :147:22: error: use of undefined value here causes undefined behavior
4556// :147:22: error: use of undefined value here causes undefined behavior
4557// :147:22: error: use of undefined value here causes undefined behavior
4558// :147:22: error: use of undefined value here causes undefined behavior
4559// :147:22: error: use of undefined value here causes undefined behavior
4560// :147:22: error: use of undefined value here causes undefined behavior
4561// :147:22: error: use of undefined value here causes undefined behavior
4562// :147:22: error: use of undefined value here causes undefined behavior
4563// :147:22: error: use of undefined value here causes undefined behavior
4564// :147:22: error: use of undefined value here causes undefined behavior
4565// :147:22: error: use of undefined value here causes undefined behavior
4566// :147:22: error: use of undefined value here causes undefined behavior
4567// :147:22: error: use of undefined value here causes undefined behavior
4568// :147:22: error: use of undefined value here causes undefined behavior
4569// :147:22: error: use of undefined value here causes undefined behavior
4570// :147:22: error: use of undefined value here causes undefined behavior
4571// :147:22: error: use of undefined value here causes undefined behavior
4572// :147:22: error: use of undefined value here causes undefined behavior
4573// :147:22: error: use of undefined value here causes undefined behavior
4574// :147:22: error: use of undefined value here causes undefined behavior
4575// :147:22: error: use of undefined value here causes undefined behavior
4576// :147:22: error: use of undefined value here causes undefined behavior
4577// :147:22: error: use of undefined value here causes undefined behavior
4578// :147:22: error: use of undefined value here causes undefined behavior
4579// :147:22: error: use of undefined value here causes undefined behavior
4580// :147:22: error: use of undefined value here causes undefined behavior
4581// :147:22: error: use of undefined value here causes undefined behavior
4582// :147:22: error: use of undefined value here causes undefined behavior
4583// :147:22: error: use of undefined value here causes undefined behavior
4584// :147:22: error: use of undefined value here causes undefined behavior
4585// :147:22: error: use of undefined value here causes undefined behavior
4586// :147:22: error: use of undefined value here causes undefined behavior
4587// :147:22: error: use of undefined value here causes undefined behavior
4588// :147:22: error: use of undefined value here causes undefined behavior
4589// :147:22: error: use of undefined value here causes undefined behavior
4590// :147:22: error: use of undefined value here causes undefined behavior
4591// :147:22: error: use of undefined value here causes undefined behavior
4592// :147:22: error: use of undefined value here causes undefined behavior
4593// :147:22: error: use of undefined value here causes undefined behavior
4594// :147:22: error: use of undefined value here causes undefined behavior
4595// :147:22: error: use of undefined value here causes undefined behavior
4596// :147:22: error: use of undefined value here causes undefined behavior
4597// :147:22: error: use of undefined value here causes undefined behavior
4598// :147:22: error: use of undefined value here causes undefined behavior
4599// :147:22: error: use of undefined value here causes undefined behavior
4600// :147:22: error: use of undefined value here causes undefined behavior
4601// :147:22: error: use of undefined value here causes undefined behavior
4602// :147:22: error: use of undefined value here causes undefined behavior
4603// :147:22: error: use of undefined value here causes undefined behavior
4604// :147:22: error: use of undefined value here causes undefined behavior
4605// :147:22: error: use of undefined value here causes undefined behavior
4606// :147:22: error: use of undefined value here causes undefined behavior
4607// :147:22: error: use of undefined value here causes undefined behavior
4608// :147:22: error: use of undefined value here causes undefined behavior
4609// :147:22: error: use of undefined value here causes undefined behavior
4610// :147:22: error: use of undefined value here causes undefined behavior
4611// :147:22: error: use of undefined value here causes undefined behavior
4612// :147:22: error: use of undefined value here causes undefined behavior
4613// :147:22: error: use of undefined value here causes undefined behavior
4614// :147:22: error: use of undefined value here causes undefined behavior
4615// :147:22: error: use of undefined value here causes undefined behavior
4616// :147:22: error: use of undefined value here causes undefined behavior
4617// :147:22: error: use of undefined value here causes undefined behavior
4618// :147:22: error: use of undefined value here causes undefined behavior
4619// :147:22: error: use of undefined value here causes undefined behavior
4620// :147:22: error: use of undefined value here causes undefined behavior
4621// :147:22: error: use of undefined value here causes undefined behavior
4622// :147:22: error: use of undefined value here causes undefined behavior
4623// :147:22: error: use of undefined value here causes undefined behavior
4624// :147:22: error: use of undefined value here causes undefined behavior
4625// :147:22: error: use of undefined value here causes undefined behavior
4626// :147:22: error: use of undefined value here causes undefined behavior
4627// :147:22: error: use of undefined value here causes undefined behavior
4628// :147:22: error: use of undefined value here causes undefined behavior
4629// :147:22: error: use of undefined value here causes undefined behavior
4630// :147:22: error: use of undefined value here causes undefined behavior
4631// :147:22: error: use of undefined value here causes undefined behavior
4632// :147:22: error: use of undefined value here causes undefined behavior
4633// :147:22: error: use of undefined value here causes undefined behavior
4634// :147:22: error: use of undefined value here causes undefined behavior
4635// :147:22: error: use of undefined value here causes undefined behavior
4636// :147:22: error: use of undefined value here causes undefined behavior
4637// :147:22: error: use of undefined value here causes undefined behavior
4638// :147:22: error: use of undefined value here causes undefined behavior
4639// :147:22: error: use of undefined value here causes undefined behavior
4640// :147:22: error: use of undefined value here causes undefined behavior
4641// :147:22: error: use of undefined value here causes undefined behavior
4642// :147:22: error: use of undefined value here causes undefined behavior
4643// :147:22: error: use of undefined value here causes undefined behavior
4644// :147:22: error: use of undefined value here causes undefined behavior
4645// :147:22: error: use of undefined value here causes undefined behavior
4646// :147:22: error: use of undefined value here causes undefined behavior
4647// :147:22: error: use of undefined value here causes undefined behavior
4648// :147:22: error: use of undefined value here causes undefined behavior
4649// :147:22: error: use of undefined value here causes undefined behavior
4650// :147:22: error: use of undefined value here causes undefined behavior
4651// :147:22: error: use of undefined value here causes undefined behavior
4652// :147:22: error: use of undefined value here causes undefined behavior
4653// :147:22: error: use of undefined value here causes undefined behavior
4654// :147:22: error: use of undefined value here causes undefined behavior
4655// :147:22: error: use of undefined value here causes undefined behavior
4656// :147:22: error: use of undefined value here causes undefined behavior
4657// :147:22: error: use of undefined value here causes undefined behavior
4658// :147:22: error: use of undefined value here causes undefined behavior
4659// :147:22: error: use of undefined value here causes undefined behavior
4660// :147:22: error: use of undefined value here causes undefined behavior
4661// :147:22: error: use of undefined value here causes undefined behavior
4662// :147:22: error: use of undefined value here causes undefined behavior
4663// :147:22: error: use of undefined value here causes undefined behavior
4664// :147:22: error: use of undefined value here causes undefined behavior
4665// :147:22: error: use of undefined value here causes undefined behavior
4666// :147:22: error: use of undefined value here causes undefined behavior
4667// :147:22: error: use of undefined value here causes undefined behavior
4668// :147:22: error: use of undefined value here causes undefined behavior
4669// :147:22: error: use of undefined value here causes undefined behavior
4670// :147:22: error: use of undefined value here causes undefined behavior
4671// :147:22: error: use of undefined value here causes undefined behavior
4672// :147:22: error: use of undefined value here causes undefined behavior
4673// :147:22: error: use of undefined value here causes undefined behavior
4674// :147:22: error: use of undefined value here causes undefined behavior
4675// :147:22: error: use of undefined value here causes undefined behavior
4676// :147:22: error: use of undefined value here causes undefined behavior
4677// :147:22: error: use of undefined value here causes undefined behavior
4678// :147:22: error: use of undefined value here causes undefined behavior
4679// :147:22: error: use of undefined value here causes undefined behavior
4680// :147:22: error: use of undefined value here causes undefined behavior
4681// :147:22: error: use of undefined value here causes undefined behavior
4682// :147:22: error: use of undefined value here causes undefined behavior
4683// :147:22: error: use of undefined value here causes undefined behavior
4684// :147:22: error: use of undefined value here causes undefined behavior
4685// :147:22: error: use of undefined value here causes undefined behavior
4686// :147:22: error: use of undefined value here causes undefined behavior
4687// :147:22: error: use of undefined value here causes undefined behavior
4688// :147:22: error: use of undefined value here causes undefined behavior
4689// :147:22: error: use of undefined value here causes undefined behavior
4690// :147:22: error: use of undefined value here causes undefined behavior
4691// :147:22: error: use of undefined value here causes undefined behavior
4692// :147:22: error: use of undefined value here causes undefined behavior
4693// :147:22: error: use of undefined value here causes undefined behavior
4694// :147:22: error: use of undefined value here causes undefined behavior
4695// :147:22: error: use of undefined value here causes undefined behavior
4696// :147:22: error: use of undefined value here causes undefined behavior
4697// :147:22: error: use of undefined value here causes undefined behavior
4698// :147:22: error: use of undefined value here causes undefined behavior
4699// :147:22: error: use of undefined value here causes undefined behavior
4700// :147:22: error: use of undefined value here causes undefined behavior
4701// :147:22: error: use of undefined value here causes undefined behavior
4702// :147:22: error: use of undefined value here causes undefined behavior
4703// :147:22: error: use of undefined value here causes undefined behavior
4704// :147:22: error: use of undefined value here causes undefined behavior
4705// :147:22: error: use of undefined value here causes undefined behavior
4706// :147:22: error: use of undefined value here causes undefined behavior
4707// :147:22: error: use of undefined value here causes undefined behavior
4708// :147:25: error: use of undefined value here causes undefined behavior
4709// :147:25: error: use of undefined value here causes undefined behavior
4710// :147:25: error: use of undefined value here causes undefined behavior
4711// :147:25: error: use of undefined value here causes undefined behavior
4712// :147:25: error: use of undefined value here causes undefined behavior
4713// :147:25: error: use of undefined value here causes undefined behavior
4714// :147:25: error: use of undefined value here causes undefined behavior
4715// :147:25: error: use of undefined value here causes undefined behavior
4716// :147:25: error: use of undefined value here causes undefined behavior
4717// :147:25: error: use of undefined value here causes undefined behavior
4718// :147:25: error: use of undefined value here causes undefined behavior
4719// :147:25: error: use of undefined value here causes undefined behavior
4720// :147:25: error: use of undefined value here causes undefined behavior
4721// :147:25: error: use of undefined value here causes undefined behavior
4722// :147:25: error: use of undefined value here causes undefined behavior
4723// :147:25: error: use of undefined value here causes undefined behavior
4724// :147:25: error: use of undefined value here causes undefined behavior
4725// :147:25: error: use of undefined value here causes undefined behavior
4726// :147:25: error: use of undefined value here causes undefined behavior
4727// :147:25: error: use of undefined value here causes undefined behavior
4728// :147:25: error: use of undefined value here causes undefined behavior
4729// :147:25: error: use of undefined value here causes undefined behavior
4730// :147:25: error: use of undefined value here causes undefined behavior
4731// :147:25: error: use of undefined value here causes undefined behavior
4732// :147:25: error: use of undefined value here causes undefined behavior
4733// :147:25: error: use of undefined value here causes undefined behavior
4734// :147:25: error: use of undefined value here causes undefined behavior
4735// :147:25: error: use of undefined value here causes undefined behavior
4736// :147:25: error: use of undefined value here causes undefined behavior
4737// :147:25: error: use of undefined value here causes undefined behavior
4738// :147:25: error: use of undefined value here causes undefined behavior
4739// :147:25: error: use of undefined value here causes undefined behavior
4740// :147:25: error: use of undefined value here causes undefined behavior
4741// :147:25: error: use of undefined value here causes undefined behavior
4742// :147:25: error: use of undefined value here causes undefined behavior
4743// :147:25: error: use of undefined value here causes undefined behavior
4744// :147:25: error: use of undefined value here causes undefined behavior
4745// :147:25: error: use of undefined value here causes undefined behavior
4746// :147:25: error: use of undefined value here causes undefined behavior
4747// :147:25: error: use of undefined value here causes undefined behavior
4748// :147:25: error: use of undefined value here causes undefined behavior
4749// :147:25: error: use of undefined value here causes undefined behavior
4750// :147:25: error: use of undefined value here causes undefined behavior
4751// :147:25: error: use of undefined value here causes undefined behavior
4752// :147:25: error: use of undefined value here causes undefined behavior
4753// :147:25: error: use of undefined value here causes undefined behavior
4754// :147:25: error: use of undefined value here causes undefined behavior
4755// :147:25: error: use of undefined value here causes undefined behavior
4756// :147:25: error: use of undefined value here causes undefined behavior
4757// :147:25: error: use of undefined value here causes undefined behavior
4758// :147:25: error: use of undefined value here causes undefined behavior
4759// :147:25: error: use of undefined value here causes undefined behavior
4760// :147:25: error: use of undefined value here causes undefined behavior
4761// :147:25: error: use of undefined value here causes undefined behavior
4762// :147:25: error: use of undefined value here causes undefined behavior
4763// :147:25: error: use of undefined value here causes undefined behavior
4764// :147:25: error: use of undefined value here causes undefined behavior
4765// :147:25: error: use of undefined value here causes undefined behavior
4766// :147:25: error: use of undefined value here causes undefined behavior
4767// :147:25: error: use of undefined value here causes undefined behavior
4768// :147:25: error: use of undefined value here causes undefined behavior
4769// :147:25: error: use of undefined value here causes undefined behavior
4770// :147:25: error: use of undefined value here causes undefined behavior
4771// :147:25: error: use of undefined value here causes undefined behavior
4772// :147:25: error: use of undefined value here causes undefined behavior
4773// :147:25: error: use of undefined value here causes undefined behavior
4774// :147:25: error: use of undefined value here causes undefined behavior
4775// :147:25: error: use of undefined value here causes undefined behavior
4776// :147:25: error: use of undefined value here causes undefined behavior
4777// :147:25: error: use of undefined value here causes undefined behavior
4778// :147:25: error: use of undefined value here causes undefined behavior
4779// :147:25: error: use of undefined value here causes undefined behavior
4780// :147:25: error: use of undefined value here causes undefined behavior
4781// :147:25: error: use of undefined value here causes undefined behavior
4782// :147:25: error: use of undefined value here causes undefined behavior
4783// :147:25: error: use of undefined value here causes undefined behavior
4784// :147:25: error: use of undefined value here causes undefined behavior
4785// :147:25: error: use of undefined value here causes undefined behavior
4786// :147:25: error: use of undefined value here causes undefined behavior
4787// :147:25: error: use of undefined value here causes undefined behavior
4788// :147:25: error: use of undefined value here causes undefined behavior
4789// :147:25: error: use of undefined value here causes undefined behavior
4790// :147:25: error: use of undefined value here causes undefined behavior
4791// :147:25: error: use of undefined value here causes undefined behavior
4792// :147:25: error: use of undefined value here causes undefined behavior
4793// :147:25: error: use of undefined value here causes undefined behavior
4794// :147:25: error: use of undefined value here causes undefined behavior
4795// :147:25: error: use of undefined value here causes undefined behavior
4796// :151:22: error: use of undefined value here causes undefined behavior
4797// :151:22: error: use of undefined value here causes undefined behavior
4798// :151:22: error: use of undefined value here causes undefined behavior
4799// :151:22: error: use of undefined value here causes undefined behavior
4800// :151:22: error: use of undefined value here causes undefined behavior
4801// :151:22: error: use of undefined value here causes undefined behavior
4802// :151:22: error: use of undefined value here causes undefined behavior
4803// :151:22: error: use of undefined value here causes undefined behavior
4804// :151:22: error: use of undefined value here causes undefined behavior
4805// :151:22: error: use of undefined value here causes undefined behavior
4806// :151:22: error: use of undefined value here causes undefined behavior
4807// :151:22: error: use of undefined value here causes undefined behavior
4808// :151:22: error: use of undefined value here causes undefined behavior
4809// :151:22: error: use of undefined value here causes undefined behavior
4810// :151:22: error: use of undefined value here causes undefined behavior
4811// :151:22: error: use of undefined value here causes undefined behavior
4812// :151:22: error: use of undefined value here causes undefined behavior
4813// :151:22: error: use of undefined value here causes undefined behavior
4814// :151:22: error: use of undefined value here causes undefined behavior
4815// :151:22: error: use of undefined value here causes undefined behavior
4816// :151:22: error: use of undefined value here causes undefined behavior
4817// :151:22: error: use of undefined value here causes undefined behavior
4818// :151:22: error: use of undefined value here causes undefined behavior
4819// :151:22: error: use of undefined value here causes undefined behavior
4820// :151:22: error: use of undefined value here causes undefined behavior
4821// :151:22: error: use of undefined value here causes undefined behavior
4822// :151:22: error: use of undefined value here causes undefined behavior
4823// :151:22: error: use of undefined value here causes undefined behavior
4824// :151:22: error: use of undefined value here causes undefined behavior
4825// :151:22: error: use of undefined value here causes undefined behavior
4826// :151:22: error: use of undefined value here causes undefined behavior
4827// :151:22: error: use of undefined value here causes undefined behavior
4828// :151:22: error: use of undefined value here causes undefined behavior
4829// :151:22: error: use of undefined value here causes undefined behavior
4830// :151:22: error: use of undefined value here causes undefined behavior
4831// :151:22: error: use of undefined value here causes undefined behavior
4832// :151:22: error: use of undefined value here causes undefined behavior
4833// :151:22: error: use of undefined value here causes undefined behavior
4834// :151:22: error: use of undefined value here causes undefined behavior
4835// :151:22: error: use of undefined value here causes undefined behavior
4836// :151:22: error: use of undefined value here causes undefined behavior
4837// :151:22: error: use of undefined value here causes undefined behavior
4838// :151:22: error: use of undefined value here causes undefined behavior
4839// :151:22: error: use of undefined value here causes undefined behavior
4840// :151:22: error: use of undefined value here causes undefined behavior
4841// :151:22: error: use of undefined value here causes undefined behavior
4842// :151:22: error: use of undefined value here causes undefined behavior
4843// :151:22: error: use of undefined value here causes undefined behavior
4844// :151:22: error: use of undefined value here causes undefined behavior
4845// :151:22: error: use of undefined value here causes undefined behavior
4846// :151:22: error: use of undefined value here causes undefined behavior
4847// :151:22: error: use of undefined value here causes undefined behavior
4848// :151:22: error: use of undefined value here causes undefined behavior
4849// :151:22: error: use of undefined value here causes undefined behavior
4850// :151:22: error: use of undefined value here causes undefined behavior
4851// :151:22: error: use of undefined value here causes undefined behavior
4852// :151:22: error: use of undefined value here causes undefined behavior
4853// :151:22: error: use of undefined value here causes undefined behavior
4854// :151:22: error: use of undefined value here causes undefined behavior
4855// :151:22: error: use of undefined value here causes undefined behavior
4856// :151:22: error: use of undefined value here causes undefined behavior
4857// :151:22: error: use of undefined value here causes undefined behavior
4858// :151:22: error: use of undefined value here causes undefined behavior
4859// :151:22: error: use of undefined value here causes undefined behavior
4860// :151:22: error: use of undefined value here causes undefined behavior
4861// :151:22: error: use of undefined value here causes undefined behavior
4862// :151:22: error: use of undefined value here causes undefined behavior
4863// :151:22: error: use of undefined value here causes undefined behavior
4864// :151:22: error: use of undefined value here causes undefined behavior
4865// :151:22: error: use of undefined value here causes undefined behavior
4866// :151:22: error: use of undefined value here causes undefined behavior
4867// :151:22: error: use of undefined value here causes undefined behavior
4868// :151:22: error: use of undefined value here causes undefined behavior
4869// :151:22: error: use of undefined value here causes undefined behavior
4870// :151:22: error: use of undefined value here causes undefined behavior
4871// :151:22: error: use of undefined value here causes undefined behavior
4872// :151:22: error: use of undefined value here causes undefined behavior
4873// :151:22: error: use of undefined value here causes undefined behavior
4874// :151:22: error: use of undefined value here causes undefined behavior
4875// :151:22: error: use of undefined value here causes undefined behavior
4876// :151:22: error: use of undefined value here causes undefined behavior
4877// :151:22: error: use of undefined value here causes undefined behavior
4878// :151:22: error: use of undefined value here causes undefined behavior
4879// :151:22: error: use of undefined value here causes undefined behavior
4880// :151:22: error: use of undefined value here causes undefined behavior
4881// :151:22: error: use of undefined value here causes undefined behavior
4882// :151:22: error: use of undefined value here causes undefined behavior
4883// :151:22: error: use of undefined value here causes undefined behavior
4884// :151:22: error: use of undefined value here causes undefined behavior
4885// :151:22: error: use of undefined value here causes undefined behavior
4886// :151:22: error: use of undefined value here causes undefined behavior
4887// :151:22: error: use of undefined value here causes undefined behavior
4888// :151:22: error: use of undefined value here causes undefined behavior
4889// :151:22: error: use of undefined value here causes undefined behavior
4890// :151:22: error: use of undefined value here causes undefined behavior
4891// :151:22: error: use of undefined value here causes undefined behavior
4892// :151:22: error: use of undefined value here causes undefined behavior
4893// :151:22: error: use of undefined value here causes undefined behavior
4894// :151:22: error: use of undefined value here causes undefined behavior
4895// :151:22: error: use of undefined value here causes undefined behavior
4896// :151:22: error: use of undefined value here causes undefined behavior
4897// :151:22: error: use of undefined value here causes undefined behavior
4898// :151:22: error: use of undefined value here causes undefined behavior
4899// :151:22: error: use of undefined value here causes undefined behavior
4900// :151:22: error: use of undefined value here causes undefined behavior
4901// :151:22: error: use of undefined value here causes undefined behavior
4902// :151:22: error: use of undefined value here causes undefined behavior
4903// :151:22: error: use of undefined value here causes undefined behavior
4904// :151:22: error: use of undefined value here causes undefined behavior
4905// :151:22: error: use of undefined value here causes undefined behavior
4906// :151:22: error: use of undefined value here causes undefined behavior
4907// :151:22: error: use of undefined value here causes undefined behavior
4908// :151:22: error: use of undefined value here causes undefined behavior
4909// :151:22: error: use of undefined value here causes undefined behavior
4910// :151:22: error: use of undefined value here causes undefined behavior
4911// :151:22: error: use of undefined value here causes undefined behavior
4912// :151:22: error: use of undefined value here causes undefined behavior
4913// :151:22: error: use of undefined value here causes undefined behavior
4914// :151:22: error: use of undefined value here causes undefined behavior
4915// :151:22: error: use of undefined value here causes undefined behavior
4916// :151:22: error: use of undefined value here causes undefined behavior
4917// :151:22: error: use of undefined value here causes undefined behavior
4918// :151:22: error: use of undefined value here causes undefined behavior
4919// :151:22: error: use of undefined value here causes undefined behavior
4920// :151:22: error: use of undefined value here causes undefined behavior
4921// :151:22: error: use of undefined value here causes undefined behavior
4922// :151:22: error: use of undefined value here causes undefined behavior
4923// :151:22: error: use of undefined value here causes undefined behavior
4924// :151:22: error: use of undefined value here causes undefined behavior
4925// :151:22: error: use of undefined value here causes undefined behavior
4926// :151:22: error: use of undefined value here causes undefined behavior
4927// :151:22: error: use of undefined value here causes undefined behavior
4928// :151:22: error: use of undefined value here causes undefined behavior
4929// :151:22: error: use of undefined value here causes undefined behavior
4930// :151:22: error: use of undefined value here causes undefined behavior
4931// :151:22: error: use of undefined value here causes undefined behavior
4932// :151:22: error: use of undefined value here causes undefined behavior
4933// :151:22: error: use of undefined value here causes undefined behavior
4934// :151:22: error: use of undefined value here causes undefined behavior
4935// :151:22: error: use of undefined value here causes undefined behavior
4936// :151:22: error: use of undefined value here causes undefined behavior
4937// :151:22: error: use of undefined value here causes undefined behavior
4938// :151:22: error: use of undefined value here causes undefined behavior
4939// :151:22: error: use of undefined value here causes undefined behavior
4940// :151:22: error: use of undefined value here causes undefined behavior
4941// :151:22: error: use of undefined value here causes undefined behavior
4942// :151:22: error: use of undefined value here causes undefined behavior
4943// :151:22: error: use of undefined value here causes undefined behavior
4944// :151:22: error: use of undefined value here causes undefined behavior
4945// :151:22: error: use of undefined value here causes undefined behavior
4946// :151:22: error: use of undefined value here causes undefined behavior
4947// :151:22: error: use of undefined value here causes undefined behavior
4948// :151:22: error: use of undefined value here causes undefined behavior
4949// :151:22: error: use of undefined value here causes undefined behavior
4950// :151:25: error: use of undefined value here causes undefined behavior
4951// :151:25: error: use of undefined value here causes undefined behavior
4952// :151:25: error: use of undefined value here causes undefined behavior
4953// :151:25: error: use of undefined value here causes undefined behavior
4954// :151:25: error: use of undefined value here causes undefined behavior
4955// :151:25: error: use of undefined value here causes undefined behavior
4956// :151:25: error: use of undefined value here causes undefined behavior
4957// :151:25: error: use of undefined value here causes undefined behavior
4958// :151:25: error: use of undefined value here causes undefined behavior
4959// :151:25: error: use of undefined value here causes undefined behavior
4960// :151:25: error: use of undefined value here causes undefined behavior
4961// :151:25: error: use of undefined value here causes undefined behavior
4962// :151:25: error: use of undefined value here causes undefined behavior
4963// :151:25: error: use of undefined value here causes undefined behavior
4964// :151:25: error: use of undefined value here causes undefined behavior
4965// :151:25: error: use of undefined value here causes undefined behavior
4966// :151:25: error: use of undefined value here causes undefined behavior
4967// :151:25: error: use of undefined value here causes undefined behavior
4968// :151:25: error: use of undefined value here causes undefined behavior
4969// :151:25: error: use of undefined value here causes undefined behavior
4970// :151:25: error: use of undefined value here causes undefined behavior
4971// :151:25: error: use of undefined value here causes undefined behavior
4972// :151:25: error: use of undefined value here causes undefined behavior
4973// :151:25: error: use of undefined value here causes undefined behavior
4974// :151:25: error: use of undefined value here causes undefined behavior
4975// :151:25: error: use of undefined value here causes undefined behavior
4976// :151:25: error: use of undefined value here causes undefined behavior
4977// :151:25: error: use of undefined value here causes undefined behavior
4978// :151:25: error: use of undefined value here causes undefined behavior
4979// :151:25: error: use of undefined value here causes undefined behavior
4980// :151:25: error: use of undefined value here causes undefined behavior
4981// :151:25: error: use of undefined value here causes undefined behavior
4982// :151:25: error: use of undefined value here causes undefined behavior
4983// :151:25: error: use of undefined value here causes undefined behavior
4984// :151:25: error: use of undefined value here causes undefined behavior
4985// :151:25: error: use of undefined value here causes undefined behavior
4986// :151:25: error: use of undefined value here causes undefined behavior
4987// :151:25: error: use of undefined value here causes undefined behavior
4988// :151:25: error: use of undefined value here causes undefined behavior
4989// :151:25: error: use of undefined value here causes undefined behavior
4990// :151:25: error: use of undefined value here causes undefined behavior
4991// :151:25: error: use of undefined value here causes undefined behavior
4992// :151:25: error: use of undefined value here causes undefined behavior
4993// :151:25: error: use of undefined value here causes undefined behavior
4994// :151:25: error: use of undefined value here causes undefined behavior
4995// :151:25: error: use of undefined value here causes undefined behavior
4996// :151:25: error: use of undefined value here causes undefined behavior
4997// :151:25: error: use of undefined value here causes undefined behavior
4998// :151:25: error: use of undefined value here causes undefined behavior
4999// :151:25: error: use of undefined value here causes undefined behavior
5000// :151:25: error: use of undefined value here causes undefined behavior
5001// :151:25: error: use of undefined value here causes undefined behavior
5002// :151:25: error: use of undefined value here causes undefined behavior
5003// :151:25: error: use of undefined value here causes undefined behavior
5004// :151:25: error: use of undefined value here causes undefined behavior
5005// :151:25: error: use of undefined value here causes undefined behavior
5006// :151:25: error: use of undefined value here causes undefined behavior
5007// :151:25: error: use of undefined value here causes undefined behavior
5008// :151:25: error: use of undefined value here causes undefined behavior
5009// :151:25: error: use of undefined value here causes undefined behavior
5010// :151:25: error: use of undefined value here causes undefined behavior
5011// :151:25: error: use of undefined value here causes undefined behavior
5012// :151:25: error: use of undefined value here causes undefined behavior
5013// :151:25: error: use of undefined value here causes undefined behavior
5014// :151:25: error: use of undefined value here causes undefined behavior
5015// :151:25: error: use of undefined value here causes undefined behavior
5016// :151:25: error: use of undefined value here causes undefined behavior
5017// :151:25: error: use of undefined value here causes undefined behavior
5018// :151:25: error: use of undefined value here causes undefined behavior
5019// :151:25: error: use of undefined value here causes undefined behavior
5020// :151:25: error: use of undefined value here causes undefined behavior
5021// :151:25: error: use of undefined value here causes undefined behavior
5022// :151:25: error: use of undefined value here causes undefined behavior
5023// :151:25: error: use of undefined value here causes undefined behavior
5024// :151:25: error: use of undefined value here causes undefined behavior
5025// :151:25: error: use of undefined value here causes undefined behavior
5026// :151:25: error: use of undefined value here causes undefined behavior
5027// :151:25: error: use of undefined value here causes undefined behavior
5028// :151:25: error: use of undefined value here causes undefined behavior
5029// :151:25: error: use of undefined value here causes undefined behavior
5030// :151:25: error: use of undefined value here causes undefined behavior
5031// :151:25: error: use of undefined value here causes undefined behavior
5032// :151:25: error: use of undefined value here causes undefined behavior
5033// :151:25: error: use of undefined value here causes undefined behavior
5034// :151:25: error: use of undefined value here causes undefined behavior
5035// :151:25: error: use of undefined value here causes undefined behavior
5036// :151:25: error: use of undefined value here causes undefined behavior
5037// :151:25: error: use of undefined value here causes undefined behavior
5038// :157:21: error: use of undefined value here causes undefined behavior
5039// :157:21: error: use of undefined value here causes undefined behavior
5040// :157:21: error: use of undefined value here causes undefined behavior
5041// :157:21: error: use of undefined value here causes undefined behavior
5042// :157:21: error: use of undefined value here causes undefined behavior
5043// :157:21: error: use of undefined value here causes undefined behavior
5044// :157:21: error: use of undefined value here causes undefined behavior
5045// :157:21: error: use of undefined value here causes undefined behavior
5046// :157:21: error: use of undefined value here causes undefined behavior
5047// :157:21: error: use of undefined value here causes undefined behavior
5048// :157:21: error: use of undefined value here causes undefined behavior
5049// :157:21: error: use of undefined value here causes undefined behavior
5050// :157:21: error: use of undefined value here causes undefined behavior
5051// :157:21: error: use of undefined value here causes undefined behavior
5052// :157:21: error: use of undefined value here causes undefined behavior
5053// :157:21: error: use of undefined value here causes undefined behavior
5054// :157:21: error: use of undefined value here causes undefined behavior
5055// :157:21: error: use of undefined value here causes undefined behavior
5056// :157:21: error: use of undefined value here causes undefined behavior
5057// :157:21: error: use of undefined value here causes undefined behavior
5058// :157:21: error: use of undefined value here causes undefined behavior
5059// :157:21: error: use of undefined value here causes undefined behavior
5060// :157:21: error: use of undefined value here causes undefined behavior
5061// :157:21: error: use of undefined value here causes undefined behavior
5062// :157:21: error: use of undefined value here causes undefined behavior
5063// :157:21: error: use of undefined value here causes undefined behavior
5064// :157:21: error: use of undefined value here causes undefined behavior
5065// :157:21: error: use of undefined value here causes undefined behavior
5066// :157:21: error: use of undefined value here causes undefined behavior
5067// :157:21: error: use of undefined value here causes undefined behavior
5068// :157:21: error: use of undefined value here causes undefined behavior
5069// :157:21: error: use of undefined value here causes undefined behavior
5070// :157:21: error: use of undefined value here causes undefined behavior
5071// :157:21: error: use of undefined value here causes undefined behavior
5072// :157:21: error: use of undefined value here causes undefined behavior
5073// :157:21: error: use of undefined value here causes undefined behavior
5074// :157:21: error: use of undefined value here causes undefined behavior
5075// :157:21: error: use of undefined value here causes undefined behavior
5076// :157:21: error: use of undefined value here causes undefined behavior
5077// :157:21: error: use of undefined value here causes undefined behavior
5078// :157:21: error: use of undefined value here causes undefined behavior
5079// :157:21: error: use of undefined value here causes undefined behavior
5080// :157:21: error: use of undefined value here causes undefined behavior
5081// :157:21: error: use of undefined value here causes undefined behavior
5082// :157:21: error: use of undefined value here causes undefined behavior
5083// :157:21: error: use of undefined value here causes undefined behavior
5084// :157:21: error: use of undefined value here causes undefined behavior
5085// :157:21: error: use of undefined value here causes undefined behavior
5086// :157:21: error: use of undefined value here causes undefined behavior
5087// :157:21: error: use of undefined value here causes undefined behavior
5088// :157:21: error: use of undefined value here causes undefined behavior
5089// :157:21: error: use of undefined value here causes undefined behavior
5090// :157:21: error: use of undefined value here causes undefined behavior
5091// :157:21: error: use of undefined value here causes undefined behavior
5092// :157:21: error: use of undefined value here causes undefined behavior
5093// :157:21: error: use of undefined value here causes undefined behavior
5094// :157:21: error: use of undefined value here causes undefined behavior
5095// :157:21: error: use of undefined value here causes undefined behavior
5096// :157:21: error: use of undefined value here causes undefined behavior
5097// :157:21: error: use of undefined value here causes undefined behavior
5098// :157:21: error: use of undefined value here causes undefined behavior
5099// :157:21: error: use of undefined value here causes undefined behavior
5100// :157:21: error: use of undefined value here causes undefined behavior
5101// :157:21: error: use of undefined value here causes undefined behavior
5102// :157:21: error: use of undefined value here causes undefined behavior
5103// :157:21: error: use of undefined value here causes undefined behavior
5104// :157:21: error: use of undefined value here causes undefined behavior
5105// :157:21: error: use of undefined value here causes undefined behavior
5106// :157:21: error: use of undefined value here causes undefined behavior
5107// :157:21: error: use of undefined value here causes undefined behavior
5108// :157:21: error: use of undefined value here causes undefined behavior
5109// :157:21: error: use of undefined value here causes undefined behavior
5110// :157:21: error: use of undefined value here causes undefined behavior
5111// :157:21: error: use of undefined value here causes undefined behavior
5112// :157:21: error: use of undefined value here causes undefined behavior
5113// :157:21: error: use of undefined value here causes undefined behavior
5114// :157:21: error: use of undefined value here causes undefined behavior
5115// :157:21: error: use of undefined value here causes undefined behavior
5116// :157:21: error: use of undefined value here causes undefined behavior
5117// :157:21: error: use of undefined value here causes undefined behavior
5118// :157:21: error: use of undefined value here causes undefined behavior
5119// :157:21: error: use of undefined value here causes undefined behavior
5120// :157:21: error: use of undefined value here causes undefined behavior
5121// :157:21: error: use of undefined value here causes undefined behavior
5122// :157:21: error: use of undefined value here causes undefined behavior
5123// :157:21: error: use of undefined value here causes undefined behavior
5124// :157:21: error: use of undefined value here causes undefined behavior
5125// :157:21: error: use of undefined value here causes undefined behavior
5126// :157:21: error: use of undefined value here causes undefined behavior
5127// :157:21: error: use of undefined value here causes undefined behavior
5128// :157:21: error: use of undefined value here causes undefined behavior
5129// :157:21: error: use of undefined value here causes undefined behavior
5130// :157:21: error: use of undefined value here causes undefined behavior
5131// :157:21: error: use of undefined value here causes undefined behavior
5132// :157:21: error: use of undefined value here causes undefined behavior
5133// :157:21: error: use of undefined value here causes undefined behavior
5134// :157:21: error: use of undefined value here causes undefined behavior
5135// :157:21: error: use of undefined value here causes undefined behavior
5136// :157:21: error: use of undefined value here causes undefined behavior
5137// :157:21: error: use of undefined value here causes undefined behavior
5138// :157:21: error: use of undefined value here causes undefined behavior
5139// :157:21: error: use of undefined value here causes undefined behavior
5140// :157:21: error: use of undefined value here causes undefined behavior
5141// :157:21: error: use of undefined value here causes undefined behavior
5142// :157:21: error: use of undefined value here causes undefined behavior
5143// :157:21: error: use of undefined value here causes undefined behavior
5144// :157:21: error: use of undefined value here causes undefined behavior
5145// :157:21: error: use of undefined value here causes undefined behavior
5146// :157:21: error: use of undefined value here causes undefined behavior
5147// :157:21: error: use of undefined value here causes undefined behavior
5148// :157:21: error: use of undefined value here causes undefined behavior
5149// :157:21: error: use of undefined value here causes undefined behavior
5150// :157:21: error: use of undefined value here causes undefined behavior
5151// :157:21: error: use of undefined value here causes undefined behavior
5152// :157:21: error: use of undefined value here causes undefined behavior
5153// :157:21: error: use of undefined value here causes undefined behavior
5154// :157:21: error: use of undefined value here causes undefined behavior
5155// :157:21: error: use of undefined value here causes undefined behavior
5156// :157:21: error: use of undefined value here causes undefined behavior
5157// :157:21: error: use of undefined value here causes undefined behavior
5158// :157:21: error: use of undefined value here causes undefined behavior
5159// :157:21: error: use of undefined value here causes undefined behavior
5160// :157:21: error: use of undefined value here causes undefined behavior
5161// :157:21: error: use of undefined value here causes undefined behavior
5162// :157:21: error: use of undefined value here causes undefined behavior
5163// :157:21: error: use of undefined value here causes undefined behavior
5164// :157:21: error: use of undefined value here causes undefined behavior
5165// :157:21: error: use of undefined value here causes undefined behavior
5166// :157:21: error: use of undefined value here causes undefined behavior
5167// :157:21: error: use of undefined value here causes undefined behavior
5168// :157:21: error: use of undefined value here causes undefined behavior
5169// :157:21: error: use of undefined value here causes undefined behavior
5170// :157:21: error: use of undefined value here causes undefined behavior
5171// :157:21: error: use of undefined value here causes undefined behavior
5172// :157:21: error: use of undefined value here causes undefined behavior
5173// :157:21: error: use of undefined value here causes undefined behavior
5174// :157:21: error: use of undefined value here causes undefined behavior
5175// :157:21: error: use of undefined value here causes undefined behavior
5176// :157:21: error: use of undefined value here causes undefined behavior
5177// :157:21: error: use of undefined value here causes undefined behavior
5178// :157:21: error: use of undefined value here causes undefined behavior
5179// :157:21: error: use of undefined value here causes undefined behavior
5180// :157:21: error: use of undefined value here causes undefined behavior
5181// :157:21: error: use of undefined value here causes undefined behavior
5182// :157:21: error: use of undefined value here causes undefined behavior
5183// :157:21: error: use of undefined value here causes undefined behavior
5184// :157:21: error: use of undefined value here causes undefined behavior
5185// :157:21: error: use of undefined value here causes undefined behavior
5186// :157:21: error: use of undefined value here causes undefined behavior
5187// :157:21: error: use of undefined value here causes undefined behavior
5188// :157:21: error: use of undefined value here causes undefined behavior
5189// :157:21: error: use of undefined value here causes undefined behavior
5190// :157:21: error: use of undefined value here causes undefined behavior
5191// :157:21: error: use of undefined value here causes undefined behavior
5192// :157:21: error: use of undefined value here causes undefined behavior
5193// :157:21: error: use of undefined value here causes undefined behavior
5194// :157:21: error: use of undefined value here causes undefined behavior
5195// :157:21: error: use of undefined value here causes undefined behavior
5196// :157:21: error: use of undefined value here causes undefined behavior
5197// :157:21: error: use of undefined value here causes undefined behavior
5198// :157:21: error: use of undefined value here causes undefined behavior
5199// :157:21: error: use of undefined value here causes undefined behavior
5200// :157:21: error: use of undefined value here causes undefined behavior
5201// :157:21: error: use of undefined value here causes undefined behavior
5202// :157:21: error: use of undefined value here causes undefined behavior
5203// :157:21: error: use of undefined value here causes undefined behavior
5204// :157:21: error: use of undefined value here causes undefined behavior
5205// :157:21: error: use of undefined value here causes undefined behavior
5206// :157:21: error: use of undefined value here causes undefined behavior
5207// :157:21: error: use of undefined value here causes undefined behavior
5208// :157:21: error: use of undefined value here causes undefined behavior
5209// :157:21: error: use of undefined value here causes undefined behavior
5210// :157:21: error: use of undefined value here causes undefined behavior
5211// :157:21: error: use of undefined value here causes undefined behavior
5212// :157:21: error: use of undefined value here causes undefined behavior
5213// :157:21: error: use of undefined value here causes undefined behavior
5214// :157:21: error: use of undefined value here causes undefined behavior
5215// :157:21: error: use of undefined value here causes undefined behavior
5216// :157:21: error: use of undefined value here causes undefined behavior
5217// :157:21: error: use of undefined value here causes undefined behavior
5218// :157:21: error: use of undefined value here causes undefined behavior
5219// :157:21: error: use of undefined value here causes undefined behavior
5220// :157:21: error: use of undefined value here causes undefined behavior
5221// :157:21: error: use of undefined value here causes undefined behavior
5222// :157:21: error: use of undefined value here causes undefined behavior
5223// :157:21: error: use of undefined value here causes undefined behavior
5224// :157:21: error: use of undefined value here causes undefined behavior
5225// :157:21: error: use of undefined value here causes undefined behavior
5226// :157:21: error: use of undefined value here causes undefined behavior
5227// :157:21: error: use of undefined value here causes undefined behavior
5228// :157:21: error: use of undefined value here causes undefined behavior
5229// :157:21: error: use of undefined value here causes undefined behavior
5230// :157:21: error: use of undefined value here causes undefined behavior
5231// :157:21: error: use of undefined value here causes undefined behavior
5232// :157:21: error: use of undefined value here causes undefined behavior
5233// :157:21: error: use of undefined value here causes undefined behavior
5234// :157:21: error: use of undefined value here causes undefined behavior
5235// :157:21: error: use of undefined value here causes undefined behavior
5236// :157:21: error: use of undefined value here causes undefined behavior
5237// :157:21: error: use of undefined value here causes undefined behavior
5238// :157:21: error: use of undefined value here causes undefined behavior
5239// :157:21: error: use of undefined value here causes undefined behavior
5240// :157:21: error: use of undefined value here causes undefined behavior
5241// :157:21: error: use of undefined value here causes undefined behavior
5242// :157:21: error: use of undefined value here causes undefined behavior
5243// :157:21: error: use of undefined value here causes undefined behavior
5244// :157:21: error: use of undefined value here causes undefined behavior
5245// :157:21: error: use of undefined value here causes undefined behavior
5246// :157:21: error: use of undefined value here causes undefined behavior
5247// :157:21: error: use of undefined value here causes undefined behavior
5248// :157:21: error: use of undefined value here causes undefined behavior
5249// :157:21: error: use of undefined value here causes undefined behavior
5250// :157:21: error: use of undefined value here causes undefined behavior
5251// :157:21: error: use of undefined value here causes undefined behavior
5252// :157:21: error: use of undefined value here causes undefined behavior
5253// :157:21: error: use of undefined value here causes undefined behavior
5254// :157:21: error: use of undefined value here causes undefined behavior
5255// :157:21: error: use of undefined value here causes undefined behavior
5256// :157:21: error: use of undefined value here causes undefined behavior
5257// :157:21: error: use of undefined value here causes undefined behavior
5258// :157:21: error: use of undefined value here causes undefined behavior
5259// :157:21: error: use of undefined value here causes undefined behavior
5260// :157:21: error: use of undefined value here causes undefined behavior
5261// :157:21: error: use of undefined value here causes undefined behavior
5262// :157:21: error: use of undefined value here causes undefined behavior
5263// :157:21: error: use of undefined value here causes undefined behavior
5264// :157:21: error: use of undefined value here causes undefined behavior
5265// :157:21: error: use of undefined value here causes undefined behavior
5266// :157:21: error: use of undefined value here causes undefined behavior
5267// :157:21: error: use of undefined value here causes undefined behavior
5268// :157:21: error: use of undefined value here causes undefined behavior
5269// :157:21: error: use of undefined value here causes undefined behavior
5270// :157:21: error: use of undefined value here causes undefined behavior
5271// :157:21: error: use of undefined value here causes undefined behavior
5272// :157:21: error: use of undefined value here causes undefined behavior
5273// :157:21: error: use of undefined value here causes undefined behavior
5274// :157:21: error: use of undefined value here causes undefined behavior
5275// :157:21: error: use of undefined value here causes undefined behavior
5276// :157:21: error: use of undefined value here causes undefined behavior
5277// :157:21: error: use of undefined value here causes undefined behavior
5278// :157:21: error: use of undefined value here causes undefined behavior
5279// :157:21: error: use of undefined value here causes undefined behavior
5280// :161:30: error: use of undefined value here causes undefined behavior
5281// :161:30: error: use of undefined value here causes undefined behavior
5282// :161:30: error: use of undefined value here causes undefined behavior
5283// :161:30: error: use of undefined value here causes undefined behavior
5284// :161:30: error: use of undefined value here causes undefined behavior
5285// :161:30: error: use of undefined value here causes undefined behavior
5286// :161:30: error: use of undefined value here causes undefined behavior
5287// :161:30: error: use of undefined value here causes undefined behavior
5288// :161:30: error: use of undefined value here causes undefined behavior
5289// :161:30: error: use of undefined value here causes undefined behavior
5290// :161:30: error: use of undefined value here causes undefined behavior
5291// :161:30: error: use of undefined value here causes undefined behavior
5292// :161:30: error: use of undefined value here causes undefined behavior
5293// :161:30: error: use of undefined value here causes undefined behavior
5294// :161:30: error: use of undefined value here causes undefined behavior
5295// :161:30: error: use of undefined value here causes undefined behavior
5296// :161:30: error: use of undefined value here causes undefined behavior
5297// :161:30: error: use of undefined value here causes undefined behavior
5298// :161:30: error: use of undefined value here causes undefined behavior
5299// :161:30: error: use of undefined value here causes undefined behavior
5300// :161:30: error: use of undefined value here causes undefined behavior
5301// :161:30: error: use of undefined value here causes undefined behavior
5302// :161:30: error: use of undefined value here causes undefined behavior
5303// :161:30: error: use of undefined value here causes undefined behavior
5304// :161:30: error: use of undefined value here causes undefined behavior
5305// :161:30: error: use of undefined value here causes undefined behavior
5306// :161:30: error: use of undefined value here causes undefined behavior
5307// :161:30: error: use of undefined value here causes undefined behavior
5308// :161:30: error: use of undefined value here causes undefined behavior
5309// :161:30: error: use of undefined value here causes undefined behavior
5310// :161:30: error: use of undefined value here causes undefined behavior
5311// :161:30: error: use of undefined value here causes undefined behavior
5312// :161:30: error: use of undefined value here causes undefined behavior
5313// :161:30: error: use of undefined value here causes undefined behavior
5314// :161:30: error: use of undefined value here causes undefined behavior
5315// :161:30: error: use of undefined value here causes undefined behavior
5316// :161:30: error: use of undefined value here causes undefined behavior
5317// :161:30: error: use of undefined value here causes undefined behavior
5318// :161:30: error: use of undefined value here causes undefined behavior
5319// :161:30: error: use of undefined value here causes undefined behavior
5320// :161:30: error: use of undefined value here causes undefined behavior
5321// :161:30: error: use of undefined value here causes undefined behavior
5322// :161:30: error: use of undefined value here causes undefined behavior
5323// :161:30: error: use of undefined value here causes undefined behavior
5324// :161:30: error: use of undefined value here causes undefined behavior
5325// :161:30: error: use of undefined value here causes undefined behavior
5326// :161:30: error: use of undefined value here causes undefined behavior
5327// :161:30: error: use of undefined value here causes undefined behavior
5328// :161:30: error: use of undefined value here causes undefined behavior
5329// :161:30: error: use of undefined value here causes undefined behavior
5330// :161:30: error: use of undefined value here causes undefined behavior
5331// :161:30: error: use of undefined value here causes undefined behavior
5332// :161:30: error: use of undefined value here causes undefined behavior
5333// :161:30: error: use of undefined value here causes undefined behavior
5334// :161:30: error: use of undefined value here causes undefined behavior
5335// :161:30: error: use of undefined value here causes undefined behavior
5336// :161:30: error: use of undefined value here causes undefined behavior
5337// :161:30: error: use of undefined value here causes undefined behavior
5338// :161:30: error: use of undefined value here causes undefined behavior
5339// :161:30: error: use of undefined value here causes undefined behavior
5340// :161:30: error: use of undefined value here causes undefined behavior
5341// :161:30: error: use of undefined value here causes undefined behavior
5342// :161:30: error: use of undefined value here causes undefined behavior
5343// :161:30: error: use of undefined value here causes undefined behavior
5344// :161:30: error: use of undefined value here causes undefined behavior
5345// :161:30: error: use of undefined value here causes undefined behavior
5346// :161:30: error: use of undefined value here causes undefined behavior
5347// :161:30: error: use of undefined value here causes undefined behavior
5348// :161:30: error: use of undefined value here causes undefined behavior
5349// :161:30: error: use of undefined value here causes undefined behavior
5350// :161:30: error: use of undefined value here causes undefined behavior
5351// :161:30: error: use of undefined value here causes undefined behavior
5352// :161:30: error: use of undefined value here causes undefined behavior
5353// :161:30: error: use of undefined value here causes undefined behavior
5354// :161:30: error: use of undefined value here causes undefined behavior
5355// :161:30: error: use of undefined value here causes undefined behavior
5356// :161:30: error: use of undefined value here causes undefined behavior
5357// :161:30: error: use of undefined value here causes undefined behavior
5358// :161:30: error: use of undefined value here causes undefined behavior
5359// :161:30: error: use of undefined value here causes undefined behavior
5360// :161:30: error: use of undefined value here causes undefined behavior
5361// :161:30: error: use of undefined value here causes undefined behavior
5362// :161:30: error: use of undefined value here causes undefined behavior
5363// :161:30: error: use of undefined value here causes undefined behavior
5364// :161:30: error: use of undefined value here causes undefined behavior
5365// :161:30: error: use of undefined value here causes undefined behavior
5366// :161:30: error: use of undefined value here causes undefined behavior
5367// :161:30: error: use of undefined value here causes undefined behavior
5368// :161:30: error: use of undefined value here causes undefined behavior
5369// :161:30: error: use of undefined value here causes undefined behavior
5370// :161:30: error: use of undefined value here causes undefined behavior
5371// :161:30: error: use of undefined value here causes undefined behavior
5372// :161:30: error: use of undefined value here causes undefined behavior
5373// :161:30: error: use of undefined value here causes undefined behavior
5374// :161:30: error: use of undefined value here causes undefined behavior
5375// :161:30: error: use of undefined value here causes undefined behavior
5376// :161:30: error: use of undefined value here causes undefined behavior
5377// :161:30: error: use of undefined value here causes undefined behavior
5378// :161:30: error: use of undefined value here causes undefined behavior
5379// :161:30: error: use of undefined value here causes undefined behavior
5380// :161:30: error: use of undefined value here causes undefined behavior
5381// :161:30: error: use of undefined value here causes undefined behavior
5382// :161:30: error: use of undefined value here causes undefined behavior
5383// :161:30: error: use of undefined value here causes undefined behavior
5384// :161:30: error: use of undefined value here causes undefined behavior
5385// :161:30: error: use of undefined value here causes undefined behavior
5386// :161:30: error: use of undefined value here causes undefined behavior
5387// :161:30: error: use of undefined value here causes undefined behavior
5388// :161:30: error: use of undefined value here causes undefined behavior
5389// :161:30: error: use of undefined value here causes undefined behavior
5390// :161:30: error: use of undefined value here causes undefined behavior
5391// :161:30: error: use of undefined value here causes undefined behavior
5392// :161:30: error: use of undefined value here causes undefined behavior
5393// :161:30: error: use of undefined value here causes undefined behavior
5394// :161:30: error: use of undefined value here causes undefined behavior
5395// :161:30: error: use of undefined value here causes undefined behavior
5396// :161:30: error: use of undefined value here causes undefined behavior
5397// :161:30: error: use of undefined value here causes undefined behavior
5398// :161:30: error: use of undefined value here causes undefined behavior
5399// :161:30: error: use of undefined value here causes undefined behavior
5400// :161:30: error: use of undefined value here causes undefined behavior
5401// :161:30: error: use of undefined value here causes undefined behavior
5402// :161:30: error: use of undefined value here causes undefined behavior
5403// :161:30: error: use of undefined value here causes undefined behavior
5404// :161:30: error: use of undefined value here causes undefined behavior
5405// :161:30: error: use of undefined value here causes undefined behavior
5406// :161:30: error: use of undefined value here causes undefined behavior
5407// :161:30: error: use of undefined value here causes undefined behavior
5408// :161:30: error: use of undefined value here causes undefined behavior
5409// :161:30: error: use of undefined value here causes undefined behavior
5410// :161:30: error: use of undefined value here causes undefined behavior
5411// :161:30: error: use of undefined value here causes undefined behavior
5412// :161:30: error: use of undefined value here causes undefined behavior
5413// :161:30: error: use of undefined value here causes undefined behavior
5414// :161:30: error: use of undefined value here causes undefined behavior
5415// :161:30: error: use of undefined value here causes undefined behavior
5416// :161:30: error: use of undefined value here causes undefined behavior
5417// :161:30: error: use of undefined value here causes undefined behavior
5418// :161:30: error: use of undefined value here causes undefined behavior
5419// :161:30: error: use of undefined value here causes undefined behavior
5420// :161:30: error: use of undefined value here causes undefined behavior
5421// :161:30: error: use of undefined value here causes undefined behavior
5422// :161:30: error: use of undefined value here causes undefined behavior
5423// :161:30: error: use of undefined value here causes undefined behavior
5424// :161:30: error: use of undefined value here causes undefined behavior
5425// :161:30: error: use of undefined value here causes undefined behavior
5426// :161:30: error: use of undefined value here causes undefined behavior
5427// :161:30: error: use of undefined value here causes undefined behavior
5428// :161:30: error: use of undefined value here causes undefined behavior
5429// :161:30: error: use of undefined value here causes undefined behavior
5430// :161:30: error: use of undefined value here causes undefined behavior
5431// :161:30: error: use of undefined value here causes undefined behavior
5432// :161:30: error: use of undefined value here causes undefined behavior
5433// :161:30: error: use of undefined value here causes undefined behavior
5434// :161:30: error: use of undefined value here causes undefined behavior
5435// :161:30: error: use of undefined value here causes undefined behavior
5436// :161:30: error: use of undefined value here causes undefined behavior
5437// :161:30: error: use of undefined value here causes undefined behavior
5438// :161:30: error: use of undefined value here causes undefined behavior
5439// :161:30: error: use of undefined value here causes undefined behavior
5440// :161:30: error: use of undefined value here causes undefined behavior
5441// :161:30: error: use of undefined value here causes undefined behavior
5442// :161:30: error: use of undefined value here causes undefined behavior
5443// :161:30: error: use of undefined value here causes undefined behavior
5444// :161:30: error: use of undefined value here causes undefined behavior
5445// :161:30: error: use of undefined value here causes undefined behavior
5446// :161:30: error: use of undefined value here causes undefined behavior
5447// :161:30: error: use of undefined value here causes undefined behavior
5448// :161:30: error: use of undefined value here causes undefined behavior
5449// :161:30: error: use of undefined value here causes undefined behavior
5450// :161:30: error: use of undefined value here causes undefined behavior
5451// :161:30: error: use of undefined value here causes undefined behavior
5452// :161:30: error: use of undefined value here causes undefined behavior
5453// :161:30: error: use of undefined value here causes undefined behavior
5454// :161:30: error: use of undefined value here causes undefined behavior
5455// :161:30: error: use of undefined value here causes undefined behavior
5456// :161:30: error: use of undefined value here causes undefined behavior
5457// :161:30: error: use of undefined value here causes undefined behavior
5458// :161:30: error: use of undefined value here causes undefined behavior
5459// :161:30: error: use of undefined value here causes undefined behavior
5460// :161:30: error: use of undefined value here causes undefined behavior
5461// :161:30: error: use of undefined value here causes undefined behavior
5462// :161:30: error: use of undefined value here causes undefined behavior
5463// :161:30: error: use of undefined value here causes undefined behavior
5464// :161:30: error: use of undefined value here causes undefined behavior
5465// :161:30: error: use of undefined value here causes undefined behavior
5466// :161:30: error: use of undefined value here causes undefined behavior
5467// :161:30: error: use of undefined value here causes undefined behavior
5468// :161:30: error: use of undefined value here causes undefined behavior
5469// :161:30: error: use of undefined value here causes undefined behavior
5470// :161:30: error: use of undefined value here causes undefined behavior
5471// :161:30: error: use of undefined value here causes undefined behavior
5472// :161:30: error: use of undefined value here causes undefined behavior
5473// :161:30: error: use of undefined value here causes undefined behavior
5474// :161:30: error: use of undefined value here causes undefined behavior
5475// :161:30: error: use of undefined value here causes undefined behavior
5476// :161:30: error: use of undefined value here causes undefined behavior
5477// :161:30: error: use of undefined value here causes undefined behavior
5478// :161:30: error: use of undefined value here causes undefined behavior
5479// :161:30: error: use of undefined value here causes undefined behavior
5480// :161:30: error: use of undefined value here causes undefined behavior
5481// :161:30: error: use of undefined value here causes undefined behavior
5482// :161:30: error: use of undefined value here causes undefined behavior
5483// :161:30: error: use of undefined value here causes undefined behavior
5484// :161:30: error: use of undefined value here causes undefined behavior
5485// :161:30: error: use of undefined value here causes undefined behavior
5486// :161:30: error: use of undefined value here causes undefined behavior
5487// :161:30: error: use of undefined value here causes undefined behavior
5488// :161:30: error: use of undefined value here causes undefined behavior
5489// :161:30: error: use of undefined value here causes undefined behavior
5490// :161:30: error: use of undefined value here causes undefined behavior
5491// :161:30: error: use of undefined value here causes undefined behavior
5492// :161:30: error: use of undefined value here causes undefined behavior
5493// :161:30: error: use of undefined value here causes undefined behavior
5494// :161:30: error: use of undefined value here causes undefined behavior
5495// :161:30: error: use of undefined value here causes undefined behavior
5496// :161:30: error: use of undefined value here causes undefined behavior
5497// :161:30: error: use of undefined value here causes undefined behavior
5498// :161:30: error: use of undefined value here causes undefined behavior
5499// :161:30: error: use of undefined value here causes undefined behavior
5500// :161:30: error: use of undefined value here causes undefined behavior
5501// :161:30: error: use of undefined value here causes undefined behavior
5502// :161:30: error: use of undefined value here causes undefined behavior
5503// :161:30: error: use of undefined value here causes undefined behavior
5504// :161:30: error: use of undefined value here causes undefined behavior
5505// :161:30: error: use of undefined value here causes undefined behavior
5506// :161:30: error: use of undefined value here causes undefined behavior
5507// :161:30: error: use of undefined value here causes undefined behavior
5508// :161:30: error: use of undefined value here causes undefined behavior
5509// :161:30: error: use of undefined value here causes undefined behavior
5510// :161:30: error: use of undefined value here causes undefined behavior
5511// :161:30: error: use of undefined value here causes undefined behavior
5512// :161:30: error: use of undefined value here causes undefined behavior
5513// :161:30: error: use of undefined value here causes undefined behavior
5514// :161:30: error: use of undefined value here causes undefined behavior
5515// :161:30: error: use of undefined value here causes undefined behavior
5516// :161:30: error: use of undefined value here causes undefined behavior
5517// :161:30: error: use of undefined value here causes undefined behavior
5518// :161:30: error: use of undefined value here causes undefined behavior
5519// :161:30: error: use of undefined value here causes undefined behavior
5520// :161:30: error: use of undefined value here causes undefined behavior
5521// :161:30: error: use of undefined value here causes undefined behavior
5522// :165:30: error: use of undefined value here causes undefined behavior
5523// :165:30: error: use of undefined value here causes undefined behavior
5524// :165:30: error: use of undefined value here causes undefined behavior
5525// :165:30: error: use of undefined value here causes undefined behavior
5526// :165:30: error: use of undefined value here causes undefined behavior
5527// :165:30: error: use of undefined value here causes undefined behavior
5528// :165:30: error: use of undefined value here causes undefined behavior
5529// :165:30: error: use of undefined value here causes undefined behavior
5530// :165:30: error: use of undefined value here causes undefined behavior
5531// :165:30: error: use of undefined value here causes undefined behavior
5532// :165:30: error: use of undefined value here causes undefined behavior
5533// :165:30: error: use of undefined value here causes undefined behavior
5534// :165:30: error: use of undefined value here causes undefined behavior
5535// :165:30: error: use of undefined value here causes undefined behavior
5536// :165:30: error: use of undefined value here causes undefined behavior
5537// :165:30: error: use of undefined value here causes undefined behavior
5538// :165:30: error: use of undefined value here causes undefined behavior
5539// :165:30: error: use of undefined value here causes undefined behavior
5540// :165:30: error: use of undefined value here causes undefined behavior
5541// :165:30: error: use of undefined value here causes undefined behavior
5542// :165:30: error: use of undefined value here causes undefined behavior
5543// :165:30: error: use of undefined value here causes undefined behavior
5544// :165:30: error: use of undefined value here causes undefined behavior
5545// :165:30: error: use of undefined value here causes undefined behavior
5546// :165:30: error: use of undefined value here causes undefined behavior
5547// :165:30: error: use of undefined value here causes undefined behavior
5548// :165:30: error: use of undefined value here causes undefined behavior
5549// :165:30: error: use of undefined value here causes undefined behavior
5550// :165:30: error: use of undefined value here causes undefined behavior
5551// :165:30: error: use of undefined value here causes undefined behavior
5552// :165:30: error: use of undefined value here causes undefined behavior
5553// :165:30: error: use of undefined value here causes undefined behavior
5554// :165:30: error: use of undefined value here causes undefined behavior
5555// :165:30: error: use of undefined value here causes undefined behavior
5556// :165:30: error: use of undefined value here causes undefined behavior
5557// :165:30: error: use of undefined value here causes undefined behavior
5558// :165:30: error: use of undefined value here causes undefined behavior
5559// :165:30: error: use of undefined value here causes undefined behavior
5560// :165:30: error: use of undefined value here causes undefined behavior
5561// :165:30: error: use of undefined value here causes undefined behavior
5562// :165:30: error: use of undefined value here causes undefined behavior
5563// :165:30: error: use of undefined value here causes undefined behavior
5564// :165:30: error: use of undefined value here causes undefined behavior
5565// :165:30: error: use of undefined value here causes undefined behavior
5566// :165:30: error: use of undefined value here causes undefined behavior
5567// :165:30: error: use of undefined value here causes undefined behavior
5568// :165:30: error: use of undefined value here causes undefined behavior
5569// :165:30: error: use of undefined value here causes undefined behavior
5570// :165:30: error: use of undefined value here causes undefined behavior
5571// :165:30: error: use of undefined value here causes undefined behavior
5572// :165:30: error: use of undefined value here causes undefined behavior
5573// :165:30: error: use of undefined value here causes undefined behavior
5574// :165:30: error: use of undefined value here causes undefined behavior
5575// :165:30: error: use of undefined value here causes undefined behavior
5576// :165:30: error: use of undefined value here causes undefined behavior
5577// :165:30: error: use of undefined value here causes undefined behavior
5578// :165:30: error: use of undefined value here causes undefined behavior
5579// :165:30: error: use of undefined value here causes undefined behavior
5580// :165:30: error: use of undefined value here causes undefined behavior
5581// :165:30: error: use of undefined value here causes undefined behavior
5582// :165:30: error: use of undefined value here causes undefined behavior
5583// :165:30: error: use of undefined value here causes undefined behavior
5584// :165:30: error: use of undefined value here causes undefined behavior
5585// :165:30: error: use of undefined value here causes undefined behavior
5586// :165:30: error: use of undefined value here causes undefined behavior
5587// :165:30: error: use of undefined value here causes undefined behavior
5588// :165:30: error: use of undefined value here causes undefined behavior
5589// :165:30: error: use of undefined value here causes undefined behavior
5590// :165:30: error: use of undefined value here causes undefined behavior
5591// :165:30: error: use of undefined value here causes undefined behavior
5592// :165:30: error: use of undefined value here causes undefined behavior
5593// :165:30: error: use of undefined value here causes undefined behavior
5594// :165:30: error: use of undefined value here causes undefined behavior
5595// :165:30: error: use of undefined value here causes undefined behavior
5596// :165:30: error: use of undefined value here causes undefined behavior
5597// :165:30: error: use of undefined value here causes undefined behavior
5598// :165:30: error: use of undefined value here causes undefined behavior
5599// :165:30: error: use of undefined value here causes undefined behavior
5600// :165:30: error: use of undefined value here causes undefined behavior
5601// :165:30: error: use of undefined value here causes undefined behavior
5602// :165:30: error: use of undefined value here causes undefined behavior
5603// :165:30: error: use of undefined value here causes undefined behavior
5604// :165:30: error: use of undefined value here causes undefined behavior
5605// :165:30: error: use of undefined value here causes undefined behavior
5606// :165:30: error: use of undefined value here causes undefined behavior
5607// :165:30: error: use of undefined value here causes undefined behavior
5608// :165:30: error: use of undefined value here causes undefined behavior
5609// :165:30: error: use of undefined value here causes undefined behavior
5610// :165:30: error: use of undefined value here causes undefined behavior
5611// :165:30: error: use of undefined value here causes undefined behavior
5612// :165:30: error: use of undefined value here causes undefined behavior
5613// :165:30: error: use of undefined value here causes undefined behavior
5614// :165:30: error: use of undefined value here causes undefined behavior
5615// :165:30: error: use of undefined value here causes undefined behavior
5616// :165:30: error: use of undefined value here causes undefined behavior
5617// :165:30: error: use of undefined value here causes undefined behavior
5618// :165:30: error: use of undefined value here causes undefined behavior
5619// :165:30: error: use of undefined value here causes undefined behavior
5620// :165:30: error: use of undefined value here causes undefined behavior
5621// :165:30: error: use of undefined value here causes undefined behavior
5622// :165:30: error: use of undefined value here causes undefined behavior
5623// :165:30: error: use of undefined value here causes undefined behavior
5624// :165:30: error: use of undefined value here causes undefined behavior
5625// :165:30: error: use of undefined value here causes undefined behavior
5626// :165:30: error: use of undefined value here causes undefined behavior
5627// :165:30: error: use of undefined value here causes undefined behavior
5628// :165:30: error: use of undefined value here causes undefined behavior
5629// :165:30: error: use of undefined value here causes undefined behavior
5630// :165:30: error: use of undefined value here causes undefined behavior
5631// :165:30: error: use of undefined value here causes undefined behavior
5632// :165:30: error: use of undefined value here causes undefined behavior
5633// :165:30: error: use of undefined value here causes undefined behavior
5634// :165:30: error: use of undefined value here causes undefined behavior
5635// :165:30: error: use of undefined value here causes undefined behavior
5636// :165:30: error: use of undefined value here causes undefined behavior
5637// :165:30: error: use of undefined value here causes undefined behavior
5638// :165:30: error: use of undefined value here causes undefined behavior
5639// :165:30: error: use of undefined value here causes undefined behavior
5640// :165:30: error: use of undefined value here causes undefined behavior
5641// :165:30: error: use of undefined value here causes undefined behavior
5642// :165:30: error: use of undefined value here causes undefined behavior
5643// :165:30: error: use of undefined value here causes undefined behavior
5644// :165:30: error: use of undefined value here causes undefined behavior
5645// :165:30: error: use of undefined value here causes undefined behavior
5646// :165:30: error: use of undefined value here causes undefined behavior
5647// :165:30: error: use of undefined value here causes undefined behavior
5648// :165:30: error: use of undefined value here causes undefined behavior
5649// :165:30: error: use of undefined value here causes undefined behavior
5650// :165:30: error: use of undefined value here causes undefined behavior
5651// :165:30: error: use of undefined value here causes undefined behavior
5652// :165:30: error: use of undefined value here causes undefined behavior
5653// :165:30: error: use of undefined value here causes undefined behavior
5654// :165:30: error: use of undefined value here causes undefined behavior
5655// :165:30: error: use of undefined value here causes undefined behavior
5656// :165:30: error: use of undefined value here causes undefined behavior
5657// :165:30: error: use of undefined value here causes undefined behavior
5658// :165:30: error: use of undefined value here causes undefined behavior
5659// :165:30: error: use of undefined value here causes undefined behavior
5660// :165:30: error: use of undefined value here causes undefined behavior
5661// :165:30: error: use of undefined value here causes undefined behavior
5662// :165:30: error: use of undefined value here causes undefined behavior
5663// :165:30: error: use of undefined value here causes undefined behavior
5664// :165:30: error: use of undefined value here causes undefined behavior
5665// :165:30: error: use of undefined value here causes undefined behavior
5666// :165:30: error: use of undefined value here causes undefined behavior
5667// :165:30: error: use of undefined value here causes undefined behavior
5668// :165:30: error: use of undefined value here causes undefined behavior
5669// :165:30: error: use of undefined value here causes undefined behavior
5670// :165:30: error: use of undefined value here causes undefined behavior
5671// :165:30: error: use of undefined value here causes undefined behavior
5672// :165:30: error: use of undefined value here causes undefined behavior
5673// :165:30: error: use of undefined value here causes undefined behavior
5674// :165:30: error: use of undefined value here causes undefined behavior
5675// :165:30: error: use of undefined value here causes undefined behavior
5676// :165:30: error: use of undefined value here causes undefined behavior
5677// :165:30: error: use of undefined value here causes undefined behavior
5678// :165:30: error: use of undefined value here causes undefined behavior
5679// :165:30: error: use of undefined value here causes undefined behavior
5680// :165:30: error: use of undefined value here causes undefined behavior
5681// :165:30: error: use of undefined value here causes undefined behavior
5682// :165:30: error: use of undefined value here causes undefined behavior
5683// :165:30: error: use of undefined value here causes undefined behavior
5684// :165:30: error: use of undefined value here causes undefined behavior
5685// :165:30: error: use of undefined value here causes undefined behavior
5686// :165:30: error: use of undefined value here causes undefined behavior
5687// :165:30: error: use of undefined value here causes undefined behavior
5688// :165:30: error: use of undefined value here causes undefined behavior
5689// :165:30: error: use of undefined value here causes undefined behavior
5690// :165:30: error: use of undefined value here causes undefined behavior
5691// :165:30: error: use of undefined value here causes undefined behavior
5692// :165:30: error: use of undefined value here causes undefined behavior
5693// :165:30: error: use of undefined value here causes undefined behavior
5694// :165:30: error: use of undefined value here causes undefined behavior
5695// :165:30: error: use of undefined value here causes undefined behavior
5696// :165:30: error: use of undefined value here causes undefined behavior
5697// :165:30: error: use of undefined value here causes undefined behavior
5698// :165:30: error: use of undefined value here causes undefined behavior
5699// :165:30: error: use of undefined value here causes undefined behavior
5700// :165:30: error: use of undefined value here causes undefined behavior
5701// :165:30: error: use of undefined value here causes undefined behavior
5702// :165:30: error: use of undefined value here causes undefined behavior
5703// :165:30: error: use of undefined value here causes undefined behavior
5704// :165:30: error: use of undefined value here causes undefined behavior
5705// :165:30: error: use of undefined value here causes undefined behavior
5706// :165:30: error: use of undefined value here causes undefined behavior
5707// :165:30: error: use of undefined value here causes undefined behavior
5708// :165:30: error: use of undefined value here causes undefined behavior
5709// :165:30: error: use of undefined value here causes undefined behavior
5710// :165:30: error: use of undefined value here causes undefined behavior
5711// :165:30: error: use of undefined value here causes undefined behavior
5712// :165:30: error: use of undefined value here causes undefined behavior
5713// :165:30: error: use of undefined value here causes undefined behavior
5714// :165:30: error: use of undefined value here causes undefined behavior
5715// :165:30: error: use of undefined value here causes undefined behavior
5716// :165:30: error: use of undefined value here causes undefined behavior
5717// :165:30: error: use of undefined value here causes undefined behavior
5718// :165:30: error: use of undefined value here causes undefined behavior
5719// :165:30: error: use of undefined value here causes undefined behavior
5720// :165:30: error: use of undefined value here causes undefined behavior
5721// :165:30: error: use of undefined value here causes undefined behavior
5722// :165:30: error: use of undefined value here causes undefined behavior
5723// :165:30: error: use of undefined value here causes undefined behavior
5724// :165:30: error: use of undefined value here causes undefined behavior
5725// :165:30: error: use of undefined value here causes undefined behavior
5726// :165:30: error: use of undefined value here causes undefined behavior
5727// :165:30: error: use of undefined value here causes undefined behavior
5728// :165:30: error: use of undefined value here causes undefined behavior
5729// :165:30: error: use of undefined value here causes undefined behavior
5730// :165:30: error: use of undefined value here causes undefined behavior
5731// :165:30: error: use of undefined value here causes undefined behavior
5732// :165:30: error: use of undefined value here causes undefined behavior
5733// :165:30: error: use of undefined value here causes undefined behavior
5734// :165:30: error: use of undefined value here causes undefined behavior
5735// :165:30: error: use of undefined value here causes undefined behavior
5736// :165:30: error: use of undefined value here causes undefined behavior
5737// :165:30: error: use of undefined value here causes undefined behavior
5738// :165:30: error: use of undefined value here causes undefined behavior
5739// :165:30: error: use of undefined value here causes undefined behavior
5740// :165:30: error: use of undefined value here causes undefined behavior
5741// :165:30: error: use of undefined value here causes undefined behavior
5742// :165:30: error: use of undefined value here causes undefined behavior
5743// :165:30: error: use of undefined value here causes undefined behavior
5744// :165:30: error: use of undefined value here causes undefined behavior
5745// :165:30: error: use of undefined value here causes undefined behavior
5746// :165:30: error: use of undefined value here causes undefined behavior
5747// :165:30: error: use of undefined value here causes undefined behavior
5748// :165:30: error: use of undefined value here causes undefined behavior
5749// :165:30: error: use of undefined value here causes undefined behavior
5750// :165:30: error: use of undefined value here causes undefined behavior
5751// :165:30: error: use of undefined value here causes undefined behavior
5752// :165:30: error: use of undefined value here causes undefined behavior
5753// :165:30: error: use of undefined value here causes undefined behavior
5754// :165:30: error: use of undefined value here causes undefined behavior
5755// :165:30: error: use of undefined value here causes undefined behavior
5756// :165:30: error: use of undefined value here causes undefined behavior
5757// :165:30: error: use of undefined value here causes undefined behavior
5758// :165:30: error: use of undefined value here causes undefined behavior
5759// :165:30: error: use of undefined value here causes undefined behavior
5760// :165:30: error: use of undefined value here causes undefined behavior
5761// :165:30: error: use of undefined value here causes undefined behavior
5762// :165:30: error: use of undefined value here causes undefined behavior
5763// :165:30: error: use of undefined value here causes undefined behavior
5764// :169:30: error: use of undefined value here causes undefined behavior
5765// :169:30: error: use of undefined value here causes undefined behavior
5766// :169:30: error: use of undefined value here causes undefined behavior
5767// :169:30: error: use of undefined value here causes undefined behavior
5768// :169:30: error: use of undefined value here causes undefined behavior
5769// :169:30: error: use of undefined value here causes undefined behavior
5770// :169:30: error: use of undefined value here causes undefined behavior
5771// :169:30: error: use of undefined value here causes undefined behavior
5772// :169:30: error: use of undefined value here causes undefined behavior
5773// :169:30: error: use of undefined value here causes undefined behavior
5774// :169:30: error: use of undefined value here causes undefined behavior
5775// :169:30: error: use of undefined value here causes undefined behavior
5776// :169:30: error: use of undefined value here causes undefined behavior
5777// :169:30: error: use of undefined value here causes undefined behavior
5778// :169:30: error: use of undefined value here causes undefined behavior
5779// :169:30: error: use of undefined value here causes undefined behavior
5780// :169:30: error: use of undefined value here causes undefined behavior
5781// :169:30: error: use of undefined value here causes undefined behavior
5782// :169:30: error: use of undefined value here causes undefined behavior
5783// :169:30: error: use of undefined value here causes undefined behavior
5784// :169:30: error: use of undefined value here causes undefined behavior
5785// :169:30: error: use of undefined value here causes undefined behavior
5786// :169:30: error: use of undefined value here causes undefined behavior
5787// :169:30: error: use of undefined value here causes undefined behavior
5788// :169:30: error: use of undefined value here causes undefined behavior
5789// :169:30: error: use of undefined value here causes undefined behavior
5790// :169:30: error: use of undefined value here causes undefined behavior
5791// :169:30: error: use of undefined value here causes undefined behavior
5792// :169:30: error: use of undefined value here causes undefined behavior
5793// :169:30: error: use of undefined value here causes undefined behavior
5794// :169:30: error: use of undefined value here causes undefined behavior
5795// :169:30: error: use of undefined value here causes undefined behavior
5796// :169:30: error: use of undefined value here causes undefined behavior
5797// :169:30: error: use of undefined value here causes undefined behavior
5798// :169:30: error: use of undefined value here causes undefined behavior
5799// :169:30: error: use of undefined value here causes undefined behavior
5800// :169:30: error: use of undefined value here causes undefined behavior
5801// :169:30: error: use of undefined value here causes undefined behavior
5802// :169:30: error: use of undefined value here causes undefined behavior
5803// :169:30: error: use of undefined value here causes undefined behavior
5804// :169:30: error: use of undefined value here causes undefined behavior
5805// :169:30: error: use of undefined value here causes undefined behavior
5806// :169:30: error: use of undefined value here causes undefined behavior
5807// :169:30: error: use of undefined value here causes undefined behavior
5808// :169:30: error: use of undefined value here causes undefined behavior
5809// :169:30: error: use of undefined value here causes undefined behavior
5810// :169:30: error: use of undefined value here causes undefined behavior
5811// :169:30: error: use of undefined value here causes undefined behavior
5812// :169:30: error: use of undefined value here causes undefined behavior
5813// :169:30: error: use of undefined value here causes undefined behavior
5814// :169:30: error: use of undefined value here causes undefined behavior
5815// :169:30: error: use of undefined value here causes undefined behavior
5816// :169:30: error: use of undefined value here causes undefined behavior
5817// :169:30: error: use of undefined value here causes undefined behavior
5818// :169:30: error: use of undefined value here causes undefined behavior
5819// :169:30: error: use of undefined value here causes undefined behavior
5820// :169:30: error: use of undefined value here causes undefined behavior
5821// :169:30: error: use of undefined value here causes undefined behavior
5822// :169:30: error: use of undefined value here causes undefined behavior
5823// :169:30: error: use of undefined value here causes undefined behavior
5824// :169:30: error: use of undefined value here causes undefined behavior
5825// :169:30: error: use of undefined value here causes undefined behavior
5826// :169:30: error: use of undefined value here causes undefined behavior
5827// :169:30: error: use of undefined value here causes undefined behavior
5828// :169:30: error: use of undefined value here causes undefined behavior
5829// :169:30: error: use of undefined value here causes undefined behavior
5830// :169:30: error: use of undefined value here causes undefined behavior
5831// :169:30: error: use of undefined value here causes undefined behavior
5832// :169:30: error: use of undefined value here causes undefined behavior
5833// :169:30: error: use of undefined value here causes undefined behavior
5834// :169:30: error: use of undefined value here causes undefined behavior
5835// :169:30: error: use of undefined value here causes undefined behavior
5836// :169:30: error: use of undefined value here causes undefined behavior
5837// :169:30: error: use of undefined value here causes undefined behavior
5838// :169:30: error: use of undefined value here causes undefined behavior
5839// :169:30: error: use of undefined value here causes undefined behavior
5840// :169:30: error: use of undefined value here causes undefined behavior
5841// :169:30: error: use of undefined value here causes undefined behavior
5842// :169:30: error: use of undefined value here causes undefined behavior
5843// :169:30: error: use of undefined value here causes undefined behavior
5844// :169:30: error: use of undefined value here causes undefined behavior
5845// :169:30: error: use of undefined value here causes undefined behavior
5846// :169:30: error: use of undefined value here causes undefined behavior
5847// :169:30: error: use of undefined value here causes undefined behavior
5848// :169:30: error: use of undefined value here causes undefined behavior
5849// :169:30: error: use of undefined value here causes undefined behavior
5850// :169:30: error: use of undefined value here causes undefined behavior
5851// :169:30: error: use of undefined value here causes undefined behavior
5852// :169:30: error: use of undefined value here causes undefined behavior
5853// :169:30: error: use of undefined value here causes undefined behavior
5854// :169:30: error: use of undefined value here causes undefined behavior
5855// :169:30: error: use of undefined value here causes undefined behavior
5856// :169:30: error: use of undefined value here causes undefined behavior
5857// :169:30: error: use of undefined value here causes undefined behavior
5858// :169:30: error: use of undefined value here causes undefined behavior
5859// :169:30: error: use of undefined value here causes undefined behavior
5860// :169:30: error: use of undefined value here causes undefined behavior
5861// :169:30: error: use of undefined value here causes undefined behavior
5862// :169:30: error: use of undefined value here causes undefined behavior
5863// :169:30: error: use of undefined value here causes undefined behavior
5864// :169:30: error: use of undefined value here causes undefined behavior
5865// :169:30: error: use of undefined value here causes undefined behavior
5866// :169:30: error: use of undefined value here causes undefined behavior
5867// :169:30: error: use of undefined value here causes undefined behavior
5868// :169:30: error: use of undefined value here causes undefined behavior
5869// :169:30: error: use of undefined value here causes undefined behavior
5870// :169:30: error: use of undefined value here causes undefined behavior
5871// :169:30: error: use of undefined value here causes undefined behavior
5872// :169:30: error: use of undefined value here causes undefined behavior
5873// :169:30: error: use of undefined value here causes undefined behavior
5874// :169:30: error: use of undefined value here causes undefined behavior
5875// :169:30: error: use of undefined value here causes undefined behavior
5876// :169:30: error: use of undefined value here causes undefined behavior
5877// :169:30: error: use of undefined value here causes undefined behavior
5878// :169:30: error: use of undefined value here causes undefined behavior
5879// :169:30: error: use of undefined value here causes undefined behavior
5880// :169:30: error: use of undefined value here causes undefined behavior
5881// :169:30: error: use of undefined value here causes undefined behavior
5882// :169:30: error: use of undefined value here causes undefined behavior
5883// :169:30: error: use of undefined value here causes undefined behavior
5884// :169:30: error: use of undefined value here causes undefined behavior
5885// :169:30: error: use of undefined value here causes undefined behavior
5886// :169:30: error: use of undefined value here causes undefined behavior
5887// :169:30: error: use of undefined value here causes undefined behavior
5888// :169:30: error: use of undefined value here causes undefined behavior
5889// :169:30: error: use of undefined value here causes undefined behavior
5890// :169:30: error: use of undefined value here causes undefined behavior
5891// :169:30: error: use of undefined value here causes undefined behavior
5892// :169:30: error: use of undefined value here causes undefined behavior
5893// :169:30: error: use of undefined value here causes undefined behavior
5894// :169:30: error: use of undefined value here causes undefined behavior
5895// :169:30: error: use of undefined value here causes undefined behavior
5896// :169:30: error: use of undefined value here causes undefined behavior
5897// :169:30: error: use of undefined value here causes undefined behavior
5898// :169:30: error: use of undefined value here causes undefined behavior
5899// :169:30: error: use of undefined value here causes undefined behavior
5900// :169:30: error: use of undefined value here causes undefined behavior
5901// :169:30: error: use of undefined value here causes undefined behavior
5902// :169:30: error: use of undefined value here causes undefined behavior
5903// :169:30: error: use of undefined value here causes undefined behavior
5904// :169:30: error: use of undefined value here causes undefined behavior
5905// :169:30: error: use of undefined value here causes undefined behavior
5906// :169:30: error: use of undefined value here causes undefined behavior
5907// :169:30: error: use of undefined value here causes undefined behavior
5908// :169:30: error: use of undefined value here causes undefined behavior
5909// :169:30: error: use of undefined value here causes undefined behavior
5910// :169:30: error: use of undefined value here causes undefined behavior
5911// :169:30: error: use of undefined value here causes undefined behavior
5912// :169:30: error: use of undefined value here causes undefined behavior
5913// :169:30: error: use of undefined value here causes undefined behavior
5914// :169:30: error: use of undefined value here causes undefined behavior
5915// :169:30: error: use of undefined value here causes undefined behavior
5916// :169:30: error: use of undefined value here causes undefined behavior
5917// :169:30: error: use of undefined value here causes undefined behavior
5918// :169:30: error: use of undefined value here causes undefined behavior
5919// :169:30: error: use of undefined value here causes undefined behavior
5920// :169:30: error: use of undefined value here causes undefined behavior
5921// :169:30: error: use of undefined value here causes undefined behavior
5922// :169:30: error: use of undefined value here causes undefined behavior
5923// :169:30: error: use of undefined value here causes undefined behavior
5924// :169:30: error: use of undefined value here causes undefined behavior
5925// :169:30: error: use of undefined value here causes undefined behavior
5926// :169:30: error: use of undefined value here causes undefined behavior
5927// :169:30: error: use of undefined value here causes undefined behavior
5928// :169:30: error: use of undefined value here causes undefined behavior
5929// :169:30: error: use of undefined value here causes undefined behavior
5930// :169:30: error: use of undefined value here causes undefined behavior
5931// :169:30: error: use of undefined value here causes undefined behavior
5932// :169:30: error: use of undefined value here causes undefined behavior
5933// :169:30: error: use of undefined value here causes undefined behavior
5934// :169:30: error: use of undefined value here causes undefined behavior
5935// :169:30: error: use of undefined value here causes undefined behavior
5936// :169:30: error: use of undefined value here causes undefined behavior
5937// :169:30: error: use of undefined value here causes undefined behavior
5938// :169:30: error: use of undefined value here causes undefined behavior
5939// :169:30: error: use of undefined value here causes undefined behavior
5940// :169:30: error: use of undefined value here causes undefined behavior
5941// :169:30: error: use of undefined value here causes undefined behavior
5942// :169:30: error: use of undefined value here causes undefined behavior
5943// :169:30: error: use of undefined value here causes undefined behavior
5944// :169:30: error: use of undefined value here causes undefined behavior
5945// :169:30: error: use of undefined value here causes undefined behavior
5946// :169:30: error: use of undefined value here causes undefined behavior
5947// :169:30: error: use of undefined value here causes undefined behavior
5948// :169:30: error: use of undefined value here causes undefined behavior
5949// :169:30: error: use of undefined value here causes undefined behavior
5950// :169:30: error: use of undefined value here causes undefined behavior
5951// :169:30: error: use of undefined value here causes undefined behavior
5952// :169:30: error: use of undefined value here causes undefined behavior
5953// :169:30: error: use of undefined value here causes undefined behavior
5954// :169:30: error: use of undefined value here causes undefined behavior
5955// :169:30: error: use of undefined value here causes undefined behavior
5956// :169:30: error: use of undefined value here causes undefined behavior
5957// :169:30: error: use of undefined value here causes undefined behavior
5958// :169:30: error: use of undefined value here causes undefined behavior
5959// :169:30: error: use of undefined value here causes undefined behavior
5960// :169:30: error: use of undefined value here causes undefined behavior
5961// :169:30: error: use of undefined value here causes undefined behavior
5962// :169:30: error: use of undefined value here causes undefined behavior
5963// :169:30: error: use of undefined value here causes undefined behavior
5964// :169:30: error: use of undefined value here causes undefined behavior
5965// :169:30: error: use of undefined value here causes undefined behavior
5966// :169:30: error: use of undefined value here causes undefined behavior
5967// :169:30: error: use of undefined value here causes undefined behavior
5968// :169:30: error: use of undefined value here causes undefined behavior
5969// :169:30: error: use of undefined value here causes undefined behavior
5970// :169:30: error: use of undefined value here causes undefined behavior
5971// :169:30: error: use of undefined value here causes undefined behavior
5972// :169:30: error: use of undefined value here causes undefined behavior
5973// :169:30: error: use of undefined value here causes undefined behavior
5974// :169:30: error: use of undefined value here causes undefined behavior
5975// :169:30: error: use of undefined value here causes undefined behavior
5976// :169:30: error: use of undefined value here causes undefined behavior
5977// :169:30: error: use of undefined value here causes undefined behavior
5978// :169:30: error: use of undefined value here causes undefined behavior
5979// :169:30: error: use of undefined value here causes undefined behavior
5980// :169:30: error: use of undefined value here causes undefined behavior
5981// :169:30: error: use of undefined value here causes undefined behavior
5982// :169:30: error: use of undefined value here causes undefined behavior
5983// :169:30: error: use of undefined value here causes undefined behavior
5984// :169:30: error: use of undefined value here causes undefined behavior
5985// :169:30: error: use of undefined value here causes undefined behavior
5986// :169:30: error: use of undefined value here causes undefined behavior
5987// :169:30: error: use of undefined value here causes undefined behavior
5988// :169:30: error: use of undefined value here causes undefined behavior
5989// :169:30: error: use of undefined value here causes undefined behavior
5990// :169:30: error: use of undefined value here causes undefined behavior
5991// :169:30: error: use of undefined value here causes undefined behavior
5992// :169:30: error: use of undefined value here causes undefined behavior
5993// :169:30: error: use of undefined value here causes undefined behavior
5994// :169:30: error: use of undefined value here causes undefined behavior
5995// :169:30: error: use of undefined value here causes undefined behavior
5996// :169:30: error: use of undefined value here causes undefined behavior
5997// :169:30: error: use of undefined value here causes undefined behavior
5998// :169:30: error: use of undefined value here causes undefined behavior
5999// :169:30: error: use of undefined value here causes undefined behavior
6000// :169:30: error: use of undefined value here causes undefined behavior
6001// :169:30: error: use of undefined value here causes undefined behavior
6002// :169:30: error: use of undefined value here causes undefined behavior
6003// :169:30: error: use of undefined value here causes undefined behavior
6004// :169:30: error: use of undefined value here causes undefined behavior
6005// :169:30: error: use of undefined value here causes undefined behavior
6006// :173:25: error: use of undefined value here causes undefined behavior
6007// :173:25: error: use of undefined value here causes undefined behavior
6008// :173:25: error: use of undefined value here causes undefined behavior
6009// :173:25: error: use of undefined value here causes undefined behavior
6010// :173:25: error: use of undefined value here causes undefined behavior
6011// :173:25: error: use of undefined value here causes undefined behavior
6012// :173:25: error: use of undefined value here causes undefined behavior
6013// :173:25: error: use of undefined value here causes undefined behavior
6014// :173:25: error: use of undefined value here causes undefined behavior
6015// :173:25: error: use of undefined value here causes undefined behavior
6016// :173:25: error: use of undefined value here causes undefined behavior
6017// :173:25: error: use of undefined value here causes undefined behavior
6018// :173:25: error: use of undefined value here causes undefined behavior
6019// :173:25: error: use of undefined value here causes undefined behavior
6020// :173:25: error: use of undefined value here causes undefined behavior
6021// :173:25: error: use of undefined value here causes undefined behavior
6022// :173:25: error: use of undefined value here causes undefined behavior
6023// :173:25: error: use of undefined value here causes undefined behavior
6024// :173:25: error: use of undefined value here causes undefined behavior
6025// :173:25: error: use of undefined value here causes undefined behavior
6026// :173:25: error: use of undefined value here causes undefined behavior
6027// :173:25: error: use of undefined value here causes undefined behavior
6028// :173:25: error: use of undefined value here causes undefined behavior
6029// :173:25: error: use of undefined value here causes undefined behavior
6030// :173:25: error: use of undefined value here causes undefined behavior
6031// :173:25: error: use of undefined value here causes undefined behavior
6032// :173:25: error: use of undefined value here causes undefined behavior
6033// :173:25: error: use of undefined value here causes undefined behavior
6034// :173:25: error: use of undefined value here causes undefined behavior
6035// :173:25: error: use of undefined value here causes undefined behavior
6036// :173:25: error: use of undefined value here causes undefined behavior
6037// :173:25: error: use of undefined value here causes undefined behavior
6038// :173:25: error: use of undefined value here causes undefined behavior
6039// :173:25: error: use of undefined value here causes undefined behavior
6040// :173:25: error: use of undefined value here causes undefined behavior
6041// :173:25: error: use of undefined value here causes undefined behavior
6042// :173:25: error: use of undefined value here causes undefined behavior
6043// :173:25: error: use of undefined value here causes undefined behavior
6044// :173:25: error: use of undefined value here causes undefined behavior
6045// :173:25: error: use of undefined value here causes undefined behavior
6046// :173:25: error: use of undefined value here causes undefined behavior
6047// :173:25: error: use of undefined value here causes undefined behavior
6048// :173:25: error: use of undefined value here causes undefined behavior
6049// :173:25: error: use of undefined value here causes undefined behavior
6050// :173:25: error: use of undefined value here causes undefined behavior
6051// :173:25: error: use of undefined value here causes undefined behavior
6052// :173:25: error: use of undefined value here causes undefined behavior
6053// :173:25: error: use of undefined value here causes undefined behavior
6054// :173:25: error: use of undefined value here causes undefined behavior
6055// :173:25: error: use of undefined value here causes undefined behavior
6056// :173:25: error: use of undefined value here causes undefined behavior
6057// :173:25: error: use of undefined value here causes undefined behavior
6058// :173:25: error: use of undefined value here causes undefined behavior
6059// :173:25: error: use of undefined value here causes undefined behavior
6060// :173:25: error: use of undefined value here causes undefined behavior
6061// :173:25: error: use of undefined value here causes undefined behavior
6062// :173:25: error: use of undefined value here causes undefined behavior
6063// :173:25: error: use of undefined value here causes undefined behavior
6064// :173:25: error: use of undefined value here causes undefined behavior
6065// :173:25: error: use of undefined value here causes undefined behavior
6066// :173:25: error: use of undefined value here causes undefined behavior
6067// :173:25: error: use of undefined value here causes undefined behavior
6068// :173:25: error: use of undefined value here causes undefined behavior
6069// :173:25: error: use of undefined value here causes undefined behavior
6070// :173:25: error: use of undefined value here causes undefined behavior
6071// :173:25: error: use of undefined value here causes undefined behavior
6072// :173:25: error: use of undefined value here causes undefined behavior
6073// :173:25: error: use of undefined value here causes undefined behavior
6074// :173:25: error: use of undefined value here causes undefined behavior
6075// :173:25: error: use of undefined value here causes undefined behavior
6076// :173:25: error: use of undefined value here causes undefined behavior
6077// :173:25: error: use of undefined value here causes undefined behavior
6078// :173:25: error: use of undefined value here causes undefined behavior
6079// :173:25: error: use of undefined value here causes undefined behavior
6080// :173:25: error: use of undefined value here causes undefined behavior
6081// :173:25: error: use of undefined value here causes undefined behavior
6082// :173:25: error: use of undefined value here causes undefined behavior
6083// :173:25: error: use of undefined value here causes undefined behavior
6084// :173:25: error: use of undefined value here causes undefined behavior
6085// :173:25: error: use of undefined value here causes undefined behavior
6086// :173:25: error: use of undefined value here causes undefined behavior
6087// :173:25: error: use of undefined value here causes undefined behavior
6088// :173:25: error: use of undefined value here causes undefined behavior
6089// :173:25: error: use of undefined value here causes undefined behavior
6090// :173:25: error: use of undefined value here causes undefined behavior
6091// :173:25: error: use of undefined value here causes undefined behavior
6092// :173:25: error: use of undefined value here causes undefined behavior
6093// :173:25: error: use of undefined value here causes undefined behavior
6094// :173:25: error: use of undefined value here causes undefined behavior
6095// :173:25: error: use of undefined value here causes undefined behavior
6096// :173:25: error: use of undefined value here causes undefined behavior
6097// :173:25: error: use of undefined value here causes undefined behavior
6098// :173:25: error: use of undefined value here causes undefined behavior
6099// :173:25: error: use of undefined value here causes undefined behavior
6100// :173:25: error: use of undefined value here causes undefined behavior
6101// :173:25: error: use of undefined value here causes undefined behavior
6102// :173:25: error: use of undefined value here causes undefined behavior
6103// :173:25: error: use of undefined value here causes undefined behavior
6104// :173:25: error: use of undefined value here causes undefined behavior
6105// :173:25: error: use of undefined value here causes undefined behavior
6106// :173:25: error: use of undefined value here causes undefined behavior
6107// :173:25: error: use of undefined value here causes undefined behavior
6108// :173:25: error: use of undefined value here causes undefined behavior
6109// :173:25: error: use of undefined value here causes undefined behavior
6110// :173:25: error: use of undefined value here causes undefined behavior
6111// :173:25: error: use of undefined value here causes undefined behavior
6112// :173:25: error: use of undefined value here causes undefined behavior
6113// :173:25: error: use of undefined value here causes undefined behavior
6114// :173:25: error: use of undefined value here causes undefined behavior
6115// :173:25: error: use of undefined value here causes undefined behavior
6116// :173:25: error: use of undefined value here causes undefined behavior
6117// :173:25: error: use of undefined value here causes undefined behavior
6118// :173:25: error: use of undefined value here causes undefined behavior
6119// :173:25: error: use of undefined value here causes undefined behavior
6120// :173:25: error: use of undefined value here causes undefined behavior
6121// :173:25: error: use of undefined value here causes undefined behavior
6122// :173:25: error: use of undefined value here causes undefined behavior
6123// :173:25: error: use of undefined value here causes undefined behavior
6124// :173:25: error: use of undefined value here causes undefined behavior
6125// :173:25: error: use of undefined value here causes undefined behavior
6126// :173:25: error: use of undefined value here causes undefined behavior
6127// :173:25: error: use of undefined value here causes undefined behavior
6128// :173:25: error: use of undefined value here causes undefined behavior
6129// :173:25: error: use of undefined value here causes undefined behavior
6130// :173:25: error: use of undefined value here causes undefined behavior
6131// :173:25: error: use of undefined value here causes undefined behavior
6132// :173:25: error: use of undefined value here causes undefined behavior
6133// :173:25: error: use of undefined value here causes undefined behavior
6134// :173:25: error: use of undefined value here causes undefined behavior
6135// :173:25: error: use of undefined value here causes undefined behavior
6136// :173:25: error: use of undefined value here causes undefined behavior
6137// :173:25: error: use of undefined value here causes undefined behavior
6138// :173:25: error: use of undefined value here causes undefined behavior
6139// :173:25: error: use of undefined value here causes undefined behavior
6140// :173:25: error: use of undefined value here causes undefined behavior
6141// :173:25: error: use of undefined value here causes undefined behavior
6142// :173:25: error: use of undefined value here causes undefined behavior
6143// :173:25: error: use of undefined value here causes undefined behavior
6144// :173:25: error: use of undefined value here causes undefined behavior
6145// :173:25: error: use of undefined value here causes undefined behavior
6146// :173:25: error: use of undefined value here causes undefined behavior
6147// :173:25: error: use of undefined value here causes undefined behavior
6148// :173:25: error: use of undefined value here causes undefined behavior
6149// :173:25: error: use of undefined value here causes undefined behavior
6150// :173:25: error: use of undefined value here causes undefined behavior
6151// :173:25: error: use of undefined value here causes undefined behavior
6152// :173:25: error: use of undefined value here causes undefined behavior
6153// :173:25: error: use of undefined value here causes undefined behavior
6154// :173:25: error: use of undefined value here causes undefined behavior
6155// :173:25: error: use of undefined value here causes undefined behavior
6156// :173:25: error: use of undefined value here causes undefined behavior
6157// :173:25: error: use of undefined value here causes undefined behavior
6158// :173:25: error: use of undefined value here causes undefined behavior
6159// :173:25: error: use of undefined value here causes undefined behavior
6160// :173:25: error: use of undefined value here causes undefined behavior
6161// :173:25: error: use of undefined value here causes undefined behavior
6162// :173:25: error: use of undefined value here causes undefined behavior
6163// :173:25: error: use of undefined value here causes undefined behavior
6164// :173:25: error: use of undefined value here causes undefined behavior
6165// :173:25: error: use of undefined value here causes undefined behavior
6166// :173:25: error: use of undefined value here causes undefined behavior
6167// :173:25: error: use of undefined value here causes undefined behavior
6168// :173:25: error: use of undefined value here causes undefined behavior
6169// :173:25: error: use of undefined value here causes undefined behavior
6170// :173:25: error: use of undefined value here causes undefined behavior
6171// :173:25: error: use of undefined value here causes undefined behavior
6172// :173:25: error: use of undefined value here causes undefined behavior
6173// :173:25: error: use of undefined value here causes undefined behavior
6174// :173:25: error: use of undefined value here causes undefined behavior
6175// :173:25: error: use of undefined value here causes undefined behavior
6176// :173:25: error: use of undefined value here causes undefined behavior
6177// :173:25: error: use of undefined value here causes undefined behavior
6178// :173:25: error: use of undefined value here causes undefined behavior
6179// :173:25: error: use of undefined value here causes undefined behavior
6180// :173:25: error: use of undefined value here causes undefined behavior
6181// :173:25: error: use of undefined value here causes undefined behavior
6182// :173:25: error: use of undefined value here causes undefined behavior
6183// :173:25: error: use of undefined value here causes undefined behavior
6184// :173:25: error: use of undefined value here causes undefined behavior
6185// :173:25: error: use of undefined value here causes undefined behavior
6186// :173:25: error: use of undefined value here causes undefined behavior
6187// :173:25: error: use of undefined value here causes undefined behavior
6188// :173:25: error: use of undefined value here causes undefined behavior
6189// :173:25: error: use of undefined value here causes undefined behavior
6190// :173:25: error: use of undefined value here causes undefined behavior
6191// :173:25: error: use of undefined value here causes undefined behavior
6192// :173:25: error: use of undefined value here causes undefined behavior
6193// :173:25: error: use of undefined value here causes undefined behavior
6194// :173:25: error: use of undefined value here causes undefined behavior
6195// :173:25: error: use of undefined value here causes undefined behavior
6196// :173:25: error: use of undefined value here causes undefined behavior
6197// :173:25: error: use of undefined value here causes undefined behavior
6198// :173:25: error: use of undefined value here causes undefined behavior
6199// :173:25: error: use of undefined value here causes undefined behavior
6200// :173:25: error: use of undefined value here causes undefined behavior
6201// :173:25: error: use of undefined value here causes undefined behavior
6202// :173:25: error: use of undefined value here causes undefined behavior
6203// :173:25: error: use of undefined value here causes undefined behavior
6204// :173:25: error: use of undefined value here causes undefined behavior
6205// :173:25: error: use of undefined value here causes undefined behavior
6206// :173:25: error: use of undefined value here causes undefined behavior
6207// :173:25: error: use of undefined value here causes undefined behavior
6208// :173:25: error: use of undefined value here causes undefined behavior
6209// :173:25: error: use of undefined value here causes undefined behavior
6210// :173:25: error: use of undefined value here causes undefined behavior
6211// :173:25: error: use of undefined value here causes undefined behavior
6212// :173:25: error: use of undefined value here causes undefined behavior
6213// :173:25: error: use of undefined value here causes undefined behavior
6214// :173:25: error: use of undefined value here causes undefined behavior
6215// :173:25: error: use of undefined value here causes undefined behavior
6216// :173:25: error: use of undefined value here causes undefined behavior
6217// :173:25: error: use of undefined value here causes undefined behavior
6218// :173:25: error: use of undefined value here causes undefined behavior
6219// :173:25: error: use of undefined value here causes undefined behavior
6220// :173:25: error: use of undefined value here causes undefined behavior
6221// :173:25: error: use of undefined value here causes undefined behavior
6222// :173:25: error: use of undefined value here causes undefined behavior
6223// :173:25: error: use of undefined value here causes undefined behavior
6224// :173:25: error: use of undefined value here causes undefined behavior
6225// :173:25: error: use of undefined value here causes undefined behavior
6226// :173:25: error: use of undefined value here causes undefined behavior
6227// :173:25: error: use of undefined value here causes undefined behavior
6228// :173:25: error: use of undefined value here causes undefined behavior
6229// :173:25: error: use of undefined value here causes undefined behavior
6230// :173:25: error: use of undefined value here causes undefined behavior
6231// :173:25: error: use of undefined value here causes undefined behavior
6232// :173:25: error: use of undefined value here causes undefined behavior
6233// :173:25: error: use of undefined value here causes undefined behavior
6234// :173:25: error: use of undefined value here causes undefined behavior
6235// :173:25: error: use of undefined value here causes undefined behavior
6236// :173:25: error: use of undefined value here causes undefined behavior
6237// :173:25: error: use of undefined value here causes undefined behavior
6238// :173:25: error: use of undefined value here causes undefined behavior
6239// :173:25: error: use of undefined value here causes undefined behavior
6240// :173:25: error: use of undefined value here causes undefined behavior
6241// :173:25: error: use of undefined value here causes undefined behavior
6242// :173:25: error: use of undefined value here causes undefined behavior
6243// :173:25: error: use of undefined value here causes undefined behavior
6244// :173:25: error: use of undefined value here causes undefined behavior
6245// :173:25: error: use of undefined value here causes undefined behavior
6246// :173:25: error: use of undefined value here causes undefined behavior
6247// :173:25: error: use of undefined value here causes undefined behavior
6248// :177:25: error: use of undefined value here causes undefined behavior
6249// :177:25: error: use of undefined value here causes undefined behavior
6250// :177:25: error: use of undefined value here causes undefined behavior
6251// :177:25: error: use of undefined value here causes undefined behavior
6252// :177:25: error: use of undefined value here causes undefined behavior
6253// :177:25: error: use of undefined value here causes undefined behavior
6254// :177:25: error: use of undefined value here causes undefined behavior
6255// :177:25: error: use of undefined value here causes undefined behavior
6256// :177:25: error: use of undefined value here causes undefined behavior
6257// :177:25: error: use of undefined value here causes undefined behavior
6258// :177:25: error: use of undefined value here causes undefined behavior
6259// :177:25: error: use of undefined value here causes undefined behavior
6260// :177:25: error: use of undefined value here causes undefined behavior
6261// :177:25: error: use of undefined value here causes undefined behavior
6262// :177:25: error: use of undefined value here causes undefined behavior
6263// :177:25: error: use of undefined value here causes undefined behavior
6264// :177:25: error: use of undefined value here causes undefined behavior
6265// :177:25: error: use of undefined value here causes undefined behavior
6266// :177:25: error: use of undefined value here causes undefined behavior
6267// :177:25: error: use of undefined value here causes undefined behavior
6268// :177:25: error: use of undefined value here causes undefined behavior
6269// :177:25: error: use of undefined value here causes undefined behavior
6270// :177:25: error: use of undefined value here causes undefined behavior
6271// :177:25: error: use of undefined value here causes undefined behavior
6272// :177:25: error: use of undefined value here causes undefined behavior
6273// :177:25: error: use of undefined value here causes undefined behavior
6274// :177:25: error: use of undefined value here causes undefined behavior
6275// :177:25: error: use of undefined value here causes undefined behavior
6276// :177:25: error: use of undefined value here causes undefined behavior
6277// :177:25: error: use of undefined value here causes undefined behavior
6278// :177:25: error: use of undefined value here causes undefined behavior
6279// :177:25: error: use of undefined value here causes undefined behavior
6280// :177:25: error: use of undefined value here causes undefined behavior
6281// :177:25: error: use of undefined value here causes undefined behavior
6282// :177:25: error: use of undefined value here causes undefined behavior
6283// :177:25: error: use of undefined value here causes undefined behavior
6284// :177:25: error: use of undefined value here causes undefined behavior
6285// :177:25: error: use of undefined value here causes undefined behavior
6286// :177:25: error: use of undefined value here causes undefined behavior
6287// :177:25: error: use of undefined value here causes undefined behavior
6288// :177:25: error: use of undefined value here causes undefined behavior
6289// :177:25: error: use of undefined value here causes undefined behavior
6290// :177:25: error: use of undefined value here causes undefined behavior
6291// :177:25: error: use of undefined value here causes undefined behavior
6292// :177:25: error: use of undefined value here causes undefined behavior
6293// :177:25: error: use of undefined value here causes undefined behavior
6294// :177:25: error: use of undefined value here causes undefined behavior
6295// :177:25: error: use of undefined value here causes undefined behavior
6296// :177:25: error: use of undefined value here causes undefined behavior
6297// :177:25: error: use of undefined value here causes undefined behavior
6298// :177:25: error: use of undefined value here causes undefined behavior
6299// :177:25: error: use of undefined value here causes undefined behavior
6300// :177:25: error: use of undefined value here causes undefined behavior
6301// :177:25: error: use of undefined value here causes undefined behavior
6302// :177:25: error: use of undefined value here causes undefined behavior
6303// :177:25: error: use of undefined value here causes undefined behavior
6304// :177:25: error: use of undefined value here causes undefined behavior
6305// :177:25: error: use of undefined value here causes undefined behavior
6306// :177:25: error: use of undefined value here causes undefined behavior
6307// :177:25: error: use of undefined value here causes undefined behavior
6308// :177:25: error: use of undefined value here causes undefined behavior
6309// :177:25: error: use of undefined value here causes undefined behavior
6310// :177:25: error: use of undefined value here causes undefined behavior
6311// :177:25: error: use of undefined value here causes undefined behavior
6312// :177:25: error: use of undefined value here causes undefined behavior
6313// :177:25: error: use of undefined value here causes undefined behavior
6314// :177:25: error: use of undefined value here causes undefined behavior
6315// :177:25: error: use of undefined value here causes undefined behavior
6316// :177:25: error: use of undefined value here causes undefined behavior
6317// :177:25: error: use of undefined value here causes undefined behavior
6318// :177:25: error: use of undefined value here causes undefined behavior
6319// :177:25: error: use of undefined value here causes undefined behavior
6320// :177:25: error: use of undefined value here causes undefined behavior
6321// :177:25: error: use of undefined value here causes undefined behavior
6322// :177:25: error: use of undefined value here causes undefined behavior
6323// :177:25: error: use of undefined value here causes undefined behavior
6324// :177:25: error: use of undefined value here causes undefined behavior
6325// :177:25: error: use of undefined value here causes undefined behavior
6326// :177:25: error: use of undefined value here causes undefined behavior
6327// :177:25: error: use of undefined value here causes undefined behavior
6328// :177:25: error: use of undefined value here causes undefined behavior
6329// :177:25: error: use of undefined value here causes undefined behavior
6330// :177:25: error: use of undefined value here causes undefined behavior
6331// :177:25: error: use of undefined value here causes undefined behavior
6332// :177:25: error: use of undefined value here causes undefined behavior
6333// :177:25: error: use of undefined value here causes undefined behavior
6334// :177:25: error: use of undefined value here causes undefined behavior
6335// :177:25: error: use of undefined value here causes undefined behavior
6336// :177:25: error: use of undefined value here causes undefined behavior
6337// :177:25: error: use of undefined value here causes undefined behavior
6338// :177:25: error: use of undefined value here causes undefined behavior
6339// :177:25: error: use of undefined value here causes undefined behavior
6340// :177:25: error: use of undefined value here causes undefined behavior
6341// :177:25: error: use of undefined value here causes undefined behavior
6342// :177:25: error: use of undefined value here causes undefined behavior
6343// :177:25: error: use of undefined value here causes undefined behavior
6344// :177:25: error: use of undefined value here causes undefined behavior
6345// :177:25: error: use of undefined value here causes undefined behavior
6346// :177:25: error: use of undefined value here causes undefined behavior
6347// :177:25: error: use of undefined value here causes undefined behavior
6348// :177:25: error: use of undefined value here causes undefined behavior
6349// :177:25: error: use of undefined value here causes undefined behavior
6350// :177:25: error: use of undefined value here causes undefined behavior
6351// :177:25: error: use of undefined value here causes undefined behavior
6352// :177:25: error: use of undefined value here causes undefined behavior
6353// :177:25: error: use of undefined value here causes undefined behavior
6354// :177:25: error: use of undefined value here causes undefined behavior
6355// :177:25: error: use of undefined value here causes undefined behavior
6356// :177:25: error: use of undefined value here causes undefined behavior
6357// :177:25: error: use of undefined value here causes undefined behavior
6358// :177:25: error: use of undefined value here causes undefined behavior
6359// :177:25: error: use of undefined value here causes undefined behavior
6360// :177:25: error: use of undefined value here causes undefined behavior
6361// :177:25: error: use of undefined value here causes undefined behavior
6362// :177:25: error: use of undefined value here causes undefined behavior
6363// :177:25: error: use of undefined value here causes undefined behavior
6364// :177:25: error: use of undefined value here causes undefined behavior
6365// :177:25: error: use of undefined value here causes undefined behavior
6366// :177:25: error: use of undefined value here causes undefined behavior
6367// :177:25: error: use of undefined value here causes undefined behavior
6368// :177:25: error: use of undefined value here causes undefined behavior
6369// :177:25: error: use of undefined value here causes undefined behavior
6370// :177:25: error: use of undefined value here causes undefined behavior
6371// :177:25: error: use of undefined value here causes undefined behavior
6372// :177:25: error: use of undefined value here causes undefined behavior
6373// :177:25: error: use of undefined value here causes undefined behavior
6374// :177:25: error: use of undefined value here causes undefined behavior
6375// :177:25: error: use of undefined value here causes undefined behavior
6376// :177:25: error: use of undefined value here causes undefined behavior
6377// :177:25: error: use of undefined value here causes undefined behavior
6378// :177:25: error: use of undefined value here causes undefined behavior
6379// :177:25: error: use of undefined value here causes undefined behavior
6380// :177:25: error: use of undefined value here causes undefined behavior
6381// :177:25: error: use of undefined value here causes undefined behavior
6382// :177:25: error: use of undefined value here causes undefined behavior
6383// :177:25: error: use of undefined value here causes undefined behavior
6384// :177:25: error: use of undefined value here causes undefined behavior
6385// :177:25: error: use of undefined value here causes undefined behavior
6386// :177:25: error: use of undefined value here causes undefined behavior
6387// :177:25: error: use of undefined value here causes undefined behavior
6388// :177:25: error: use of undefined value here causes undefined behavior
6389// :177:25: error: use of undefined value here causes undefined behavior
6390// :177:25: error: use of undefined value here causes undefined behavior
6391// :177:25: error: use of undefined value here causes undefined behavior
6392// :177:25: error: use of undefined value here causes undefined behavior
6393// :177:25: error: use of undefined value here causes undefined behavior
6394// :177:25: error: use of undefined value here causes undefined behavior
6395// :177:25: error: use of undefined value here causes undefined behavior
6396// :177:25: error: use of undefined value here causes undefined behavior
6397// :177:25: error: use of undefined value here causes undefined behavior
6398// :177:25: error: use of undefined value here causes undefined behavior
6399// :177:25: error: use of undefined value here causes undefined behavior
6400// :177:25: error: use of undefined value here causes undefined behavior
6401// :177:25: error: use of undefined value here causes undefined behavior
6402// :177:25: error: use of undefined value here causes undefined behavior
6403// :177:25: error: use of undefined value here causes undefined behavior
6404// :177:25: error: use of undefined value here causes undefined behavior
6405// :177:25: error: use of undefined value here causes undefined behavior
6406// :177:25: error: use of undefined value here causes undefined behavior
6407// :177:25: error: use of undefined value here causes undefined behavior
6408// :177:25: error: use of undefined value here causes undefined behavior
6409// :177:25: error: use of undefined value here causes undefined behavior
6410// :177:25: error: use of undefined value here causes undefined behavior
6411// :177:25: error: use of undefined value here causes undefined behavior
6412// :177:25: error: use of undefined value here causes undefined behavior
6413// :177:25: error: use of undefined value here causes undefined behavior
6414// :177:25: error: use of undefined value here causes undefined behavior
6415// :177:25: error: use of undefined value here causes undefined behavior
6416// :177:25: error: use of undefined value here causes undefined behavior
6417// :177:25: error: use of undefined value here causes undefined behavior
6418// :177:25: error: use of undefined value here causes undefined behavior
6419// :177:25: error: use of undefined value here causes undefined behavior
6420// :177:25: error: use of undefined value here causes undefined behavior
6421// :177:25: error: use of undefined value here causes undefined behavior
6422// :177:25: error: use of undefined value here causes undefined behavior
6423// :177:25: error: use of undefined value here causes undefined behavior
6424// :177:25: error: use of undefined value here causes undefined behavior
6425// :177:25: error: use of undefined value here causes undefined behavior
6426// :177:25: error: use of undefined value here causes undefined behavior
6427// :177:25: error: use of undefined value here causes undefined behavior
6428// :177:25: error: use of undefined value here causes undefined behavior
6429// :177:25: error: use of undefined value here causes undefined behavior
6430// :177:25: error: use of undefined value here causes undefined behavior
6431// :177:25: error: use of undefined value here causes undefined behavior
6432// :177:25: error: use of undefined value here causes undefined behavior
6433// :177:25: error: use of undefined value here causes undefined behavior
6434// :177:25: error: use of undefined value here causes undefined behavior
6435// :177:25: error: use of undefined value here causes undefined behavior
6436// :177:25: error: use of undefined value here causes undefined behavior
6437// :177:25: error: use of undefined value here causes undefined behavior
6438// :177:25: error: use of undefined value here causes undefined behavior
6439// :177:25: error: use of undefined value here causes undefined behavior
6440// :177:25: error: use of undefined value here causes undefined behavior
6441// :177:25: error: use of undefined value here causes undefined behavior
6442// :177:25: error: use of undefined value here causes undefined behavior
6443// :177:25: error: use of undefined value here causes undefined behavior
6444// :177:25: error: use of undefined value here causes undefined behavior
6445// :177:25: error: use of undefined value here causes undefined behavior
6446// :177:25: error: use of undefined value here causes undefined behavior
6447// :177:25: error: use of undefined value here causes undefined behavior
6448// :177:25: error: use of undefined value here causes undefined behavior
6449// :177:25: error: use of undefined value here causes undefined behavior
6450// :177:25: error: use of undefined value here causes undefined behavior
6451// :177:25: error: use of undefined value here causes undefined behavior
6452// :177:25: error: use of undefined value here causes undefined behavior
6453// :177:25: error: use of undefined value here causes undefined behavior
6454// :177:25: error: use of undefined value here causes undefined behavior
6455// :177:25: error: use of undefined value here causes undefined behavior
6456// :177:25: error: use of undefined value here causes undefined behavior
6457// :177:25: error: use of undefined value here causes undefined behavior
6458// :177:25: error: use of undefined value here causes undefined behavior
6459// :177:25: error: use of undefined value here causes undefined behavior
6460// :177:25: error: use of undefined value here causes undefined behavior
6461// :177:25: error: use of undefined value here causes undefined behavior
6462// :177:25: error: use of undefined value here causes undefined behavior
6463// :177:25: error: use of undefined value here causes undefined behavior
6464// :177:25: error: use of undefined value here causes undefined behavior
6465// :177:25: error: use of undefined value here causes undefined behavior
6466// :177:25: error: use of undefined value here causes undefined behavior
6467// :177:25: error: use of undefined value here causes undefined behavior
6468// :177:25: error: use of undefined value here causes undefined behavior
6469// :177:25: error: use of undefined value here causes undefined behavior
6470// :177:25: error: use of undefined value here causes undefined behavior
6471// :177:25: error: use of undefined value here causes undefined behavior
6472// :177:25: error: use of undefined value here causes undefined behavior
6473// :177:25: error: use of undefined value here causes undefined behavior
6474// :177:25: error: use of undefined value here causes undefined behavior
6475// :177:25: error: use of undefined value here causes undefined behavior
6476// :177:25: error: use of undefined value here causes undefined behavior
6477// :177:25: error: use of undefined value here causes undefined behavior
6478// :177:25: error: use of undefined value here causes undefined behavior
6479// :177:25: error: use of undefined value here causes undefined behavior
6480// :177:25: error: use of undefined value here causes undefined behavior
6481// :177:25: error: use of undefined value here causes undefined behavior
6482// :177:25: error: use of undefined value here causes undefined behavior
6483// :177:25: error: use of undefined value here causes undefined behavior
6484// :177:25: error: use of undefined value here causes undefined behavior
6485// :177:25: error: use of undefined value here causes undefined behavior
6486// :177:25: error: use of undefined value here causes undefined behavior
6487// :177:25: error: use of undefined value here causes undefined behavior
6488// :177:25: error: use of undefined value here causes undefined behavior
6489// :177:25: error: use of undefined value here causes undefined behavior
6490// :183:17: error: use of undefined value here causes undefined behavior
6491// :183:17: error: use of undefined value here causes undefined behavior
6492// :183:17: error: use of undefined value here causes undefined behavior
6493// :183:17: error: use of undefined value here causes undefined behavior
6494// :183:17: error: use of undefined value here causes undefined behavior
6495// :183:17: error: use of undefined value here causes undefined behavior
6496// :183:17: error: use of undefined value here causes undefined behavior
6497// :183:17: error: use of undefined value here causes undefined behavior
6498// :183:17: error: use of undefined value here causes undefined behavior
6499// :183:17: error: use of undefined value here causes undefined behavior
6500// :183:17: error: use of undefined value here causes undefined behavior
6501// :183:17: error: use of undefined value here causes undefined behavior
6502// :183:17: error: use of undefined value here causes undefined behavior
6503// :183:17: error: use of undefined value here causes undefined behavior
6504// :183:17: error: use of undefined value here causes undefined behavior
6505// :183:17: error: use of undefined value here causes undefined behavior
6506// :183:17: error: use of undefined value here causes undefined behavior
6507// :183:17: error: use of undefined value here causes undefined behavior
6508// :183:17: error: use of undefined value here causes undefined behavior
6509// :183:17: error: use of undefined value here causes undefined behavior
6510// :183:17: error: use of undefined value here causes undefined behavior
6511// :183:17: error: use of undefined value here causes undefined behavior
6512// :183:17: error: use of undefined value here causes undefined behavior
6513// :183:17: error: use of undefined value here causes undefined behavior
6514// :183:17: error: use of undefined value here causes undefined behavior
6515// :183:17: error: use of undefined value here causes undefined behavior
6516// :183:17: error: use of undefined value here causes undefined behavior
6517// :183:17: error: use of undefined value here causes undefined behavior
6518// :183:17: error: use of undefined value here causes undefined behavior
6519// :183:17: error: use of undefined value here causes undefined behavior
6520// :183:17: error: use of undefined value here causes undefined behavior
6521// :183:17: error: use of undefined value here causes undefined behavior
6522// :183:17: error: use of undefined value here causes undefined behavior
6523// :183:17: error: use of undefined value here causes undefined behavior
6524// :183:17: error: use of undefined value here causes undefined behavior
6525// :183:17: error: use of undefined value here causes undefined behavior
6526// :183:17: error: use of undefined value here causes undefined behavior
6527// :183:17: error: use of undefined value here causes undefined behavior
6528// :183:17: error: use of undefined value here causes undefined behavior
6529// :183:17: error: use of undefined value here causes undefined behavior
6530// :183:17: error: use of undefined value here causes undefined behavior
6531// :183:17: error: use of undefined value here causes undefined behavior
6532// :183:17: error: use of undefined value here causes undefined behavior
6533// :183:17: error: use of undefined value here causes undefined behavior
6534// :183:17: error: use of undefined value here causes undefined behavior
6535// :183:17: error: use of undefined value here causes undefined behavior
6536// :183:17: error: use of undefined value here causes undefined behavior
6537// :183:17: error: use of undefined value here causes undefined behavior
6538// :183:17: error: use of undefined value here causes undefined behavior
6539// :183:17: error: use of undefined value here causes undefined behavior
6540// :183:17: error: use of undefined value here causes undefined behavior
6541// :183:17: error: use of undefined value here causes undefined behavior
6542// :183:17: error: use of undefined value here causes undefined behavior
6543// :183:17: error: use of undefined value here causes undefined behavior
6544// :183:17: error: use of undefined value here causes undefined behavior
6545// :183:17: error: use of undefined value here causes undefined behavior
6546// :183:17: error: use of undefined value here causes undefined behavior
6547// :183:17: error: use of undefined value here causes undefined behavior
6548// :183:17: error: use of undefined value here causes undefined behavior
6549// :183:17: error: use of undefined value here causes undefined behavior
6550// :183:17: error: use of undefined value here causes undefined behavior
6551// :183:17: error: use of undefined value here causes undefined behavior
6552// :183:17: error: use of undefined value here causes undefined behavior
6553// :183:17: error: use of undefined value here causes undefined behavior
6554// :183:17: error: use of undefined value here causes undefined behavior
6555// :183:17: error: use of undefined value here causes undefined behavior
6556// :183:17: error: use of undefined value here causes undefined behavior
6557// :183:17: error: use of undefined value here causes undefined behavior
6558// :183:17: error: use of undefined value here causes undefined behavior
6559// :183:17: error: use of undefined value here causes undefined behavior
6560// :183:17: error: use of undefined value here causes undefined behavior
6561// :183:17: error: use of undefined value here causes undefined behavior
6562// :183:17: error: use of undefined value here causes undefined behavior
6563// :183:17: error: use of undefined value here causes undefined behavior
6564// :183:17: error: use of undefined value here causes undefined behavior
6565// :183:17: error: use of undefined value here causes undefined behavior
6566// :183:17: error: use of undefined value here causes undefined behavior
6567// :183:17: error: use of undefined value here causes undefined behavior
6568// :183:17: error: use of undefined value here causes undefined behavior
6569// :183:17: error: use of undefined value here causes undefined behavior
6570// :183:17: error: use of undefined value here causes undefined behavior
6571// :183:17: error: use of undefined value here causes undefined behavior
6572// :183:17: error: use of undefined value here causes undefined behavior
6573// :183:17: error: use of undefined value here causes undefined behavior
6574// :183:17: error: use of undefined value here causes undefined behavior
6575// :183:17: error: use of undefined value here causes undefined behavior
6576// :183:17: error: use of undefined value here causes undefined behavior
6577// :183:17: error: use of undefined value here causes undefined behavior
6578// :183:17: error: use of undefined value here causes undefined behavior
6579// :183:17: error: use of undefined value here causes undefined behavior
6580// :183:17: error: use of undefined value here causes undefined behavior
6581// :183:17: error: use of undefined value here causes undefined behavior
6582// :183:17: error: use of undefined value here causes undefined behavior
6583// :183:17: error: use of undefined value here causes undefined behavior
6584// :183:17: error: use of undefined value here causes undefined behavior
6585// :183:17: error: use of undefined value here causes undefined behavior
6586// :183:17: error: use of undefined value here causes undefined behavior
6587// :183:17: error: use of undefined value here causes undefined behavior
6588// :183:17: error: use of undefined value here causes undefined behavior
6589// :183:17: error: use of undefined value here causes undefined behavior
6590// :183:17: error: use of undefined value here causes undefined behavior
6591// :183:17: error: use of undefined value here causes undefined behavior
6592// :183:17: error: use of undefined value here causes undefined behavior
6593// :183:17: error: use of undefined value here causes undefined behavior
6594// :183:17: error: use of undefined value here causes undefined behavior
6595// :183:17: error: use of undefined value here causes undefined behavior
6596// :183:17: error: use of undefined value here causes undefined behavior
6597// :183:17: error: use of undefined value here causes undefined behavior
6598// :183:17: error: use of undefined value here causes undefined behavior
6599// :183:17: error: use of undefined value here causes undefined behavior
6600// :183:17: error: use of undefined value here causes undefined behavior
6601// :183:17: error: use of undefined value here causes undefined behavior
6602// :183:17: error: use of undefined value here causes undefined behavior
6603// :183:17: error: use of undefined value here causes undefined behavior
6604// :183:21: error: use of undefined value here causes undefined behavior
6605// :183:21: error: use of undefined value here causes undefined behavior
6606// :183:21: error: use of undefined value here causes undefined behavior
6607// :183:21: error: use of undefined value here causes undefined behavior
6608// :183:21: error: use of undefined value here causes undefined behavior
6609// :183:21: error: use of undefined value here causes undefined behavior
6610// :183:21: error: use of undefined value here causes undefined behavior
6611// :183:21: error: use of undefined value here causes undefined behavior
6612// :183:21: error: use of undefined value here causes undefined behavior
6613// :183:21: error: use of undefined value here causes undefined behavior
6614// :183:21: error: use of undefined value here causes undefined behavior
6615// :183:21: error: use of undefined value here causes undefined behavior
6616// :183:21: error: use of undefined value here causes undefined behavior
6617// :183:21: error: use of undefined value here causes undefined behavior
6618// :183:21: error: use of undefined value here causes undefined behavior
6619// :183:21: error: use of undefined value here causes undefined behavior
6620// :183:21: error: use of undefined value here causes undefined behavior
6621// :183:21: error: use of undefined value here causes undefined behavior
6622// :186:17: error: use of undefined value here causes undefined behavior
6623// :186:17: error: use of undefined value here causes undefined behavior
6624// :186:17: error: use of undefined value here causes undefined behavior
6625// :186:17: error: use of undefined value here causes undefined behavior
6626// :186:17: error: use of undefined value here causes undefined behavior
6627// :186:17: error: use of undefined value here causes undefined behavior
6628// :186:17: error: use of undefined value here causes undefined behavior
6629// :186:17: error: use of undefined value here causes undefined behavior
6630// :186:17: error: use of undefined value here causes undefined behavior
6631// :186:17: error: use of undefined value here causes undefined behavior
6632// :186:17: error: use of undefined value here causes undefined behavior
6633// :186:17: error: use of undefined value here causes undefined behavior
6634// :186:17: error: use of undefined value here causes undefined behavior
6635// :186:17: error: use of undefined value here causes undefined behavior
6636// :186:17: error: use of undefined value here causes undefined behavior
6637// :186:17: error: use of undefined value here causes undefined behavior
6638// :186:17: error: use of undefined value here causes undefined behavior
6639// :186:17: error: use of undefined value here causes undefined behavior
6640// :186:17: error: use of undefined value here causes undefined behavior
6641// :186:17: error: use of undefined value here causes undefined behavior
6642// :186:17: error: use of undefined value here causes undefined behavior
6643// :186:17: error: use of undefined value here causes undefined behavior
6644// :186:17: error: use of undefined value here causes undefined behavior
6645// :186:17: error: use of undefined value here causes undefined behavior
6646// :186:17: error: use of undefined value here causes undefined behavior
6647// :186:17: error: use of undefined value here causes undefined behavior
6648// :186:17: error: use of undefined value here causes undefined behavior
6649// :186:17: error: use of undefined value here causes undefined behavior
6650// :186:17: error: use of undefined value here causes undefined behavior
6651// :186:17: error: use of undefined value here causes undefined behavior
6652// :186:17: error: use of undefined value here causes undefined behavior
6653// :186:17: error: use of undefined value here causes undefined behavior
6654// :186:17: error: use of undefined value here causes undefined behavior
6655// :186:17: error: use of undefined value here causes undefined behavior
6656// :186:17: error: use of undefined value here causes undefined behavior
6657// :186:17: error: use of undefined value here causes undefined behavior
6658// :186:17: error: use of undefined value here causes undefined behavior
6659// :186:17: error: use of undefined value here causes undefined behavior
6660// :186:17: error: use of undefined value here causes undefined behavior
6661// :186:17: error: use of undefined value here causes undefined behavior
6662// :186:17: error: use of undefined value here causes undefined behavior
6663// :186:17: error: use of undefined value here causes undefined behavior
6664// :186:17: error: use of undefined value here causes undefined behavior
6665// :186:17: error: use of undefined value here causes undefined behavior
6666// :186:17: error: use of undefined value here causes undefined behavior
6667// :186:17: error: use of undefined value here causes undefined behavior
6668// :186:17: error: use of undefined value here causes undefined behavior
6669// :186:17: error: use of undefined value here causes undefined behavior
6670// :186:17: error: use of undefined value here causes undefined behavior
6671// :186:17: error: use of undefined value here causes undefined behavior
6672// :186:17: error: use of undefined value here causes undefined behavior
6673// :186:17: error: use of undefined value here causes undefined behavior
6674// :186:17: error: use of undefined value here causes undefined behavior
6675// :186:17: error: use of undefined value here causes undefined behavior
6676// :186:17: error: use of undefined value here causes undefined behavior
6677// :186:17: error: use of undefined value here causes undefined behavior
6678// :186:17: error: use of undefined value here causes undefined behavior
6679// :186:17: error: use of undefined value here causes undefined behavior
6680// :186:17: error: use of undefined value here causes undefined behavior
6681// :186:17: error: use of undefined value here causes undefined behavior
6682// :186:17: error: use of undefined value here causes undefined behavior
6683// :186:17: error: use of undefined value here causes undefined behavior
6684// :186:17: error: use of undefined value here causes undefined behavior
6685// :186:17: error: use of undefined value here causes undefined behavior
6686// :186:17: error: use of undefined value here causes undefined behavior
6687// :186:17: error: use of undefined value here causes undefined behavior
6688// :186:17: error: use of undefined value here causes undefined behavior
6689// :186:17: error: use of undefined value here causes undefined behavior
6690// :186:17: error: use of undefined value here causes undefined behavior
6691// :186:17: error: use of undefined value here causes undefined behavior
6692// :186:17: error: use of undefined value here causes undefined behavior
6693// :186:17: error: use of undefined value here causes undefined behavior
6694// :186:17: error: use of undefined value here causes undefined behavior
6695// :186:17: error: use of undefined value here causes undefined behavior
6696// :186:17: error: use of undefined value here causes undefined behavior
6697// :186:17: error: use of undefined value here causes undefined behavior
6698// :186:17: error: use of undefined value here causes undefined behavior
6699// :186:17: error: use of undefined value here causes undefined behavior
6700// :186:17: error: use of undefined value here causes undefined behavior
6701// :186:17: error: use of undefined value here causes undefined behavior
6702// :186:17: error: use of undefined value here causes undefined behavior
6703// :186:17: error: use of undefined value here causes undefined behavior
6704// :186:17: error: use of undefined value here causes undefined behavior
6705// :186:17: error: use of undefined value here causes undefined behavior
6706// :186:17: error: use of undefined value here causes undefined behavior
6707// :186:17: error: use of undefined value here causes undefined behavior
6708// :186:17: error: use of undefined value here causes undefined behavior
6709// :186:17: error: use of undefined value here causes undefined behavior
6710// :186:17: error: use of undefined value here causes undefined behavior
6711// :186:17: error: use of undefined value here causes undefined behavior
6712// :186:17: error: use of undefined value here causes undefined behavior
6713// :186:17: error: use of undefined value here causes undefined behavior
6714// :186:17: error: use of undefined value here causes undefined behavior
6715// :186:17: error: use of undefined value here causes undefined behavior
6716// :186:17: error: use of undefined value here causes undefined behavior
6717// :186:17: error: use of undefined value here causes undefined behavior
6718// :186:17: error: use of undefined value here causes undefined behavior
6719// :186:17: error: use of undefined value here causes undefined behavior
6720// :186:17: error: use of undefined value here causes undefined behavior
6721// :186:17: error: use of undefined value here causes undefined behavior
6722// :186:17: error: use of undefined value here causes undefined behavior
6723// :186:17: error: use of undefined value here causes undefined behavior
6724// :186:17: error: use of undefined value here causes undefined behavior
6725// :186:17: error: use of undefined value here causes undefined behavior
6726// :186:17: error: use of undefined value here causes undefined behavior
6727// :186:17: error: use of undefined value here causes undefined behavior
6728// :186:17: error: use of undefined value here causes undefined behavior
6729// :186:17: error: use of undefined value here causes undefined behavior
6730// :186:17: error: use of undefined value here causes undefined behavior
6731// :186:17: error: use of undefined value here causes undefined behavior
6732// :186:17: error: use of undefined value here causes undefined behavior
6733// :186:17: error: use of undefined value here causes undefined behavior
6734// :186:17: error: use of undefined value here causes undefined behavior
6735// :186:17: error: use of undefined value here causes undefined behavior
6736// :186:21: error: use of undefined value here causes undefined behavior
6737// :186:21: error: use of undefined value here causes undefined behavior
6738// :186:21: error: use of undefined value here causes undefined behavior
6739// :186:21: error: use of undefined value here causes undefined behavior
6740// :186:21: error: use of undefined value here causes undefined behavior
6741// :186:21: error: use of undefined value here causes undefined behavior
6742// :186:21: error: use of undefined value here causes undefined behavior
6743// :186:21: error: use of undefined value here causes undefined behavior
6744// :186:21: error: use of undefined value here causes undefined behavior
6745// :186:21: error: use of undefined value here causes undefined behavior
6746// :186:21: error: use of undefined value here causes undefined behavior
6747// :186:21: error: use of undefined value here causes undefined behavior
6748// :186:21: error: use of undefined value here causes undefined behavior
6749// :186:21: error: use of undefined value here causes undefined behavior
6750// :186:21: error: use of undefined value here causes undefined behavior
6751// :186:21: error: use of undefined value here causes undefined behavior
6752// :186:21: error: use of undefined value here causes undefined behavior
6753// :186:21: error: use of undefined value here causes undefined behavior
6754// :189:17: error: use of undefined value here causes undefined behavior
6755// :189:17: error: use of undefined value here causes undefined behavior
6756// :189:17: error: use of undefined value here causes undefined behavior
6757// :189:17: error: use of undefined value here causes undefined behavior
6758// :189:17: error: use of undefined value here causes undefined behavior
6759// :189:17: error: use of undefined value here causes undefined behavior
6760// :189:17: error: use of undefined value here causes undefined behavior
6761// :189:17: error: use of undefined value here causes undefined behavior
6762// :189:17: error: use of undefined value here causes undefined behavior
6763// :189:17: error: use of undefined value here causes undefined behavior
6764// :189:17: error: use of undefined value here causes undefined behavior
6765// :189:17: error: use of undefined value here causes undefined behavior
6766// :189:17: error: use of undefined value here causes undefined behavior
6767// :189:17: error: use of undefined value here causes undefined behavior
6768// :189:17: error: use of undefined value here causes undefined behavior
6769// :189:17: error: use of undefined value here causes undefined behavior
6770// :189:17: error: use of undefined value here causes undefined behavior
6771// :189:17: error: use of undefined value here causes undefined behavior
6772// :189:17: error: use of undefined value here causes undefined behavior
6773// :189:17: error: use of undefined value here causes undefined behavior
6774// :189:17: error: use of undefined value here causes undefined behavior
6775// :189:17: error: use of undefined value here causes undefined behavior
6776// :189:17: error: use of undefined value here causes undefined behavior
6777// :189:17: error: use of undefined value here causes undefined behavior
6778// :189:17: error: use of undefined value here causes undefined behavior
6779// :189:17: error: use of undefined value here causes undefined behavior
6780// :189:17: error: use of undefined value here causes undefined behavior
6781// :189:17: error: use of undefined value here causes undefined behavior
6782// :189:17: error: use of undefined value here causes undefined behavior
6783// :189:17: error: use of undefined value here causes undefined behavior
6784// :189:17: error: use of undefined value here causes undefined behavior
6785// :189:17: error: use of undefined value here causes undefined behavior
6786// :189:17: error: use of undefined value here causes undefined behavior
6787// :189:17: error: use of undefined value here causes undefined behavior
6788// :189:17: error: use of undefined value here causes undefined behavior
6789// :189:17: error: use of undefined value here causes undefined behavior
6790// :189:17: error: use of undefined value here causes undefined behavior
6791// :189:17: error: use of undefined value here causes undefined behavior
6792// :189:17: error: use of undefined value here causes undefined behavior
6793// :189:17: error: use of undefined value here causes undefined behavior
6794// :189:17: error: use of undefined value here causes undefined behavior
6795// :189:17: error: use of undefined value here causes undefined behavior
6796// :189:17: error: use of undefined value here causes undefined behavior
6797// :189:17: error: use of undefined value here causes undefined behavior
6798// :189:17: error: use of undefined value here causes undefined behavior
6799// :189:17: error: use of undefined value here causes undefined behavior
6800// :189:17: error: use of undefined value here causes undefined behavior
6801// :189:17: error: use of undefined value here causes undefined behavior
6802// :189:17: error: use of undefined value here causes undefined behavior
6803// :189:17: error: use of undefined value here causes undefined behavior
6804// :189:17: error: use of undefined value here causes undefined behavior
6805// :189:17: error: use of undefined value here causes undefined behavior
6806// :189:17: error: use of undefined value here causes undefined behavior
6807// :189:17: error: use of undefined value here causes undefined behavior
6808// :189:17: error: use of undefined value here causes undefined behavior
6809// :189:17: error: use of undefined value here causes undefined behavior
6810// :189:17: error: use of undefined value here causes undefined behavior
6811// :189:17: error: use of undefined value here causes undefined behavior
6812// :189:17: error: use of undefined value here causes undefined behavior
6813// :189:17: error: use of undefined value here causes undefined behavior
6814// :189:17: error: use of undefined value here causes undefined behavior
6815// :189:17: error: use of undefined value here causes undefined behavior
6816// :189:17: error: use of undefined value here causes undefined behavior
6817// :189:17: error: use of undefined value here causes undefined behavior
6818// :189:17: error: use of undefined value here causes undefined behavior
6819// :189:17: error: use of undefined value here causes undefined behavior
6820// :189:17: error: use of undefined value here causes undefined behavior
6821// :189:17: error: use of undefined value here causes undefined behavior
6822// :189:17: error: use of undefined value here causes undefined behavior
6823// :189:17: error: use of undefined value here causes undefined behavior
6824// :189:17: error: use of undefined value here causes undefined behavior
6825// :189:17: error: use of undefined value here causes undefined behavior
6826// :189:17: error: use of undefined value here causes undefined behavior
6827// :189:17: error: use of undefined value here causes undefined behavior
6828// :189:17: error: use of undefined value here causes undefined behavior
6829// :189:17: error: use of undefined value here causes undefined behavior
6830// :189:17: error: use of undefined value here causes undefined behavior
6831// :189:17: error: use of undefined value here causes undefined behavior
6832// :189:17: error: use of undefined value here causes undefined behavior
6833// :189:17: error: use of undefined value here causes undefined behavior
6834// :189:17: error: use of undefined value here causes undefined behavior
6835// :189:17: error: use of undefined value here causes undefined behavior
6836// :189:17: error: use of undefined value here causes undefined behavior
6837// :189:17: error: use of undefined value here causes undefined behavior
6838// :189:17: error: use of undefined value here causes undefined behavior
6839// :189:17: error: use of undefined value here causes undefined behavior
6840// :189:17: error: use of undefined value here causes undefined behavior
6841// :189:17: error: use of undefined value here causes undefined behavior
6842// :189:17: error: use of undefined value here causes undefined behavior
6843// :189:17: error: use of undefined value here causes undefined behavior
6844// :189:17: error: use of undefined value here causes undefined behavior
6845// :189:17: error: use of undefined value here causes undefined behavior
6846// :189:17: error: use of undefined value here causes undefined behavior
6847// :189:17: error: use of undefined value here causes undefined behavior
6848// :189:17: error: use of undefined value here causes undefined behavior
6849// :189:17: error: use of undefined value here causes undefined behavior
6850// :189:17: error: use of undefined value here causes undefined behavior
6851// :189:17: error: use of undefined value here causes undefined behavior
6852// :189:17: error: use of undefined value here causes undefined behavior
6853// :189:17: error: use of undefined value here causes undefined behavior
6854// :189:17: error: use of undefined value here causes undefined behavior
6855// :189:17: error: use of undefined value here causes undefined behavior
6856// :189:17: error: use of undefined value here causes undefined behavior
6857// :189:17: error: use of undefined value here causes undefined behavior
6858// :189:17: error: use of undefined value here causes undefined behavior
6859// :189:17: error: use of undefined value here causes undefined behavior
6860// :189:17: error: use of undefined value here causes undefined behavior
6861// :189:17: error: use of undefined value here causes undefined behavior
6862// :189:17: error: use of undefined value here causes undefined behavior
6863// :189:17: error: use of undefined value here causes undefined behavior
6864// :189:17: error: use of undefined value here causes undefined behavior
6865// :189:17: error: use of undefined value here causes undefined behavior
6866// :189:17: error: use of undefined value here causes undefined behavior
6867// :189:17: error: use of undefined value here causes undefined behavior
6868// :189:21: error: use of undefined value here causes undefined behavior
6869// :189:21: error: use of undefined value here causes undefined behavior
6870// :189:21: error: use of undefined value here causes undefined behavior
6871// :189:21: error: use of undefined value here causes undefined behavior
6872// :189:21: error: use of undefined value here causes undefined behavior
6873// :189:21: error: use of undefined value here causes undefined behavior
6874// :189:21: error: use of undefined value here causes undefined behavior
6875// :189:21: error: use of undefined value here causes undefined behavior
6876// :189:21: error: use of undefined value here causes undefined behavior
6877// :189:21: error: use of undefined value here causes undefined behavior
6878// :189:21: error: use of undefined value here causes undefined behavior
6879// :189:21: error: use of undefined value here causes undefined behavior
6880// :189:21: error: use of undefined value here causes undefined behavior
6881// :189:21: error: use of undefined value here causes undefined behavior
6882// :189:21: error: use of undefined value here causes undefined behavior
6883// :189:21: error: use of undefined value here causes undefined behavior
6884// :189:21: error: use of undefined value here causes undefined behavior
6885// :189:21: error: use of undefined value here causes undefined behavior
test/cases/compile_errors/undef_arith_returns_undef.zig created+2047
...@@ -0,0 +1,2047 @@
1//! For arithmetic operations which cannot trigger Illegal Behavior, this test evaluates those
2//! operations with undefined operands (or partially-undefined vector operands), and then uses
3//! `@compileLog` to validate the results are as expected in terms of comptime-known undefined.
4
5export fn entry() void {
6 testInt(u8);
7 testInt(i8);
8 testInt(u32);
9 testInt(i32);
10 testInt(u500);
11 testInt(i500);
12
13 testFloat(f16);
14 testFloat(f32);
15 testFloat(f64);
16 testFloat(f80);
17 testFloat(f128);
18}
19
20fn testInt(comptime Int: type) void {
21 testIntWithValue(Int, 3); // all comptime-known
22 testIntWithValue(Int, struct {
23 var rt: Int = 0;
24 }.rt); // partially runtime-known
25}
26
27fn testFloat(comptime Float: type) void {
28 testFloatWithValue(Float, 3.0); // all comptime-known
29 testFloatWithValue(Float, struct {
30 var rt: Float = 0.0;
31 }.rt); // partially runtime-known
32}
33
34inline fn testIntWithValue(comptime Int: type, x: Int) void {
35 const V = @Vector(2, Int);
36 const u: Int = undefined;
37
38 // Wrapping addition
39
40 @compileLog(x +% u); // undef
41 @compileLog(u +% x); // undef
42
43 @compileLog(V{ x, u } +% V{ x, x }); // { 6, undef }
44 @compileLog(V{ u, x } +% V{ x, x }); // { undef, 6 }
45 @compileLog(V{ u, u } +% V{ x, x }); // { undef, undef }
46
47 @compileLog(V{ x, x } +% V{ x, u }); // { 6, undef }
48 @compileLog(V{ x, u } +% V{ x, u }); // { 6, undef }
49 @compileLog(V{ u, x } +% V{ x, u }); // { undef, undef }
50 @compileLog(V{ u, u } +% V{ x, u }); // { undef, undef }
51
52 @compileLog(V{ x, x } +% V{ u, x }); // { undef, 6 }
53 @compileLog(V{ x, u } +% V{ u, x }); // { undef, undef }
54 @compileLog(V{ u, x } +% V{ u, x }); // { undef, 6 }
55 @compileLog(V{ u, u } +% V{ u, x }); // { undef, undef }
56
57 @compileLog(V{ x, x } +% V{ u, u }); // { undef, undef }
58 @compileLog(V{ x, u } +% V{ u, u }); // { undef, undef }
59 @compileLog(V{ u, x } +% V{ u, u }); // { undef, undef }
60 @compileLog(V{ u, u } +% V{ u, u }); // { undef, undef }
61
62 // Saturating addition
63
64 @compileLog(x +| u); // undef
65 @compileLog(u +| x); // undef
66
67 @compileLog(V{ x, u } +| V{ x, x }); // { 6, undef }
68 @compileLog(V{ u, x } +| V{ x, x }); // { undef, 6 }
69 @compileLog(V{ u, u } +| V{ x, x }); // { undef, undef }
70
71 @compileLog(V{ x, x } +| V{ x, u }); // { 6, undef }
72 @compileLog(V{ x, u } +| V{ x, u }); // { 6, undef }
73 @compileLog(V{ u, x } +| V{ x, u }); // { undef, undef }
74 @compileLog(V{ u, u } +| V{ x, u }); // { undef, undef }
75
76 @compileLog(V{ x, x } +| V{ u, x }); // { undef, 6 }
77 @compileLog(V{ x, u } +| V{ u, x }); // { undef, undef }
78 @compileLog(V{ u, x } +| V{ u, x }); // { undef, 6 }
79 @compileLog(V{ u, u } +| V{ u, x }); // { undef, undef }
80
81 @compileLog(V{ x, x } +| V{ u, u }); // { undef, undef }
82 @compileLog(V{ x, u } +| V{ u, u }); // { undef, undef }
83 @compileLog(V{ u, x } +| V{ u, u }); // { undef, undef }
84 @compileLog(V{ u, u } +| V{ u, u }); // { undef, undef }
85
86 // Wrapping subtraction
87
88 @compileLog(x -% u); // undef
89 @compileLog(u -% x); // undef
90
91 @compileLog(V{ x, u } -% V{ x, x }); // { 0, undef }
92 @compileLog(V{ u, x } -% V{ x, x }); // { undef, 0 }
93 @compileLog(V{ u, u } -% V{ x, x }); // { undef, undef }
94
95 @compileLog(V{ x, x } -% V{ x, u }); // { 0, undef }
96 @compileLog(V{ x, u } -% V{ x, u }); // { 0, undef }
97 @compileLog(V{ u, x } -% V{ x, u }); // { undef, undef }
98 @compileLog(V{ u, u } -% V{ x, u }); // { undef, undef }
99
100 @compileLog(V{ x, x } -% V{ u, x }); // { undef, 0 }
101 @compileLog(V{ x, u } -% V{ u, x }); // { undef, undef }
102 @compileLog(V{ u, x } -% V{ u, x }); // { undef, 0 }
103 @compileLog(V{ u, u } -% V{ u, x }); // { undef, undef }
104
105 @compileLog(V{ x, x } -% V{ u, u }); // { undef, undef }
106 @compileLog(V{ x, u } -% V{ u, u }); // { undef, undef }
107 @compileLog(V{ u, x } -% V{ u, u }); // { undef, undef }
108 @compileLog(V{ u, u } -% V{ u, u }); // { undef, undef }
109
110 // Saturating subtraction
111
112 @compileLog(x -| u); // undef
113 @compileLog(u -| x); // undef
114
115 @compileLog(V{ x, u } -| V{ x, x }); // { 0, undef }
116 @compileLog(V{ u, x } -| V{ x, x }); // { undef, 0 }
117 @compileLog(V{ u, u } -| V{ x, x }); // { undef, undef }
118
119 @compileLog(V{ x, x } -| V{ x, u }); // { 0, undef }
120 @compileLog(V{ x, u } -| V{ x, u }); // { 0, undef }
121 @compileLog(V{ u, x } -| V{ x, u }); // { undef, undef }
122 @compileLog(V{ u, u } -| V{ x, u }); // { undef, undef }
123
124 @compileLog(V{ x, x } -| V{ u, x }); // { undef, 0 }
125 @compileLog(V{ x, u } -| V{ u, x }); // { undef, undef }
126 @compileLog(V{ u, x } -| V{ u, x }); // { undef, 0 }
127 @compileLog(V{ u, u } -| V{ u, x }); // { undef, undef }
128
129 @compileLog(V{ x, x } -| V{ u, u }); // { undef, undef }
130 @compileLog(V{ x, u } -| V{ u, u }); // { undef, undef }
131 @compileLog(V{ u, x } -| V{ u, u }); // { undef, undef }
132 @compileLog(V{ u, u } -| V{ u, u }); // { undef, undef }
133
134 // Wrapping multiplication
135
136 @compileLog(x *% u); // undef
137 @compileLog(u *% x); // undef
138
139 @compileLog(V{ x, u } *% V{ x, x }); // { 9, undef }
140 @compileLog(V{ u, x } *% V{ x, x }); // { undef, 9 }
141 @compileLog(V{ u, u } *% V{ x, x }); // { undef, undef }
142
143 @compileLog(V{ x, x } *% V{ x, u }); // { 9, undef }
144 @compileLog(V{ x, u } *% V{ x, u }); // { 9, undef }
145 @compileLog(V{ u, x } *% V{ x, u }); // { undef, undef }
146 @compileLog(V{ u, u } *% V{ x, u }); // { undef, undef }
147
148 @compileLog(V{ x, x } *% V{ u, x }); // { undef, 9 }
149 @compileLog(V{ x, u } *% V{ u, x }); // { undef, undef }
150 @compileLog(V{ u, x } *% V{ u, x }); // { undef, 9 }
151 @compileLog(V{ u, u } *% V{ u, x }); // { undef, undef }
152
153 @compileLog(V{ x, x } *% V{ u, u }); // { undef, undef }
154 @compileLog(V{ x, u } *% V{ u, u }); // { undef, undef }
155 @compileLog(V{ u, x } *% V{ u, u }); // { undef, undef }
156 @compileLog(V{ u, u } *% V{ u, u }); // { undef, undef }
157
158 // Saturating multiplication
159
160 @compileLog(x *| u); // undef
161 @compileLog(u *| x); // undef
162
163 @compileLog(V{ x, u } *| V{ x, x }); // { 9, undef }
164 @compileLog(V{ u, x } *| V{ x, x }); // { undef, 9 }
165 @compileLog(V{ u, u } *| V{ x, x }); // { undef, undef }
166
167 @compileLog(V{ x, x } *| V{ x, u }); // { 9, undef }
168 @compileLog(V{ x, u } *| V{ x, u }); // { 9, undef }
169 @compileLog(V{ u, x } *| V{ x, u }); // { undef, undef }
170 @compileLog(V{ u, u } *| V{ x, u }); // { undef, undef }
171
172 @compileLog(V{ x, x } *| V{ u, x }); // { undef, 9 }
173 @compileLog(V{ x, u } *| V{ u, x }); // { undef, undef }
174 @compileLog(V{ u, x } *| V{ u, x }); // { undef, 9 }
175 @compileLog(V{ u, u } *| V{ u, x }); // { undef, undef }
176
177 @compileLog(V{ x, x } *| V{ u, u }); // { undef, undef }
178 @compileLog(V{ x, u } *| V{ u, u }); // { undef, undef }
179 @compileLog(V{ u, x } *| V{ u, u }); // { undef, undef }
180 @compileLog(V{ u, u } *| V{ u, u }); // { undef, undef }
181}
182
183inline fn testFloatWithValue(comptime Float: type, x: Float) void {
184 const V = @Vector(2, Float);
185 const u: Float = undefined;
186
187 // Addition
188
189 @compileLog(x + u); // undef
190 @compileLog(u + x); // undef
191
192 @compileLog(V{ x, u } + V{ x, x }); // { 6, undef }
193 @compileLog(V{ u, x } + V{ x, x }); // { undef, 6 }
194 @compileLog(V{ u, u } + V{ x, x }); // { undef, undef }
195
196 @compileLog(V{ x, x } + V{ x, u }); // { 6, undef }
197 @compileLog(V{ x, u } + V{ x, u }); // { 6, undef }
198 @compileLog(V{ u, x } + V{ x, u }); // { undef, undef }
199 @compileLog(V{ u, u } + V{ x, u }); // { undef, undef }
200
201 @compileLog(V{ x, x } + V{ u, x }); // { undef, 6 }
202 @compileLog(V{ x, u } + V{ u, x }); // { undef, undef }
203 @compileLog(V{ u, x } + V{ u, x }); // { undef, 6 }
204 @compileLog(V{ u, u } + V{ u, x }); // { undef, undef }
205
206 @compileLog(V{ x, x } + V{ u, u }); // { undef, undef }
207 @compileLog(V{ x, u } + V{ u, u }); // { undef, undef }
208 @compileLog(V{ u, x } + V{ u, u }); // { undef, undef }
209 @compileLog(V{ u, u } + V{ u, u }); // { undef, undef }
210
211 // Subtraction
212
213 @compileLog(x - u); // undef
214 @compileLog(u - x); // undef
215
216 @compileLog(V{ x, u } - V{ x, x }); // { 0, undef }
217 @compileLog(V{ u, x } - V{ x, x }); // { undef, 0 }
218 @compileLog(V{ u, u } - V{ x, x }); // { undef, undef }
219
220 @compileLog(V{ x, x } - V{ x, u }); // { 0, undef }
221 @compileLog(V{ x, u } - V{ x, u }); // { 0, undef }
222 @compileLog(V{ u, x } - V{ x, u }); // { undef, undef }
223 @compileLog(V{ u, u } - V{ x, u }); // { undef, undef }
224
225 @compileLog(V{ x, x } - V{ u, x }); // { undef, 0 }
226 @compileLog(V{ x, u } - V{ u, x }); // { undef, undef }
227 @compileLog(V{ u, x } - V{ u, x }); // { undef, 0 }
228 @compileLog(V{ u, u } - V{ u, x }); // { undef, undef }
229
230 @compileLog(V{ x, x } - V{ u, u }); // { undef, undef }
231 @compileLog(V{ x, u } - V{ u, u }); // { undef, undef }
232 @compileLog(V{ u, x } - V{ u, u }); // { undef, undef }
233 @compileLog(V{ u, u } - V{ u, u }); // { undef, undef }
234
235 // Multiplication
236
237 @compileLog(x * u); // undef
238 @compileLog(u * x); // undef
239
240 @compileLog(V{ x, u } * V{ x, x }); // { 9, undef }
241 @compileLog(V{ u, x } * V{ x, x }); // { undef, 9 }
242 @compileLog(V{ u, u } * V{ x, x }); // { undef, undef }
243
244 @compileLog(V{ x, x } * V{ x, u }); // { 9, undef }
245 @compileLog(V{ x, u } * V{ x, u }); // { 9, undef }
246 @compileLog(V{ u, x } * V{ x, u }); // { undef, undef }
247 @compileLog(V{ u, u } * V{ x, u }); // { undef, undef }
248
249 @compileLog(V{ x, x } * V{ u, x }); // { undef, 9 }
250 @compileLog(V{ x, u } * V{ u, x }); // { undef, undef }
251 @compileLog(V{ u, x } * V{ u, x }); // { undef, 9 }
252 @compileLog(V{ u, u } * V{ u, x }); // { undef, undef }
253
254 @compileLog(V{ x, x } * V{ u, u }); // { undef, undef }
255 @compileLog(V{ x, u } * V{ u, u }); // { undef, undef }
256 @compileLog(V{ u, x } * V{ u, u }); // { undef, undef }
257 @compileLog(V{ u, u } * V{ u, u }); // { undef, undef }
258
259 // Negation
260
261 @compileLog(-u); // undef
262 @compileLog(-V{ x, u }); // { -3, undef }
263 @compileLog(-V{ u, x }); // { undef, -3 }
264 @compileLog(-V{ u, u }); // { undef, undef }
265}
266
267// error
268//
269// :40:5: error: found compile log statement
270// :40:5: note: also here (5 times)
271// :189:5: note: also here (5 times)
272//
273// Compile Log Output:
274// @as(u8, undefined)
275// @as(u8, undefined)
276// @as(@Vector(2, u8), .{ 6, undefined })
277// @as(@Vector(2, u8), .{ undefined, 6 })
278// @as(@Vector(2, u8), .{ undefined, undefined })
279// @as(@Vector(2, u8), .{ 6, undefined })
280// @as(@Vector(2, u8), .{ 6, undefined })
281// @as(@Vector(2, u8), .{ undefined, undefined })
282// @as(@Vector(2, u8), .{ undefined, undefined })
283// @as(@Vector(2, u8), .{ undefined, 6 })
284// @as(@Vector(2, u8), .{ undefined, undefined })
285// @as(@Vector(2, u8), .{ undefined, 6 })
286// @as(@Vector(2, u8), .{ undefined, undefined })
287// @as(@Vector(2, u8), .{ undefined, undefined })
288// @as(@Vector(2, u8), .{ undefined, undefined })
289// @as(@Vector(2, u8), .{ undefined, undefined })
290// @as(@Vector(2, u8), .{ undefined, undefined })
291// @as(u8, undefined)
292// @as(u8, undefined)
293// @as(@Vector(2, u8), .{ 6, undefined })
294// @as(@Vector(2, u8), .{ undefined, 6 })
295// @as(@Vector(2, u8), .{ undefined, undefined })
296// @as(@Vector(2, u8), .{ 6, undefined })
297// @as(@Vector(2, u8), .{ 6, undefined })
298// @as(@Vector(2, u8), .{ undefined, undefined })
299// @as(@Vector(2, u8), .{ undefined, undefined })
300// @as(@Vector(2, u8), .{ undefined, 6 })
301// @as(@Vector(2, u8), .{ undefined, undefined })
302// @as(@Vector(2, u8), .{ undefined, 6 })
303// @as(@Vector(2, u8), .{ undefined, undefined })
304// @as(@Vector(2, u8), .{ undefined, undefined })
305// @as(@Vector(2, u8), .{ undefined, undefined })
306// @as(@Vector(2, u8), .{ undefined, undefined })
307// @as(@Vector(2, u8), .{ undefined, undefined })
308// @as(u8, undefined)
309// @as(u8, undefined)
310// @as(@Vector(2, u8), .{ 0, undefined })
311// @as(@Vector(2, u8), .{ undefined, 0 })
312// @as(@Vector(2, u8), .{ undefined, undefined })
313// @as(@Vector(2, u8), .{ 0, undefined })
314// @as(@Vector(2, u8), .{ 0, undefined })
315// @as(@Vector(2, u8), .{ undefined, undefined })
316// @as(@Vector(2, u8), .{ undefined, undefined })
317// @as(@Vector(2, u8), .{ undefined, 0 })
318// @as(@Vector(2, u8), .{ undefined, undefined })
319// @as(@Vector(2, u8), .{ undefined, 0 })
320// @as(@Vector(2, u8), .{ undefined, undefined })
321// @as(@Vector(2, u8), .{ undefined, undefined })
322// @as(@Vector(2, u8), .{ undefined, undefined })
323// @as(@Vector(2, u8), .{ undefined, undefined })
324// @as(@Vector(2, u8), .{ undefined, undefined })
325// @as(u8, undefined)
326// @as(u8, undefined)
327// @as(@Vector(2, u8), .{ 0, undefined })
328// @as(@Vector(2, u8), .{ undefined, 0 })
329// @as(@Vector(2, u8), .{ undefined, undefined })
330// @as(@Vector(2, u8), .{ 0, undefined })
331// @as(@Vector(2, u8), .{ 0, undefined })
332// @as(@Vector(2, u8), .{ undefined, undefined })
333// @as(@Vector(2, u8), .{ undefined, undefined })
334// @as(@Vector(2, u8), .{ undefined, 0 })
335// @as(@Vector(2, u8), .{ undefined, undefined })
336// @as(@Vector(2, u8), .{ undefined, 0 })
337// @as(@Vector(2, u8), .{ undefined, undefined })
338// @as(@Vector(2, u8), .{ undefined, undefined })
339// @as(@Vector(2, u8), .{ undefined, undefined })
340// @as(@Vector(2, u8), .{ undefined, undefined })
341// @as(@Vector(2, u8), .{ undefined, undefined })
342// @as(u8, undefined)
343// @as(u8, undefined)
344// @as(@Vector(2, u8), .{ 9, undefined })
345// @as(@Vector(2, u8), .{ undefined, 9 })
346// @as(@Vector(2, u8), .{ undefined, undefined })
347// @as(@Vector(2, u8), .{ 9, undefined })
348// @as(@Vector(2, u8), .{ 9, undefined })
349// @as(@Vector(2, u8), .{ undefined, undefined })
350// @as(@Vector(2, u8), .{ undefined, undefined })
351// @as(@Vector(2, u8), .{ undefined, 9 })
352// @as(@Vector(2, u8), .{ undefined, undefined })
353// @as(@Vector(2, u8), .{ undefined, 9 })
354// @as(@Vector(2, u8), .{ undefined, undefined })
355// @as(@Vector(2, u8), .{ undefined, undefined })
356// @as(@Vector(2, u8), .{ undefined, undefined })
357// @as(@Vector(2, u8), .{ undefined, undefined })
358// @as(@Vector(2, u8), .{ undefined, undefined })
359// @as(u8, undefined)
360// @as(u8, undefined)
361// @as(@Vector(2, u8), .{ 9, undefined })
362// @as(@Vector(2, u8), .{ undefined, 9 })
363// @as(@Vector(2, u8), .{ undefined, undefined })
364// @as(@Vector(2, u8), .{ 9, undefined })
365// @as(@Vector(2, u8), .{ 9, undefined })
366// @as(@Vector(2, u8), .{ undefined, undefined })
367// @as(@Vector(2, u8), .{ undefined, undefined })
368// @as(@Vector(2, u8), .{ undefined, 9 })
369// @as(@Vector(2, u8), .{ undefined, undefined })
370// @as(@Vector(2, u8), .{ undefined, 9 })
371// @as(@Vector(2, u8), .{ undefined, undefined })
372// @as(@Vector(2, u8), .{ undefined, undefined })
373// @as(@Vector(2, u8), .{ undefined, undefined })
374// @as(@Vector(2, u8), .{ undefined, undefined })
375// @as(@Vector(2, u8), .{ undefined, undefined })
376// @as(u8, undefined)
377// @as(u8, undefined)
378// @as(@Vector(2, u8), [runtime value])
379// @as(@Vector(2, u8), [runtime value])
380// @as(@Vector(2, u8), [runtime value])
381// @as(@Vector(2, u8), [runtime value])
382// @as(@Vector(2, u8), [runtime value])
383// @as(@Vector(2, u8), [runtime value])
384// @as(@Vector(2, u8), [runtime value])
385// @as(@Vector(2, u8), [runtime value])
386// @as(@Vector(2, u8), [runtime value])
387// @as(@Vector(2, u8), [runtime value])
388// @as(@Vector(2, u8), [runtime value])
389// @as(@Vector(2, u8), [runtime value])
390// @as(@Vector(2, u8), [runtime value])
391// @as(@Vector(2, u8), [runtime value])
392// @as(@Vector(2, u8), .{ undefined, undefined })
393// @as(u8, undefined)
394// @as(u8, undefined)
395// @as(@Vector(2, u8), [runtime value])
396// @as(@Vector(2, u8), [runtime value])
397// @as(@Vector(2, u8), [runtime value])
398// @as(@Vector(2, u8), [runtime value])
399// @as(@Vector(2, u8), [runtime value])
400// @as(@Vector(2, u8), [runtime value])
401// @as(@Vector(2, u8), [runtime value])
402// @as(@Vector(2, u8), [runtime value])
403// @as(@Vector(2, u8), [runtime value])
404// @as(@Vector(2, u8), [runtime value])
405// @as(@Vector(2, u8), [runtime value])
406// @as(@Vector(2, u8), [runtime value])
407// @as(@Vector(2, u8), [runtime value])
408// @as(@Vector(2, u8), [runtime value])
409// @as(@Vector(2, u8), .{ undefined, undefined })
410// @as(u8, undefined)
411// @as(u8, undefined)
412// @as(@Vector(2, u8), [runtime value])
413// @as(@Vector(2, u8), [runtime value])
414// @as(@Vector(2, u8), [runtime value])
415// @as(@Vector(2, u8), [runtime value])
416// @as(@Vector(2, u8), [runtime value])
417// @as(@Vector(2, u8), [runtime value])
418// @as(@Vector(2, u8), [runtime value])
419// @as(@Vector(2, u8), [runtime value])
420// @as(@Vector(2, u8), [runtime value])
421// @as(@Vector(2, u8), [runtime value])
422// @as(@Vector(2, u8), [runtime value])
423// @as(@Vector(2, u8), [runtime value])
424// @as(@Vector(2, u8), [runtime value])
425// @as(@Vector(2, u8), [runtime value])
426// @as(@Vector(2, u8), .{ undefined, undefined })
427// @as(u8, undefined)
428// @as(u8, undefined)
429// @as(@Vector(2, u8), [runtime value])
430// @as(@Vector(2, u8), [runtime value])
431// @as(@Vector(2, u8), [runtime value])
432// @as(@Vector(2, u8), [runtime value])
433// @as(@Vector(2, u8), [runtime value])
434// @as(@Vector(2, u8), [runtime value])
435// @as(@Vector(2, u8), [runtime value])
436// @as(@Vector(2, u8), [runtime value])
437// @as(@Vector(2, u8), [runtime value])
438// @as(@Vector(2, u8), [runtime value])
439// @as(@Vector(2, u8), [runtime value])
440// @as(@Vector(2, u8), [runtime value])
441// @as(@Vector(2, u8), [runtime value])
442// @as(@Vector(2, u8), [runtime value])
443// @as(@Vector(2, u8), .{ undefined, undefined })
444// @as(u8, undefined)
445// @as(u8, undefined)
446// @as(@Vector(2, u8), [runtime value])
447// @as(@Vector(2, u8), [runtime value])
448// @as(@Vector(2, u8), [runtime value])
449// @as(@Vector(2, u8), [runtime value])
450// @as(@Vector(2, u8), [runtime value])
451// @as(@Vector(2, u8), [runtime value])
452// @as(@Vector(2, u8), [runtime value])
453// @as(@Vector(2, u8), [runtime value])
454// @as(@Vector(2, u8), [runtime value])
455// @as(@Vector(2, u8), [runtime value])
456// @as(@Vector(2, u8), [runtime value])
457// @as(@Vector(2, u8), [runtime value])
458// @as(@Vector(2, u8), [runtime value])
459// @as(@Vector(2, u8), [runtime value])
460// @as(@Vector(2, u8), .{ undefined, undefined })
461// @as(u8, undefined)
462// @as(u8, undefined)
463// @as(@Vector(2, u8), [runtime value])
464// @as(@Vector(2, u8), [runtime value])
465// @as(@Vector(2, u8), [runtime value])
466// @as(@Vector(2, u8), [runtime value])
467// @as(@Vector(2, u8), [runtime value])
468// @as(@Vector(2, u8), [runtime value])
469// @as(@Vector(2, u8), [runtime value])
470// @as(@Vector(2, u8), [runtime value])
471// @as(@Vector(2, u8), [runtime value])
472// @as(@Vector(2, u8), [runtime value])
473// @as(@Vector(2, u8), [runtime value])
474// @as(@Vector(2, u8), [runtime value])
475// @as(@Vector(2, u8), [runtime value])
476// @as(@Vector(2, u8), [runtime value])
477// @as(@Vector(2, u8), .{ undefined, undefined })
478// @as(i8, undefined)
479// @as(i8, undefined)
480// @as(@Vector(2, i8), .{ 6, undefined })
481// @as(@Vector(2, i8), .{ undefined, 6 })
482// @as(@Vector(2, i8), .{ undefined, undefined })
483// @as(@Vector(2, i8), .{ 6, undefined })
484// @as(@Vector(2, i8), .{ 6, undefined })
485// @as(@Vector(2, i8), .{ undefined, undefined })
486// @as(@Vector(2, i8), .{ undefined, undefined })
487// @as(@Vector(2, i8), .{ undefined, 6 })
488// @as(@Vector(2, i8), .{ undefined, undefined })
489// @as(@Vector(2, i8), .{ undefined, 6 })
490// @as(@Vector(2, i8), .{ undefined, undefined })
491// @as(@Vector(2, i8), .{ undefined, undefined })
492// @as(@Vector(2, i8), .{ undefined, undefined })
493// @as(@Vector(2, i8), .{ undefined, undefined })
494// @as(@Vector(2, i8), .{ undefined, undefined })
495// @as(i8, undefined)
496// @as(i8, undefined)
497// @as(@Vector(2, i8), .{ 6, undefined })
498// @as(@Vector(2, i8), .{ undefined, 6 })
499// @as(@Vector(2, i8), .{ undefined, undefined })
500// @as(@Vector(2, i8), .{ 6, undefined })
501// @as(@Vector(2, i8), .{ 6, undefined })
502// @as(@Vector(2, i8), .{ undefined, undefined })
503// @as(@Vector(2, i8), .{ undefined, undefined })
504// @as(@Vector(2, i8), .{ undefined, 6 })
505// @as(@Vector(2, i8), .{ undefined, undefined })
506// @as(@Vector(2, i8), .{ undefined, 6 })
507// @as(@Vector(2, i8), .{ undefined, undefined })
508// @as(@Vector(2, i8), .{ undefined, undefined })
509// @as(@Vector(2, i8), .{ undefined, undefined })
510// @as(@Vector(2, i8), .{ undefined, undefined })
511// @as(@Vector(2, i8), .{ undefined, undefined })
512// @as(i8, undefined)
513// @as(i8, undefined)
514// @as(@Vector(2, i8), .{ 0, undefined })
515// @as(@Vector(2, i8), .{ undefined, 0 })
516// @as(@Vector(2, i8), .{ undefined, undefined })
517// @as(@Vector(2, i8), .{ 0, undefined })
518// @as(@Vector(2, i8), .{ 0, undefined })
519// @as(@Vector(2, i8), .{ undefined, undefined })
520// @as(@Vector(2, i8), .{ undefined, undefined })
521// @as(@Vector(2, i8), .{ undefined, 0 })
522// @as(@Vector(2, i8), .{ undefined, undefined })
523// @as(@Vector(2, i8), .{ undefined, 0 })
524// @as(@Vector(2, i8), .{ undefined, undefined })
525// @as(@Vector(2, i8), .{ undefined, undefined })
526// @as(@Vector(2, i8), .{ undefined, undefined })
527// @as(@Vector(2, i8), .{ undefined, undefined })
528// @as(@Vector(2, i8), .{ undefined, undefined })
529// @as(i8, undefined)
530// @as(i8, undefined)
531// @as(@Vector(2, i8), .{ 0, undefined })
532// @as(@Vector(2, i8), .{ undefined, 0 })
533// @as(@Vector(2, i8), .{ undefined, undefined })
534// @as(@Vector(2, i8), .{ 0, undefined })
535// @as(@Vector(2, i8), .{ 0, undefined })
536// @as(@Vector(2, i8), .{ undefined, undefined })
537// @as(@Vector(2, i8), .{ undefined, undefined })
538// @as(@Vector(2, i8), .{ undefined, 0 })
539// @as(@Vector(2, i8), .{ undefined, undefined })
540// @as(@Vector(2, i8), .{ undefined, 0 })
541// @as(@Vector(2, i8), .{ undefined, undefined })
542// @as(@Vector(2, i8), .{ undefined, undefined })
543// @as(@Vector(2, i8), .{ undefined, undefined })
544// @as(@Vector(2, i8), .{ undefined, undefined })
545// @as(@Vector(2, i8), .{ undefined, undefined })
546// @as(i8, undefined)
547// @as(i8, undefined)
548// @as(@Vector(2, i8), .{ 9, undefined })
549// @as(@Vector(2, i8), .{ undefined, 9 })
550// @as(@Vector(2, i8), .{ undefined, undefined })
551// @as(@Vector(2, i8), .{ 9, undefined })
552// @as(@Vector(2, i8), .{ 9, undefined })
553// @as(@Vector(2, i8), .{ undefined, undefined })
554// @as(@Vector(2, i8), .{ undefined, undefined })
555// @as(@Vector(2, i8), .{ undefined, 9 })
556// @as(@Vector(2, i8), .{ undefined, undefined })
557// @as(@Vector(2, i8), .{ undefined, 9 })
558// @as(@Vector(2, i8), .{ undefined, undefined })
559// @as(@Vector(2, i8), .{ undefined, undefined })
560// @as(@Vector(2, i8), .{ undefined, undefined })
561// @as(@Vector(2, i8), .{ undefined, undefined })
562// @as(@Vector(2, i8), .{ undefined, undefined })
563// @as(i8, undefined)
564// @as(i8, undefined)
565// @as(@Vector(2, i8), .{ 9, undefined })
566// @as(@Vector(2, i8), .{ undefined, 9 })
567// @as(@Vector(2, i8), .{ undefined, undefined })
568// @as(@Vector(2, i8), .{ 9, undefined })
569// @as(@Vector(2, i8), .{ 9, undefined })
570// @as(@Vector(2, i8), .{ undefined, undefined })
571// @as(@Vector(2, i8), .{ undefined, undefined })
572// @as(@Vector(2, i8), .{ undefined, 9 })
573// @as(@Vector(2, i8), .{ undefined, undefined })
574// @as(@Vector(2, i8), .{ undefined, 9 })
575// @as(@Vector(2, i8), .{ undefined, undefined })
576// @as(@Vector(2, i8), .{ undefined, undefined })
577// @as(@Vector(2, i8), .{ undefined, undefined })
578// @as(@Vector(2, i8), .{ undefined, undefined })
579// @as(@Vector(2, i8), .{ undefined, undefined })
580// @as(i8, undefined)
581// @as(i8, undefined)
582// @as(@Vector(2, i8), [runtime value])
583// @as(@Vector(2, i8), [runtime value])
584// @as(@Vector(2, i8), [runtime value])
585// @as(@Vector(2, i8), [runtime value])
586// @as(@Vector(2, i8), [runtime value])
587// @as(@Vector(2, i8), [runtime value])
588// @as(@Vector(2, i8), [runtime value])
589// @as(@Vector(2, i8), [runtime value])
590// @as(@Vector(2, i8), [runtime value])
591// @as(@Vector(2, i8), [runtime value])
592// @as(@Vector(2, i8), [runtime value])
593// @as(@Vector(2, i8), [runtime value])
594// @as(@Vector(2, i8), [runtime value])
595// @as(@Vector(2, i8), [runtime value])
596// @as(@Vector(2, i8), .{ undefined, undefined })
597// @as(i8, undefined)
598// @as(i8, undefined)
599// @as(@Vector(2, i8), [runtime value])
600// @as(@Vector(2, i8), [runtime value])
601// @as(@Vector(2, i8), [runtime value])
602// @as(@Vector(2, i8), [runtime value])
603// @as(@Vector(2, i8), [runtime value])
604// @as(@Vector(2, i8), [runtime value])
605// @as(@Vector(2, i8), [runtime value])
606// @as(@Vector(2, i8), [runtime value])
607// @as(@Vector(2, i8), [runtime value])
608// @as(@Vector(2, i8), [runtime value])
609// @as(@Vector(2, i8), [runtime value])
610// @as(@Vector(2, i8), [runtime value])
611// @as(@Vector(2, i8), [runtime value])
612// @as(@Vector(2, i8), [runtime value])
613// @as(@Vector(2, i8), .{ undefined, undefined })
614// @as(i8, undefined)
615// @as(i8, undefined)
616// @as(@Vector(2, i8), [runtime value])
617// @as(@Vector(2, i8), [runtime value])
618// @as(@Vector(2, i8), [runtime value])
619// @as(@Vector(2, i8), [runtime value])
620// @as(@Vector(2, i8), [runtime value])
621// @as(@Vector(2, i8), [runtime value])
622// @as(@Vector(2, i8), [runtime value])
623// @as(@Vector(2, i8), [runtime value])
624// @as(@Vector(2, i8), [runtime value])
625// @as(@Vector(2, i8), [runtime value])
626// @as(@Vector(2, i8), [runtime value])
627// @as(@Vector(2, i8), [runtime value])
628// @as(@Vector(2, i8), [runtime value])
629// @as(@Vector(2, i8), [runtime value])
630// @as(@Vector(2, i8), .{ undefined, undefined })
631// @as(i8, undefined)
632// @as(i8, undefined)
633// @as(@Vector(2, i8), [runtime value])
634// @as(@Vector(2, i8), [runtime value])
635// @as(@Vector(2, i8), [runtime value])
636// @as(@Vector(2, i8), [runtime value])
637// @as(@Vector(2, i8), [runtime value])
638// @as(@Vector(2, i8), [runtime value])
639// @as(@Vector(2, i8), [runtime value])
640// @as(@Vector(2, i8), [runtime value])
641// @as(@Vector(2, i8), [runtime value])
642// @as(@Vector(2, i8), [runtime value])
643// @as(@Vector(2, i8), [runtime value])
644// @as(@Vector(2, i8), [runtime value])
645// @as(@Vector(2, i8), [runtime value])
646// @as(@Vector(2, i8), [runtime value])
647// @as(@Vector(2, i8), .{ undefined, undefined })
648// @as(i8, undefined)
649// @as(i8, undefined)
650// @as(@Vector(2, i8), [runtime value])
651// @as(@Vector(2, i8), [runtime value])
652// @as(@Vector(2, i8), [runtime value])
653// @as(@Vector(2, i8), [runtime value])
654// @as(@Vector(2, i8), [runtime value])
655// @as(@Vector(2, i8), [runtime value])
656// @as(@Vector(2, i8), [runtime value])
657// @as(@Vector(2, i8), [runtime value])
658// @as(@Vector(2, i8), [runtime value])
659// @as(@Vector(2, i8), [runtime value])
660// @as(@Vector(2, i8), [runtime value])
661// @as(@Vector(2, i8), [runtime value])
662// @as(@Vector(2, i8), [runtime value])
663// @as(@Vector(2, i8), [runtime value])
664// @as(@Vector(2, i8), .{ undefined, undefined })
665// @as(i8, undefined)
666// @as(i8, undefined)
667// @as(@Vector(2, i8), [runtime value])
668// @as(@Vector(2, i8), [runtime value])
669// @as(@Vector(2, i8), [runtime value])
670// @as(@Vector(2, i8), [runtime value])
671// @as(@Vector(2, i8), [runtime value])
672// @as(@Vector(2, i8), [runtime value])
673// @as(@Vector(2, i8), [runtime value])
674// @as(@Vector(2, i8), [runtime value])
675// @as(@Vector(2, i8), [runtime value])
676// @as(@Vector(2, i8), [runtime value])
677// @as(@Vector(2, i8), [runtime value])
678// @as(@Vector(2, i8), [runtime value])
679// @as(@Vector(2, i8), [runtime value])
680// @as(@Vector(2, i8), [runtime value])
681// @as(@Vector(2, i8), .{ undefined, undefined })
682// @as(u32, undefined)
683// @as(u32, undefined)
684// @as(@Vector(2, u32), .{ 6, undefined })
685// @as(@Vector(2, u32), .{ undefined, 6 })
686// @as(@Vector(2, u32), .{ undefined, undefined })
687// @as(@Vector(2, u32), .{ 6, undefined })
688// @as(@Vector(2, u32), .{ 6, undefined })
689// @as(@Vector(2, u32), .{ undefined, undefined })
690// @as(@Vector(2, u32), .{ undefined, undefined })
691// @as(@Vector(2, u32), .{ undefined, 6 })
692// @as(@Vector(2, u32), .{ undefined, undefined })
693// @as(@Vector(2, u32), .{ undefined, 6 })
694// @as(@Vector(2, u32), .{ undefined, undefined })
695// @as(@Vector(2, u32), .{ undefined, undefined })
696// @as(@Vector(2, u32), .{ undefined, undefined })
697// @as(@Vector(2, u32), .{ undefined, undefined })
698// @as(@Vector(2, u32), .{ undefined, undefined })
699// @as(u32, undefined)
700// @as(u32, undefined)
701// @as(@Vector(2, u32), .{ 6, undefined })
702// @as(@Vector(2, u32), .{ undefined, 6 })
703// @as(@Vector(2, u32), .{ undefined, undefined })
704// @as(@Vector(2, u32), .{ 6, undefined })
705// @as(@Vector(2, u32), .{ 6, undefined })
706// @as(@Vector(2, u32), .{ undefined, undefined })
707// @as(@Vector(2, u32), .{ undefined, undefined })
708// @as(@Vector(2, u32), .{ undefined, 6 })
709// @as(@Vector(2, u32), .{ undefined, undefined })
710// @as(@Vector(2, u32), .{ undefined, 6 })
711// @as(@Vector(2, u32), .{ undefined, undefined })
712// @as(@Vector(2, u32), .{ undefined, undefined })
713// @as(@Vector(2, u32), .{ undefined, undefined })
714// @as(@Vector(2, u32), .{ undefined, undefined })
715// @as(@Vector(2, u32), .{ undefined, undefined })
716// @as(u32, undefined)
717// @as(u32, undefined)
718// @as(@Vector(2, u32), .{ 0, undefined })
719// @as(@Vector(2, u32), .{ undefined, 0 })
720// @as(@Vector(2, u32), .{ undefined, undefined })
721// @as(@Vector(2, u32), .{ 0, undefined })
722// @as(@Vector(2, u32), .{ 0, undefined })
723// @as(@Vector(2, u32), .{ undefined, undefined })
724// @as(@Vector(2, u32), .{ undefined, undefined })
725// @as(@Vector(2, u32), .{ undefined, 0 })
726// @as(@Vector(2, u32), .{ undefined, undefined })
727// @as(@Vector(2, u32), .{ undefined, 0 })
728// @as(@Vector(2, u32), .{ undefined, undefined })
729// @as(@Vector(2, u32), .{ undefined, undefined })
730// @as(@Vector(2, u32), .{ undefined, undefined })
731// @as(@Vector(2, u32), .{ undefined, undefined })
732// @as(@Vector(2, u32), .{ undefined, undefined })
733// @as(u32, undefined)
734// @as(u32, undefined)
735// @as(@Vector(2, u32), .{ 0, undefined })
736// @as(@Vector(2, u32), .{ undefined, 0 })
737// @as(@Vector(2, u32), .{ undefined, undefined })
738// @as(@Vector(2, u32), .{ 0, undefined })
739// @as(@Vector(2, u32), .{ 0, undefined })
740// @as(@Vector(2, u32), .{ undefined, undefined })
741// @as(@Vector(2, u32), .{ undefined, undefined })
742// @as(@Vector(2, u32), .{ undefined, 0 })
743// @as(@Vector(2, u32), .{ undefined, undefined })
744// @as(@Vector(2, u32), .{ undefined, 0 })
745// @as(@Vector(2, u32), .{ undefined, undefined })
746// @as(@Vector(2, u32), .{ undefined, undefined })
747// @as(@Vector(2, u32), .{ undefined, undefined })
748// @as(@Vector(2, u32), .{ undefined, undefined })
749// @as(@Vector(2, u32), .{ undefined, undefined })
750// @as(u32, undefined)
751// @as(u32, undefined)
752// @as(@Vector(2, u32), .{ 9, undefined })
753// @as(@Vector(2, u32), .{ undefined, 9 })
754// @as(@Vector(2, u32), .{ undefined, undefined })
755// @as(@Vector(2, u32), .{ 9, undefined })
756// @as(@Vector(2, u32), .{ 9, undefined })
757// @as(@Vector(2, u32), .{ undefined, undefined })
758// @as(@Vector(2, u32), .{ undefined, undefined })
759// @as(@Vector(2, u32), .{ undefined, 9 })
760// @as(@Vector(2, u32), .{ undefined, undefined })
761// @as(@Vector(2, u32), .{ undefined, 9 })
762// @as(@Vector(2, u32), .{ undefined, undefined })
763// @as(@Vector(2, u32), .{ undefined, undefined })
764// @as(@Vector(2, u32), .{ undefined, undefined })
765// @as(@Vector(2, u32), .{ undefined, undefined })
766// @as(@Vector(2, u32), .{ undefined, undefined })
767// @as(u32, undefined)
768// @as(u32, undefined)
769// @as(@Vector(2, u32), .{ 9, undefined })
770// @as(@Vector(2, u32), .{ undefined, 9 })
771// @as(@Vector(2, u32), .{ undefined, undefined })
772// @as(@Vector(2, u32), .{ 9, undefined })
773// @as(@Vector(2, u32), .{ 9, undefined })
774// @as(@Vector(2, u32), .{ undefined, undefined })
775// @as(@Vector(2, u32), .{ undefined, undefined })
776// @as(@Vector(2, u32), .{ undefined, 9 })
777// @as(@Vector(2, u32), .{ undefined, undefined })
778// @as(@Vector(2, u32), .{ undefined, 9 })
779// @as(@Vector(2, u32), .{ undefined, undefined })
780// @as(@Vector(2, u32), .{ undefined, undefined })
781// @as(@Vector(2, u32), .{ undefined, undefined })
782// @as(@Vector(2, u32), .{ undefined, undefined })
783// @as(@Vector(2, u32), .{ undefined, undefined })
784// @as(u32, undefined)
785// @as(u32, undefined)
786// @as(@Vector(2, u32), [runtime value])
787// @as(@Vector(2, u32), [runtime value])
788// @as(@Vector(2, u32), [runtime value])
789// @as(@Vector(2, u32), [runtime value])
790// @as(@Vector(2, u32), [runtime value])
791// @as(@Vector(2, u32), [runtime value])
792// @as(@Vector(2, u32), [runtime value])
793// @as(@Vector(2, u32), [runtime value])
794// @as(@Vector(2, u32), [runtime value])
795// @as(@Vector(2, u32), [runtime value])
796// @as(@Vector(2, u32), [runtime value])
797// @as(@Vector(2, u32), [runtime value])
798// @as(@Vector(2, u32), [runtime value])
799// @as(@Vector(2, u32), [runtime value])
800// @as(@Vector(2, u32), .{ undefined, undefined })
801// @as(u32, undefined)
802// @as(u32, undefined)
803// @as(@Vector(2, u32), [runtime value])
804// @as(@Vector(2, u32), [runtime value])
805// @as(@Vector(2, u32), [runtime value])
806// @as(@Vector(2, u32), [runtime value])
807// @as(@Vector(2, u32), [runtime value])
808// @as(@Vector(2, u32), [runtime value])
809// @as(@Vector(2, u32), [runtime value])
810// @as(@Vector(2, u32), [runtime value])
811// @as(@Vector(2, u32), [runtime value])
812// @as(@Vector(2, u32), [runtime value])
813// @as(@Vector(2, u32), [runtime value])
814// @as(@Vector(2, u32), [runtime value])
815// @as(@Vector(2, u32), [runtime value])
816// @as(@Vector(2, u32), [runtime value])
817// @as(@Vector(2, u32), .{ undefined, undefined })
818// @as(u32, undefined)
819// @as(u32, undefined)
820// @as(@Vector(2, u32), [runtime value])
821// @as(@Vector(2, u32), [runtime value])
822// @as(@Vector(2, u32), [runtime value])
823// @as(@Vector(2, u32), [runtime value])
824// @as(@Vector(2, u32), [runtime value])
825// @as(@Vector(2, u32), [runtime value])
826// @as(@Vector(2, u32), [runtime value])
827// @as(@Vector(2, u32), [runtime value])
828// @as(@Vector(2, u32), [runtime value])
829// @as(@Vector(2, u32), [runtime value])
830// @as(@Vector(2, u32), [runtime value])
831// @as(@Vector(2, u32), [runtime value])
832// @as(@Vector(2, u32), [runtime value])
833// @as(@Vector(2, u32), [runtime value])
834// @as(@Vector(2, u32), .{ undefined, undefined })
835// @as(u32, undefined)
836// @as(u32, undefined)
837// @as(@Vector(2, u32), [runtime value])
838// @as(@Vector(2, u32), [runtime value])
839// @as(@Vector(2, u32), [runtime value])
840// @as(@Vector(2, u32), [runtime value])
841// @as(@Vector(2, u32), [runtime value])
842// @as(@Vector(2, u32), [runtime value])
843// @as(@Vector(2, u32), [runtime value])
844// @as(@Vector(2, u32), [runtime value])
845// @as(@Vector(2, u32), [runtime value])
846// @as(@Vector(2, u32), [runtime value])
847// @as(@Vector(2, u32), [runtime value])
848// @as(@Vector(2, u32), [runtime value])
849// @as(@Vector(2, u32), [runtime value])
850// @as(@Vector(2, u32), [runtime value])
851// @as(@Vector(2, u32), .{ undefined, undefined })
852// @as(u32, undefined)
853// @as(u32, undefined)
854// @as(@Vector(2, u32), [runtime value])
855// @as(@Vector(2, u32), [runtime value])
856// @as(@Vector(2, u32), [runtime value])
857// @as(@Vector(2, u32), [runtime value])
858// @as(@Vector(2, u32), [runtime value])
859// @as(@Vector(2, u32), [runtime value])
860// @as(@Vector(2, u32), [runtime value])
861// @as(@Vector(2, u32), [runtime value])
862// @as(@Vector(2, u32), [runtime value])
863// @as(@Vector(2, u32), [runtime value])
864// @as(@Vector(2, u32), [runtime value])
865// @as(@Vector(2, u32), [runtime value])
866// @as(@Vector(2, u32), [runtime value])
867// @as(@Vector(2, u32), [runtime value])
868// @as(@Vector(2, u32), .{ undefined, undefined })
869// @as(u32, undefined)
870// @as(u32, undefined)
871// @as(@Vector(2, u32), [runtime value])
872// @as(@Vector(2, u32), [runtime value])
873// @as(@Vector(2, u32), [runtime value])
874// @as(@Vector(2, u32), [runtime value])
875// @as(@Vector(2, u32), [runtime value])
876// @as(@Vector(2, u32), [runtime value])
877// @as(@Vector(2, u32), [runtime value])
878// @as(@Vector(2, u32), [runtime value])
879// @as(@Vector(2, u32), [runtime value])
880// @as(@Vector(2, u32), [runtime value])
881// @as(@Vector(2, u32), [runtime value])
882// @as(@Vector(2, u32), [runtime value])
883// @as(@Vector(2, u32), [runtime value])
884// @as(@Vector(2, u32), [runtime value])
885// @as(@Vector(2, u32), .{ undefined, undefined })
886// @as(i32, undefined)
887// @as(i32, undefined)
888// @as(@Vector(2, i32), .{ 6, undefined })
889// @as(@Vector(2, i32), .{ undefined, 6 })
890// @as(@Vector(2, i32), .{ undefined, undefined })
891// @as(@Vector(2, i32), .{ 6, undefined })
892// @as(@Vector(2, i32), .{ 6, undefined })
893// @as(@Vector(2, i32), .{ undefined, undefined })
894// @as(@Vector(2, i32), .{ undefined, undefined })
895// @as(@Vector(2, i32), .{ undefined, 6 })
896// @as(@Vector(2, i32), .{ undefined, undefined })
897// @as(@Vector(2, i32), .{ undefined, 6 })
898// @as(@Vector(2, i32), .{ undefined, undefined })
899// @as(@Vector(2, i32), .{ undefined, undefined })
900// @as(@Vector(2, i32), .{ undefined, undefined })
901// @as(@Vector(2, i32), .{ undefined, undefined })
902// @as(@Vector(2, i32), .{ undefined, undefined })
903// @as(i32, undefined)
904// @as(i32, undefined)
905// @as(@Vector(2, i32), .{ 6, undefined })
906// @as(@Vector(2, i32), .{ undefined, 6 })
907// @as(@Vector(2, i32), .{ undefined, undefined })
908// @as(@Vector(2, i32), .{ 6, undefined })
909// @as(@Vector(2, i32), .{ 6, undefined })
910// @as(@Vector(2, i32), .{ undefined, undefined })
911// @as(@Vector(2, i32), .{ undefined, undefined })
912// @as(@Vector(2, i32), .{ undefined, 6 })
913// @as(@Vector(2, i32), .{ undefined, undefined })
914// @as(@Vector(2, i32), .{ undefined, 6 })
915// @as(@Vector(2, i32), .{ undefined, undefined })
916// @as(@Vector(2, i32), .{ undefined, undefined })
917// @as(@Vector(2, i32), .{ undefined, undefined })
918// @as(@Vector(2, i32), .{ undefined, undefined })
919// @as(@Vector(2, i32), .{ undefined, undefined })
920// @as(i32, undefined)
921// @as(i32, undefined)
922// @as(@Vector(2, i32), .{ 0, undefined })
923// @as(@Vector(2, i32), .{ undefined, 0 })
924// @as(@Vector(2, i32), .{ undefined, undefined })
925// @as(@Vector(2, i32), .{ 0, undefined })
926// @as(@Vector(2, i32), .{ 0, undefined })
927// @as(@Vector(2, i32), .{ undefined, undefined })
928// @as(@Vector(2, i32), .{ undefined, undefined })
929// @as(@Vector(2, i32), .{ undefined, 0 })
930// @as(@Vector(2, i32), .{ undefined, undefined })
931// @as(@Vector(2, i32), .{ undefined, 0 })
932// @as(@Vector(2, i32), .{ undefined, undefined })
933// @as(@Vector(2, i32), .{ undefined, undefined })
934// @as(@Vector(2, i32), .{ undefined, undefined })
935// @as(@Vector(2, i32), .{ undefined, undefined })
936// @as(@Vector(2, i32), .{ undefined, undefined })
937// @as(i32, undefined)
938// @as(i32, undefined)
939// @as(@Vector(2, i32), .{ 0, undefined })
940// @as(@Vector(2, i32), .{ undefined, 0 })
941// @as(@Vector(2, i32), .{ undefined, undefined })
942// @as(@Vector(2, i32), .{ 0, undefined })
943// @as(@Vector(2, i32), .{ 0, undefined })
944// @as(@Vector(2, i32), .{ undefined, undefined })
945// @as(@Vector(2, i32), .{ undefined, undefined })
946// @as(@Vector(2, i32), .{ undefined, 0 })
947// @as(@Vector(2, i32), .{ undefined, undefined })
948// @as(@Vector(2, i32), .{ undefined, 0 })
949// @as(@Vector(2, i32), .{ undefined, undefined })
950// @as(@Vector(2, i32), .{ undefined, undefined })
951// @as(@Vector(2, i32), .{ undefined, undefined })
952// @as(@Vector(2, i32), .{ undefined, undefined })
953// @as(@Vector(2, i32), .{ undefined, undefined })
954// @as(i32, undefined)
955// @as(i32, undefined)
956// @as(@Vector(2, i32), .{ 9, undefined })
957// @as(@Vector(2, i32), .{ undefined, 9 })
958// @as(@Vector(2, i32), .{ undefined, undefined })
959// @as(@Vector(2, i32), .{ 9, undefined })
960// @as(@Vector(2, i32), .{ 9, undefined })
961// @as(@Vector(2, i32), .{ undefined, undefined })
962// @as(@Vector(2, i32), .{ undefined, undefined })
963// @as(@Vector(2, i32), .{ undefined, 9 })
964// @as(@Vector(2, i32), .{ undefined, undefined })
965// @as(@Vector(2, i32), .{ undefined, 9 })
966// @as(@Vector(2, i32), .{ undefined, undefined })
967// @as(@Vector(2, i32), .{ undefined, undefined })
968// @as(@Vector(2, i32), .{ undefined, undefined })
969// @as(@Vector(2, i32), .{ undefined, undefined })
970// @as(@Vector(2, i32), .{ undefined, undefined })
971// @as(i32, undefined)
972// @as(i32, undefined)
973// @as(@Vector(2, i32), .{ 9, undefined })
974// @as(@Vector(2, i32), .{ undefined, 9 })
975// @as(@Vector(2, i32), .{ undefined, undefined })
976// @as(@Vector(2, i32), .{ 9, undefined })
977// @as(@Vector(2, i32), .{ 9, undefined })
978// @as(@Vector(2, i32), .{ undefined, undefined })
979// @as(@Vector(2, i32), .{ undefined, undefined })
980// @as(@Vector(2, i32), .{ undefined, 9 })
981// @as(@Vector(2, i32), .{ undefined, undefined })
982// @as(@Vector(2, i32), .{ undefined, 9 })
983// @as(@Vector(2, i32), .{ undefined, undefined })
984// @as(@Vector(2, i32), .{ undefined, undefined })
985// @as(@Vector(2, i32), .{ undefined, undefined })
986// @as(@Vector(2, i32), .{ undefined, undefined })
987// @as(@Vector(2, i32), .{ undefined, undefined })
988// @as(i32, undefined)
989// @as(i32, undefined)
990// @as(@Vector(2, i32), [runtime value])
991// @as(@Vector(2, i32), [runtime value])
992// @as(@Vector(2, i32), [runtime value])
993// @as(@Vector(2, i32), [runtime value])
994// @as(@Vector(2, i32), [runtime value])
995// @as(@Vector(2, i32), [runtime value])
996// @as(@Vector(2, i32), [runtime value])
997// @as(@Vector(2, i32), [runtime value])
998// @as(@Vector(2, i32), [runtime value])
999// @as(@Vector(2, i32), [runtime value])
1000// @as(@Vector(2, i32), [runtime value])
1001// @as(@Vector(2, i32), [runtime value])
1002// @as(@Vector(2, i32), [runtime value])
1003// @as(@Vector(2, i32), [runtime value])
1004// @as(@Vector(2, i32), .{ undefined, undefined })
1005// @as(i32, undefined)
1006// @as(i32, undefined)
1007// @as(@Vector(2, i32), [runtime value])
1008// @as(@Vector(2, i32), [runtime value])
1009// @as(@Vector(2, i32), [runtime value])
1010// @as(@Vector(2, i32), [runtime value])
1011// @as(@Vector(2, i32), [runtime value])
1012// @as(@Vector(2, i32), [runtime value])
1013// @as(@Vector(2, i32), [runtime value])
1014// @as(@Vector(2, i32), [runtime value])
1015// @as(@Vector(2, i32), [runtime value])
1016// @as(@Vector(2, i32), [runtime value])
1017// @as(@Vector(2, i32), [runtime value])
1018// @as(@Vector(2, i32), [runtime value])
1019// @as(@Vector(2, i32), [runtime value])
1020// @as(@Vector(2, i32), [runtime value])
1021// @as(@Vector(2, i32), .{ undefined, undefined })
1022// @as(i32, undefined)
1023// @as(i32, undefined)
1024// @as(@Vector(2, i32), [runtime value])
1025// @as(@Vector(2, i32), [runtime value])
1026// @as(@Vector(2, i32), [runtime value])
1027// @as(@Vector(2, i32), [runtime value])
1028// @as(@Vector(2, i32), [runtime value])
1029// @as(@Vector(2, i32), [runtime value])
1030// @as(@Vector(2, i32), [runtime value])
1031// @as(@Vector(2, i32), [runtime value])
1032// @as(@Vector(2, i32), [runtime value])
1033// @as(@Vector(2, i32), [runtime value])
1034// @as(@Vector(2, i32), [runtime value])
1035// @as(@Vector(2, i32), [runtime value])
1036// @as(@Vector(2, i32), [runtime value])
1037// @as(@Vector(2, i32), [runtime value])
1038// @as(@Vector(2, i32), .{ undefined, undefined })
1039// @as(i32, undefined)
1040// @as(i32, undefined)
1041// @as(@Vector(2, i32), [runtime value])
1042// @as(@Vector(2, i32), [runtime value])
1043// @as(@Vector(2, i32), [runtime value])
1044// @as(@Vector(2, i32), [runtime value])
1045// @as(@Vector(2, i32), [runtime value])
1046// @as(@Vector(2, i32), [runtime value])
1047// @as(@Vector(2, i32), [runtime value])
1048// @as(@Vector(2, i32), [runtime value])
1049// @as(@Vector(2, i32), [runtime value])
1050// @as(@Vector(2, i32), [runtime value])
1051// @as(@Vector(2, i32), [runtime value])
1052// @as(@Vector(2, i32), [runtime value])
1053// @as(@Vector(2, i32), [runtime value])
1054// @as(@Vector(2, i32), [runtime value])
1055// @as(@Vector(2, i32), .{ undefined, undefined })
1056// @as(i32, undefined)
1057// @as(i32, undefined)
1058// @as(@Vector(2, i32), [runtime value])
1059// @as(@Vector(2, i32), [runtime value])
1060// @as(@Vector(2, i32), [runtime value])
1061// @as(@Vector(2, i32), [runtime value])
1062// @as(@Vector(2, i32), [runtime value])
1063// @as(@Vector(2, i32), [runtime value])
1064// @as(@Vector(2, i32), [runtime value])
1065// @as(@Vector(2, i32), [runtime value])
1066// @as(@Vector(2, i32), [runtime value])
1067// @as(@Vector(2, i32), [runtime value])
1068// @as(@Vector(2, i32), [runtime value])
1069// @as(@Vector(2, i32), [runtime value])
1070// @as(@Vector(2, i32), [runtime value])
1071// @as(@Vector(2, i32), [runtime value])
1072// @as(@Vector(2, i32), .{ undefined, undefined })
1073// @as(i32, undefined)
1074// @as(i32, undefined)
1075// @as(@Vector(2, i32), [runtime value])
1076// @as(@Vector(2, i32), [runtime value])
1077// @as(@Vector(2, i32), [runtime value])
1078// @as(@Vector(2, i32), [runtime value])
1079// @as(@Vector(2, i32), [runtime value])
1080// @as(@Vector(2, i32), [runtime value])
1081// @as(@Vector(2, i32), [runtime value])
1082// @as(@Vector(2, i32), [runtime value])
1083// @as(@Vector(2, i32), [runtime value])
1084// @as(@Vector(2, i32), [runtime value])
1085// @as(@Vector(2, i32), [runtime value])
1086// @as(@Vector(2, i32), [runtime value])
1087// @as(@Vector(2, i32), [runtime value])
1088// @as(@Vector(2, i32), [runtime value])
1089// @as(@Vector(2, i32), .{ undefined, undefined })
1090// @as(u500, undefined)
1091// @as(u500, undefined)
1092// @as(@Vector(2, u500), .{ 6, undefined })
1093// @as(@Vector(2, u500), .{ undefined, 6 })
1094// @as(@Vector(2, u500), .{ undefined, undefined })
1095// @as(@Vector(2, u500), .{ 6, undefined })
1096// @as(@Vector(2, u500), .{ 6, undefined })
1097// @as(@Vector(2, u500), .{ undefined, undefined })
1098// @as(@Vector(2, u500), .{ undefined, undefined })
1099// @as(@Vector(2, u500), .{ undefined, 6 })
1100// @as(@Vector(2, u500), .{ undefined, undefined })
1101// @as(@Vector(2, u500), .{ undefined, 6 })
1102// @as(@Vector(2, u500), .{ undefined, undefined })
1103// @as(@Vector(2, u500), .{ undefined, undefined })
1104// @as(@Vector(2, u500), .{ undefined, undefined })
1105// @as(@Vector(2, u500), .{ undefined, undefined })
1106// @as(@Vector(2, u500), .{ undefined, undefined })
1107// @as(u500, undefined)
1108// @as(u500, undefined)
1109// @as(@Vector(2, u500), .{ 6, undefined })
1110// @as(@Vector(2, u500), .{ undefined, 6 })
1111// @as(@Vector(2, u500), .{ undefined, undefined })
1112// @as(@Vector(2, u500), .{ 6, undefined })
1113// @as(@Vector(2, u500), .{ 6, undefined })
1114// @as(@Vector(2, u500), .{ undefined, undefined })
1115// @as(@Vector(2, u500), .{ undefined, undefined })
1116// @as(@Vector(2, u500), .{ undefined, 6 })
1117// @as(@Vector(2, u500), .{ undefined, undefined })
1118// @as(@Vector(2, u500), .{ undefined, 6 })
1119// @as(@Vector(2, u500), .{ undefined, undefined })
1120// @as(@Vector(2, u500), .{ undefined, undefined })
1121// @as(@Vector(2, u500), .{ undefined, undefined })
1122// @as(@Vector(2, u500), .{ undefined, undefined })
1123// @as(@Vector(2, u500), .{ undefined, undefined })
1124// @as(u500, undefined)
1125// @as(u500, undefined)
1126// @as(@Vector(2, u500), .{ 0, undefined })
1127// @as(@Vector(2, u500), .{ undefined, 0 })
1128// @as(@Vector(2, u500), .{ undefined, undefined })
1129// @as(@Vector(2, u500), .{ 0, undefined })
1130// @as(@Vector(2, u500), .{ 0, undefined })
1131// @as(@Vector(2, u500), .{ undefined, undefined })
1132// @as(@Vector(2, u500), .{ undefined, undefined })
1133// @as(@Vector(2, u500), .{ undefined, 0 })
1134// @as(@Vector(2, u500), .{ undefined, undefined })
1135// @as(@Vector(2, u500), .{ undefined, 0 })
1136// @as(@Vector(2, u500), .{ undefined, undefined })
1137// @as(@Vector(2, u500), .{ undefined, undefined })
1138// @as(@Vector(2, u500), .{ undefined, undefined })
1139// @as(@Vector(2, u500), .{ undefined, undefined })
1140// @as(@Vector(2, u500), .{ undefined, undefined })
1141// @as(u500, undefined)
1142// @as(u500, undefined)
1143// @as(@Vector(2, u500), .{ 0, undefined })
1144// @as(@Vector(2, u500), .{ undefined, 0 })
1145// @as(@Vector(2, u500), .{ undefined, undefined })
1146// @as(@Vector(2, u500), .{ 0, undefined })
1147// @as(@Vector(2, u500), .{ 0, undefined })
1148// @as(@Vector(2, u500), .{ undefined, undefined })
1149// @as(@Vector(2, u500), .{ undefined, undefined })
1150// @as(@Vector(2, u500), .{ undefined, 0 })
1151// @as(@Vector(2, u500), .{ undefined, undefined })
1152// @as(@Vector(2, u500), .{ undefined, 0 })
1153// @as(@Vector(2, u500), .{ undefined, undefined })
1154// @as(@Vector(2, u500), .{ undefined, undefined })
1155// @as(@Vector(2, u500), .{ undefined, undefined })
1156// @as(@Vector(2, u500), .{ undefined, undefined })
1157// @as(@Vector(2, u500), .{ undefined, undefined })
1158// @as(u500, undefined)
1159// @as(u500, undefined)
1160// @as(@Vector(2, u500), .{ 9, undefined })
1161// @as(@Vector(2, u500), .{ undefined, 9 })
1162// @as(@Vector(2, u500), .{ undefined, undefined })
1163// @as(@Vector(2, u500), .{ 9, undefined })
1164// @as(@Vector(2, u500), .{ 9, undefined })
1165// @as(@Vector(2, u500), .{ undefined, undefined })
1166// @as(@Vector(2, u500), .{ undefined, undefined })
1167// @as(@Vector(2, u500), .{ undefined, 9 })
1168// @as(@Vector(2, u500), .{ undefined, undefined })
1169// @as(@Vector(2, u500), .{ undefined, 9 })
1170// @as(@Vector(2, u500), .{ undefined, undefined })
1171// @as(@Vector(2, u500), .{ undefined, undefined })
1172// @as(@Vector(2, u500), .{ undefined, undefined })
1173// @as(@Vector(2, u500), .{ undefined, undefined })
1174// @as(@Vector(2, u500), .{ undefined, undefined })
1175// @as(u500, undefined)
1176// @as(u500, undefined)
1177// @as(@Vector(2, u500), .{ 9, undefined })
1178// @as(@Vector(2, u500), .{ undefined, 9 })
1179// @as(@Vector(2, u500), .{ undefined, undefined })
1180// @as(@Vector(2, u500), .{ 9, undefined })
1181// @as(@Vector(2, u500), .{ 9, undefined })
1182// @as(@Vector(2, u500), .{ undefined, undefined })
1183// @as(@Vector(2, u500), .{ undefined, undefined })
1184// @as(@Vector(2, u500), .{ undefined, 9 })
1185// @as(@Vector(2, u500), .{ undefined, undefined })
1186// @as(@Vector(2, u500), .{ undefined, 9 })
1187// @as(@Vector(2, u500), .{ undefined, undefined })
1188// @as(@Vector(2, u500), .{ undefined, undefined })
1189// @as(@Vector(2, u500), .{ undefined, undefined })
1190// @as(@Vector(2, u500), .{ undefined, undefined })
1191// @as(@Vector(2, u500), .{ undefined, undefined })
1192// @as(u500, undefined)
1193// @as(u500, undefined)
1194// @as(@Vector(2, u500), [runtime value])
1195// @as(@Vector(2, u500), [runtime value])
1196// @as(@Vector(2, u500), [runtime value])
1197// @as(@Vector(2, u500), [runtime value])
1198// @as(@Vector(2, u500), [runtime value])
1199// @as(@Vector(2, u500), [runtime value])
1200// @as(@Vector(2, u500), [runtime value])
1201// @as(@Vector(2, u500), [runtime value])
1202// @as(@Vector(2, u500), [runtime value])
1203// @as(@Vector(2, u500), [runtime value])
1204// @as(@Vector(2, u500), [runtime value])
1205// @as(@Vector(2, u500), [runtime value])
1206// @as(@Vector(2, u500), [runtime value])
1207// @as(@Vector(2, u500), [runtime value])
1208// @as(@Vector(2, u500), .{ undefined, undefined })
1209// @as(u500, undefined)
1210// @as(u500, undefined)
1211// @as(@Vector(2, u500), [runtime value])
1212// @as(@Vector(2, u500), [runtime value])
1213// @as(@Vector(2, u500), [runtime value])
1214// @as(@Vector(2, u500), [runtime value])
1215// @as(@Vector(2, u500), [runtime value])
1216// @as(@Vector(2, u500), [runtime value])
1217// @as(@Vector(2, u500), [runtime value])
1218// @as(@Vector(2, u500), [runtime value])
1219// @as(@Vector(2, u500), [runtime value])
1220// @as(@Vector(2, u500), [runtime value])
1221// @as(@Vector(2, u500), [runtime value])
1222// @as(@Vector(2, u500), [runtime value])
1223// @as(@Vector(2, u500), [runtime value])
1224// @as(@Vector(2, u500), [runtime value])
1225// @as(@Vector(2, u500), .{ undefined, undefined })
1226// @as(u500, undefined)
1227// @as(u500, undefined)
1228// @as(@Vector(2, u500), [runtime value])
1229// @as(@Vector(2, u500), [runtime value])
1230// @as(@Vector(2, u500), [runtime value])
1231// @as(@Vector(2, u500), [runtime value])
1232// @as(@Vector(2, u500), [runtime value])
1233// @as(@Vector(2, u500), [runtime value])
1234// @as(@Vector(2, u500), [runtime value])
1235// @as(@Vector(2, u500), [runtime value])
1236// @as(@Vector(2, u500), [runtime value])
1237// @as(@Vector(2, u500), [runtime value])
1238// @as(@Vector(2, u500), [runtime value])
1239// @as(@Vector(2, u500), [runtime value])
1240// @as(@Vector(2, u500), [runtime value])
1241// @as(@Vector(2, u500), [runtime value])
1242// @as(@Vector(2, u500), .{ undefined, undefined })
1243// @as(u500, undefined)
1244// @as(u500, undefined)
1245// @as(@Vector(2, u500), [runtime value])
1246// @as(@Vector(2, u500), [runtime value])
1247// @as(@Vector(2, u500), [runtime value])
1248// @as(@Vector(2, u500), [runtime value])
1249// @as(@Vector(2, u500), [runtime value])
1250// @as(@Vector(2, u500), [runtime value])
1251// @as(@Vector(2, u500), [runtime value])
1252// @as(@Vector(2, u500), [runtime value])
1253// @as(@Vector(2, u500), [runtime value])
1254// @as(@Vector(2, u500), [runtime value])
1255// @as(@Vector(2, u500), [runtime value])
1256// @as(@Vector(2, u500), [runtime value])
1257// @as(@Vector(2, u500), [runtime value])
1258// @as(@Vector(2, u500), [runtime value])
1259// @as(@Vector(2, u500), .{ undefined, undefined })
1260// @as(u500, undefined)
1261// @as(u500, undefined)
1262// @as(@Vector(2, u500), [runtime value])
1263// @as(@Vector(2, u500), [runtime value])
1264// @as(@Vector(2, u500), [runtime value])
1265// @as(@Vector(2, u500), [runtime value])
1266// @as(@Vector(2, u500), [runtime value])
1267// @as(@Vector(2, u500), [runtime value])
1268// @as(@Vector(2, u500), [runtime value])
1269// @as(@Vector(2, u500), [runtime value])
1270// @as(@Vector(2, u500), [runtime value])
1271// @as(@Vector(2, u500), [runtime value])
1272// @as(@Vector(2, u500), [runtime value])
1273// @as(@Vector(2, u500), [runtime value])
1274// @as(@Vector(2, u500), [runtime value])
1275// @as(@Vector(2, u500), [runtime value])
1276// @as(@Vector(2, u500), .{ undefined, undefined })
1277// @as(u500, undefined)
1278// @as(u500, undefined)
1279// @as(@Vector(2, u500), [runtime value])
1280// @as(@Vector(2, u500), [runtime value])
1281// @as(@Vector(2, u500), [runtime value])
1282// @as(@Vector(2, u500), [runtime value])
1283// @as(@Vector(2, u500), [runtime value])
1284// @as(@Vector(2, u500), [runtime value])
1285// @as(@Vector(2, u500), [runtime value])
1286// @as(@Vector(2, u500), [runtime value])
1287// @as(@Vector(2, u500), [runtime value])
1288// @as(@Vector(2, u500), [runtime value])
1289// @as(@Vector(2, u500), [runtime value])
1290// @as(@Vector(2, u500), [runtime value])
1291// @as(@Vector(2, u500), [runtime value])
1292// @as(@Vector(2, u500), [runtime value])
1293// @as(@Vector(2, u500), .{ undefined, undefined })
1294// @as(i500, undefined)
1295// @as(i500, undefined)
1296// @as(@Vector(2, i500), .{ 6, undefined })
1297// @as(@Vector(2, i500), .{ undefined, 6 })
1298// @as(@Vector(2, i500), .{ undefined, undefined })
1299// @as(@Vector(2, i500), .{ 6, undefined })
1300// @as(@Vector(2, i500), .{ 6, undefined })
1301// @as(@Vector(2, i500), .{ undefined, undefined })
1302// @as(@Vector(2, i500), .{ undefined, undefined })
1303// @as(@Vector(2, i500), .{ undefined, 6 })
1304// @as(@Vector(2, i500), .{ undefined, undefined })
1305// @as(@Vector(2, i500), .{ undefined, 6 })
1306// @as(@Vector(2, i500), .{ undefined, undefined })
1307// @as(@Vector(2, i500), .{ undefined, undefined })
1308// @as(@Vector(2, i500), .{ undefined, undefined })
1309// @as(@Vector(2, i500), .{ undefined, undefined })
1310// @as(@Vector(2, i500), .{ undefined, undefined })
1311// @as(i500, undefined)
1312// @as(i500, undefined)
1313// @as(@Vector(2, i500), .{ 6, undefined })
1314// @as(@Vector(2, i500), .{ undefined, 6 })
1315// @as(@Vector(2, i500), .{ undefined, undefined })
1316// @as(@Vector(2, i500), .{ 6, undefined })
1317// @as(@Vector(2, i500), .{ 6, undefined })
1318// @as(@Vector(2, i500), .{ undefined, undefined })
1319// @as(@Vector(2, i500), .{ undefined, undefined })
1320// @as(@Vector(2, i500), .{ undefined, 6 })
1321// @as(@Vector(2, i500), .{ undefined, undefined })
1322// @as(@Vector(2, i500), .{ undefined, 6 })
1323// @as(@Vector(2, i500), .{ undefined, undefined })
1324// @as(@Vector(2, i500), .{ undefined, undefined })
1325// @as(@Vector(2, i500), .{ undefined, undefined })
1326// @as(@Vector(2, i500), .{ undefined, undefined })
1327// @as(@Vector(2, i500), .{ undefined, undefined })
1328// @as(i500, undefined)
1329// @as(i500, undefined)
1330// @as(@Vector(2, i500), .{ 0, undefined })
1331// @as(@Vector(2, i500), .{ undefined, 0 })
1332// @as(@Vector(2, i500), .{ undefined, undefined })
1333// @as(@Vector(2, i500), .{ 0, undefined })
1334// @as(@Vector(2, i500), .{ 0, undefined })
1335// @as(@Vector(2, i500), .{ undefined, undefined })
1336// @as(@Vector(2, i500), .{ undefined, undefined })
1337// @as(@Vector(2, i500), .{ undefined, 0 })
1338// @as(@Vector(2, i500), .{ undefined, undefined })
1339// @as(@Vector(2, i500), .{ undefined, 0 })
1340// @as(@Vector(2, i500), .{ undefined, undefined })
1341// @as(@Vector(2, i500), .{ undefined, undefined })
1342// @as(@Vector(2, i500), .{ undefined, undefined })
1343// @as(@Vector(2, i500), .{ undefined, undefined })
1344// @as(@Vector(2, i500), .{ undefined, undefined })
1345// @as(i500, undefined)
1346// @as(i500, undefined)
1347// @as(@Vector(2, i500), .{ 0, undefined })
1348// @as(@Vector(2, i500), .{ undefined, 0 })
1349// @as(@Vector(2, i500), .{ undefined, undefined })
1350// @as(@Vector(2, i500), .{ 0, undefined })
1351// @as(@Vector(2, i500), .{ 0, undefined })
1352// @as(@Vector(2, i500), .{ undefined, undefined })
1353// @as(@Vector(2, i500), .{ undefined, undefined })
1354// @as(@Vector(2, i500), .{ undefined, 0 })
1355// @as(@Vector(2, i500), .{ undefined, undefined })
1356// @as(@Vector(2, i500), .{ undefined, 0 })
1357// @as(@Vector(2, i500), .{ undefined, undefined })
1358// @as(@Vector(2, i500), .{ undefined, undefined })
1359// @as(@Vector(2, i500), .{ undefined, undefined })
1360// @as(@Vector(2, i500), .{ undefined, undefined })
1361// @as(@Vector(2, i500), .{ undefined, undefined })
1362// @as(i500, undefined)
1363// @as(i500, undefined)
1364// @as(@Vector(2, i500), .{ 9, undefined })
1365// @as(@Vector(2, i500), .{ undefined, 9 })
1366// @as(@Vector(2, i500), .{ undefined, undefined })
1367// @as(@Vector(2, i500), .{ 9, undefined })
1368// @as(@Vector(2, i500), .{ 9, undefined })
1369// @as(@Vector(2, i500), .{ undefined, undefined })
1370// @as(@Vector(2, i500), .{ undefined, undefined })
1371// @as(@Vector(2, i500), .{ undefined, 9 })
1372// @as(@Vector(2, i500), .{ undefined, undefined })
1373// @as(@Vector(2, i500), .{ undefined, 9 })
1374// @as(@Vector(2, i500), .{ undefined, undefined })
1375// @as(@Vector(2, i500), .{ undefined, undefined })
1376// @as(@Vector(2, i500), .{ undefined, undefined })
1377// @as(@Vector(2, i500), .{ undefined, undefined })
1378// @as(@Vector(2, i500), .{ undefined, undefined })
1379// @as(i500, undefined)
1380// @as(i500, undefined)
1381// @as(@Vector(2, i500), .{ 9, undefined })
1382// @as(@Vector(2, i500), .{ undefined, 9 })
1383// @as(@Vector(2, i500), .{ undefined, undefined })
1384// @as(@Vector(2, i500), .{ 9, undefined })
1385// @as(@Vector(2, i500), .{ 9, undefined })
1386// @as(@Vector(2, i500), .{ undefined, undefined })
1387// @as(@Vector(2, i500), .{ undefined, undefined })
1388// @as(@Vector(2, i500), .{ undefined, 9 })
1389// @as(@Vector(2, i500), .{ undefined, undefined })
1390// @as(@Vector(2, i500), .{ undefined, 9 })
1391// @as(@Vector(2, i500), .{ undefined, undefined })
1392// @as(@Vector(2, i500), .{ undefined, undefined })
1393// @as(@Vector(2, i500), .{ undefined, undefined })
1394// @as(@Vector(2, i500), .{ undefined, undefined })
1395// @as(@Vector(2, i500), .{ undefined, undefined })
1396// @as(i500, undefined)
1397// @as(i500, undefined)
1398// @as(@Vector(2, i500), [runtime value])
1399// @as(@Vector(2, i500), [runtime value])
1400// @as(@Vector(2, i500), [runtime value])
1401// @as(@Vector(2, i500), [runtime value])
1402// @as(@Vector(2, i500), [runtime value])
1403// @as(@Vector(2, i500), [runtime value])
1404// @as(@Vector(2, i500), [runtime value])
1405// @as(@Vector(2, i500), [runtime value])
1406// @as(@Vector(2, i500), [runtime value])
1407// @as(@Vector(2, i500), [runtime value])
1408// @as(@Vector(2, i500), [runtime value])
1409// @as(@Vector(2, i500), [runtime value])
1410// @as(@Vector(2, i500), [runtime value])
1411// @as(@Vector(2, i500), [runtime value])
1412// @as(@Vector(2, i500), .{ undefined, undefined })
1413// @as(i500, undefined)
1414// @as(i500, undefined)
1415// @as(@Vector(2, i500), [runtime value])
1416// @as(@Vector(2, i500), [runtime value])
1417// @as(@Vector(2, i500), [runtime value])
1418// @as(@Vector(2, i500), [runtime value])
1419// @as(@Vector(2, i500), [runtime value])
1420// @as(@Vector(2, i500), [runtime value])
1421// @as(@Vector(2, i500), [runtime value])
1422// @as(@Vector(2, i500), [runtime value])
1423// @as(@Vector(2, i500), [runtime value])
1424// @as(@Vector(2, i500), [runtime value])
1425// @as(@Vector(2, i500), [runtime value])
1426// @as(@Vector(2, i500), [runtime value])
1427// @as(@Vector(2, i500), [runtime value])
1428// @as(@Vector(2, i500), [runtime value])
1429// @as(@Vector(2, i500), .{ undefined, undefined })
1430// @as(i500, undefined)
1431// @as(i500, undefined)
1432// @as(@Vector(2, i500), [runtime value])
1433// @as(@Vector(2, i500), [runtime value])
1434// @as(@Vector(2, i500), [runtime value])
1435// @as(@Vector(2, i500), [runtime value])
1436// @as(@Vector(2, i500), [runtime value])
1437// @as(@Vector(2, i500), [runtime value])
1438// @as(@Vector(2, i500), [runtime value])
1439// @as(@Vector(2, i500), [runtime value])
1440// @as(@Vector(2, i500), [runtime value])
1441// @as(@Vector(2, i500), [runtime value])
1442// @as(@Vector(2, i500), [runtime value])
1443// @as(@Vector(2, i500), [runtime value])
1444// @as(@Vector(2, i500), [runtime value])
1445// @as(@Vector(2, i500), [runtime value])
1446// @as(@Vector(2, i500), .{ undefined, undefined })
1447// @as(i500, undefined)
1448// @as(i500, undefined)
1449// @as(@Vector(2, i500), [runtime value])
1450// @as(@Vector(2, i500), [runtime value])
1451// @as(@Vector(2, i500), [runtime value])
1452// @as(@Vector(2, i500), [runtime value])
1453// @as(@Vector(2, i500), [runtime value])
1454// @as(@Vector(2, i500), [runtime value])
1455// @as(@Vector(2, i500), [runtime value])
1456// @as(@Vector(2, i500), [runtime value])
1457// @as(@Vector(2, i500), [runtime value])
1458// @as(@Vector(2, i500), [runtime value])
1459// @as(@Vector(2, i500), [runtime value])
1460// @as(@Vector(2, i500), [runtime value])
1461// @as(@Vector(2, i500), [runtime value])
1462// @as(@Vector(2, i500), [runtime value])
1463// @as(@Vector(2, i500), .{ undefined, undefined })
1464// @as(i500, undefined)
1465// @as(i500, undefined)
1466// @as(@Vector(2, i500), [runtime value])
1467// @as(@Vector(2, i500), [runtime value])
1468// @as(@Vector(2, i500), [runtime value])
1469// @as(@Vector(2, i500), [runtime value])
1470// @as(@Vector(2, i500), [runtime value])
1471// @as(@Vector(2, i500), [runtime value])
1472// @as(@Vector(2, i500), [runtime value])
1473// @as(@Vector(2, i500), [runtime value])
1474// @as(@Vector(2, i500), [runtime value])
1475// @as(@Vector(2, i500), [runtime value])
1476// @as(@Vector(2, i500), [runtime value])
1477// @as(@Vector(2, i500), [runtime value])
1478// @as(@Vector(2, i500), [runtime value])
1479// @as(@Vector(2, i500), [runtime value])
1480// @as(@Vector(2, i500), .{ undefined, undefined })
1481// @as(i500, undefined)
1482// @as(i500, undefined)
1483// @as(@Vector(2, i500), [runtime value])
1484// @as(@Vector(2, i500), [runtime value])
1485// @as(@Vector(2, i500), [runtime value])
1486// @as(@Vector(2, i500), [runtime value])
1487// @as(@Vector(2, i500), [runtime value])
1488// @as(@Vector(2, i500), [runtime value])
1489// @as(@Vector(2, i500), [runtime value])
1490// @as(@Vector(2, i500), [runtime value])
1491// @as(@Vector(2, i500), [runtime value])
1492// @as(@Vector(2, i500), [runtime value])
1493// @as(@Vector(2, i500), [runtime value])
1494// @as(@Vector(2, i500), [runtime value])
1495// @as(@Vector(2, i500), [runtime value])
1496// @as(@Vector(2, i500), [runtime value])
1497// @as(@Vector(2, i500), .{ undefined, undefined })
1498// @as(f16, undefined)
1499// @as(f16, undefined)
1500// @as(@Vector(2, f16), .{ 6, undefined })
1501// @as(@Vector(2, f16), .{ undefined, 6 })
1502// @as(@Vector(2, f16), .{ undefined, undefined })
1503// @as(@Vector(2, f16), .{ 6, undefined })
1504// @as(@Vector(2, f16), .{ 6, undefined })
1505// @as(@Vector(2, f16), .{ undefined, undefined })
1506// @as(@Vector(2, f16), .{ undefined, undefined })
1507// @as(@Vector(2, f16), .{ undefined, 6 })
1508// @as(@Vector(2, f16), .{ undefined, undefined })
1509// @as(@Vector(2, f16), .{ undefined, 6 })
1510// @as(@Vector(2, f16), .{ undefined, undefined })
1511// @as(@Vector(2, f16), .{ undefined, undefined })
1512// @as(@Vector(2, f16), .{ undefined, undefined })
1513// @as(@Vector(2, f16), .{ undefined, undefined })
1514// @as(@Vector(2, f16), .{ undefined, undefined })
1515// @as(f16, undefined)
1516// @as(f16, undefined)
1517// @as(@Vector(2, f16), .{ 0, undefined })
1518// @as(@Vector(2, f16), .{ undefined, 0 })
1519// @as(@Vector(2, f16), .{ undefined, undefined })
1520// @as(@Vector(2, f16), .{ 0, undefined })
1521// @as(@Vector(2, f16), .{ 0, undefined })
1522// @as(@Vector(2, f16), .{ undefined, undefined })
1523// @as(@Vector(2, f16), .{ undefined, undefined })
1524// @as(@Vector(2, f16), .{ undefined, 0 })
1525// @as(@Vector(2, f16), .{ undefined, undefined })
1526// @as(@Vector(2, f16), .{ undefined, 0 })
1527// @as(@Vector(2, f16), .{ undefined, undefined })
1528// @as(@Vector(2, f16), .{ undefined, undefined })
1529// @as(@Vector(2, f16), .{ undefined, undefined })
1530// @as(@Vector(2, f16), .{ undefined, undefined })
1531// @as(@Vector(2, f16), .{ undefined, undefined })
1532// @as(f16, undefined)
1533// @as(f16, undefined)
1534// @as(@Vector(2, f16), .{ 9, undefined })
1535// @as(@Vector(2, f16), .{ undefined, 9 })
1536// @as(@Vector(2, f16), .{ undefined, undefined })
1537// @as(@Vector(2, f16), .{ 9, undefined })
1538// @as(@Vector(2, f16), .{ 9, undefined })
1539// @as(@Vector(2, f16), .{ undefined, undefined })
1540// @as(@Vector(2, f16), .{ undefined, undefined })
1541// @as(@Vector(2, f16), .{ undefined, 9 })
1542// @as(@Vector(2, f16), .{ undefined, undefined })
1543// @as(@Vector(2, f16), .{ undefined, 9 })
1544// @as(@Vector(2, f16), .{ undefined, undefined })
1545// @as(@Vector(2, f16), .{ undefined, undefined })
1546// @as(@Vector(2, f16), .{ undefined, undefined })
1547// @as(@Vector(2, f16), .{ undefined, undefined })
1548// @as(@Vector(2, f16), .{ undefined, undefined })
1549// @as(f16, undefined)
1550// @as(@Vector(2, f16), .{ -3, undefined })
1551// @as(@Vector(2, f16), .{ undefined, -3 })
1552// @as(@Vector(2, f16), .{ undefined, undefined })
1553// @as(f16, undefined)
1554// @as(f16, undefined)
1555// @as(@Vector(2, f16), [runtime value])
1556// @as(@Vector(2, f16), [runtime value])
1557// @as(@Vector(2, f16), [runtime value])
1558// @as(@Vector(2, f16), [runtime value])
1559// @as(@Vector(2, f16), [runtime value])
1560// @as(@Vector(2, f16), [runtime value])
1561// @as(@Vector(2, f16), [runtime value])
1562// @as(@Vector(2, f16), [runtime value])
1563// @as(@Vector(2, f16), [runtime value])
1564// @as(@Vector(2, f16), [runtime value])
1565// @as(@Vector(2, f16), [runtime value])
1566// @as(@Vector(2, f16), [runtime value])
1567// @as(@Vector(2, f16), [runtime value])
1568// @as(@Vector(2, f16), [runtime value])
1569// @as(@Vector(2, f16), .{ undefined, undefined })
1570// @as(f16, undefined)
1571// @as(f16, undefined)
1572// @as(@Vector(2, f16), [runtime value])
1573// @as(@Vector(2, f16), [runtime value])
1574// @as(@Vector(2, f16), [runtime value])
1575// @as(@Vector(2, f16), [runtime value])
1576// @as(@Vector(2, f16), [runtime value])
1577// @as(@Vector(2, f16), [runtime value])
1578// @as(@Vector(2, f16), [runtime value])
1579// @as(@Vector(2, f16), [runtime value])
1580// @as(@Vector(2, f16), [runtime value])
1581// @as(@Vector(2, f16), [runtime value])
1582// @as(@Vector(2, f16), [runtime value])
1583// @as(@Vector(2, f16), [runtime value])
1584// @as(@Vector(2, f16), [runtime value])
1585// @as(@Vector(2, f16), [runtime value])
1586// @as(@Vector(2, f16), .{ undefined, undefined })
1587// @as(f16, undefined)
1588// @as(f16, undefined)
1589// @as(@Vector(2, f16), [runtime value])
1590// @as(@Vector(2, f16), [runtime value])
1591// @as(@Vector(2, f16), [runtime value])
1592// @as(@Vector(2, f16), [runtime value])
1593// @as(@Vector(2, f16), [runtime value])
1594// @as(@Vector(2, f16), [runtime value])
1595// @as(@Vector(2, f16), [runtime value])
1596// @as(@Vector(2, f16), [runtime value])
1597// @as(@Vector(2, f16), [runtime value])
1598// @as(@Vector(2, f16), [runtime value])
1599// @as(@Vector(2, f16), [runtime value])
1600// @as(@Vector(2, f16), [runtime value])
1601// @as(@Vector(2, f16), [runtime value])
1602// @as(@Vector(2, f16), [runtime value])
1603// @as(@Vector(2, f16), .{ undefined, undefined })
1604// @as(f16, undefined)
1605// @as(@Vector(2, f16), [runtime value])
1606// @as(@Vector(2, f16), [runtime value])
1607// @as(@Vector(2, f16), .{ undefined, undefined })
1608// @as(f32, undefined)
1609// @as(f32, undefined)
1610// @as(@Vector(2, f32), .{ 6, undefined })
1611// @as(@Vector(2, f32), .{ undefined, 6 })
1612// @as(@Vector(2, f32), .{ undefined, undefined })
1613// @as(@Vector(2, f32), .{ 6, undefined })
1614// @as(@Vector(2, f32), .{ 6, undefined })
1615// @as(@Vector(2, f32), .{ undefined, undefined })
1616// @as(@Vector(2, f32), .{ undefined, undefined })
1617// @as(@Vector(2, f32), .{ undefined, 6 })
1618// @as(@Vector(2, f32), .{ undefined, undefined })
1619// @as(@Vector(2, f32), .{ undefined, 6 })
1620// @as(@Vector(2, f32), .{ undefined, undefined })
1621// @as(@Vector(2, f32), .{ undefined, undefined })
1622// @as(@Vector(2, f32), .{ undefined, undefined })
1623// @as(@Vector(2, f32), .{ undefined, undefined })
1624// @as(@Vector(2, f32), .{ undefined, undefined })
1625// @as(f32, undefined)
1626// @as(f32, undefined)
1627// @as(@Vector(2, f32), .{ 0, undefined })
1628// @as(@Vector(2, f32), .{ undefined, 0 })
1629// @as(@Vector(2, f32), .{ undefined, undefined })
1630// @as(@Vector(2, f32), .{ 0, undefined })
1631// @as(@Vector(2, f32), .{ 0, undefined })
1632// @as(@Vector(2, f32), .{ undefined, undefined })
1633// @as(@Vector(2, f32), .{ undefined, undefined })
1634// @as(@Vector(2, f32), .{ undefined, 0 })
1635// @as(@Vector(2, f32), .{ undefined, undefined })
1636// @as(@Vector(2, f32), .{ undefined, 0 })
1637// @as(@Vector(2, f32), .{ undefined, undefined })
1638// @as(@Vector(2, f32), .{ undefined, undefined })
1639// @as(@Vector(2, f32), .{ undefined, undefined })
1640// @as(@Vector(2, f32), .{ undefined, undefined })
1641// @as(@Vector(2, f32), .{ undefined, undefined })
1642// @as(f32, undefined)
1643// @as(f32, undefined)
1644// @as(@Vector(2, f32), .{ 9, undefined })
1645// @as(@Vector(2, f32), .{ undefined, 9 })
1646// @as(@Vector(2, f32), .{ undefined, undefined })
1647// @as(@Vector(2, f32), .{ 9, undefined })
1648// @as(@Vector(2, f32), .{ 9, undefined })
1649// @as(@Vector(2, f32), .{ undefined, undefined })
1650// @as(@Vector(2, f32), .{ undefined, undefined })
1651// @as(@Vector(2, f32), .{ undefined, 9 })
1652// @as(@Vector(2, f32), .{ undefined, undefined })
1653// @as(@Vector(2, f32), .{ undefined, 9 })
1654// @as(@Vector(2, f32), .{ undefined, undefined })
1655// @as(@Vector(2, f32), .{ undefined, undefined })
1656// @as(@Vector(2, f32), .{ undefined, undefined })
1657// @as(@Vector(2, f32), .{ undefined, undefined })
1658// @as(@Vector(2, f32), .{ undefined, undefined })
1659// @as(f32, undefined)
1660// @as(@Vector(2, f32), .{ -3, undefined })
1661// @as(@Vector(2, f32), .{ undefined, -3 })
1662// @as(@Vector(2, f32), .{ undefined, undefined })
1663// @as(f32, undefined)
1664// @as(f32, undefined)
1665// @as(@Vector(2, f32), [runtime value])
1666// @as(@Vector(2, f32), [runtime value])
1667// @as(@Vector(2, f32), [runtime value])
1668// @as(@Vector(2, f32), [runtime value])
1669// @as(@Vector(2, f32), [runtime value])
1670// @as(@Vector(2, f32), [runtime value])
1671// @as(@Vector(2, f32), [runtime value])
1672// @as(@Vector(2, f32), [runtime value])
1673// @as(@Vector(2, f32), [runtime value])
1674// @as(@Vector(2, f32), [runtime value])
1675// @as(@Vector(2, f32), [runtime value])
1676// @as(@Vector(2, f32), [runtime value])
1677// @as(@Vector(2, f32), [runtime value])
1678// @as(@Vector(2, f32), [runtime value])
1679// @as(@Vector(2, f32), .{ undefined, undefined })
1680// @as(f32, undefined)
1681// @as(f32, undefined)
1682// @as(@Vector(2, f32), [runtime value])
1683// @as(@Vector(2, f32), [runtime value])
1684// @as(@Vector(2, f32), [runtime value])
1685// @as(@Vector(2, f32), [runtime value])
1686// @as(@Vector(2, f32), [runtime value])
1687// @as(@Vector(2, f32), [runtime value])
1688// @as(@Vector(2, f32), [runtime value])
1689// @as(@Vector(2, f32), [runtime value])
1690// @as(@Vector(2, f32), [runtime value])
1691// @as(@Vector(2, f32), [runtime value])
1692// @as(@Vector(2, f32), [runtime value])
1693// @as(@Vector(2, f32), [runtime value])
1694// @as(@Vector(2, f32), [runtime value])
1695// @as(@Vector(2, f32), [runtime value])
1696// @as(@Vector(2, f32), .{ undefined, undefined })
1697// @as(f32, undefined)
1698// @as(f32, undefined)
1699// @as(@Vector(2, f32), [runtime value])
1700// @as(@Vector(2, f32), [runtime value])
1701// @as(@Vector(2, f32), [runtime value])
1702// @as(@Vector(2, f32), [runtime value])
1703// @as(@Vector(2, f32), [runtime value])
1704// @as(@Vector(2, f32), [runtime value])
1705// @as(@Vector(2, f32), [runtime value])
1706// @as(@Vector(2, f32), [runtime value])
1707// @as(@Vector(2, f32), [runtime value])
1708// @as(@Vector(2, f32), [runtime value])
1709// @as(@Vector(2, f32), [runtime value])
1710// @as(@Vector(2, f32), [runtime value])
1711// @as(@Vector(2, f32), [runtime value])
1712// @as(@Vector(2, f32), [runtime value])
1713// @as(@Vector(2, f32), .{ undefined, undefined })
1714// @as(f32, undefined)
1715// @as(@Vector(2, f32), [runtime value])
1716// @as(@Vector(2, f32), [runtime value])
1717// @as(@Vector(2, f32), .{ undefined, undefined })
1718// @as(f64, undefined)
1719// @as(f64, undefined)
1720// @as(@Vector(2, f64), .{ 6, undefined })
1721// @as(@Vector(2, f64), .{ undefined, 6 })
1722// @as(@Vector(2, f64), .{ undefined, undefined })
1723// @as(@Vector(2, f64), .{ 6, undefined })
1724// @as(@Vector(2, f64), .{ 6, undefined })
1725// @as(@Vector(2, f64), .{ undefined, undefined })
1726// @as(@Vector(2, f64), .{ undefined, undefined })
1727// @as(@Vector(2, f64), .{ undefined, 6 })
1728// @as(@Vector(2, f64), .{ undefined, undefined })
1729// @as(@Vector(2, f64), .{ undefined, 6 })
1730// @as(@Vector(2, f64), .{ undefined, undefined })
1731// @as(@Vector(2, f64), .{ undefined, undefined })
1732// @as(@Vector(2, f64), .{ undefined, undefined })
1733// @as(@Vector(2, f64), .{ undefined, undefined })
1734// @as(@Vector(2, f64), .{ undefined, undefined })
1735// @as(f64, undefined)
1736// @as(f64, undefined)
1737// @as(@Vector(2, f64), .{ 0, undefined })
1738// @as(@Vector(2, f64), .{ undefined, 0 })
1739// @as(@Vector(2, f64), .{ undefined, undefined })
1740// @as(@Vector(2, f64), .{ 0, undefined })
1741// @as(@Vector(2, f64), .{ 0, undefined })
1742// @as(@Vector(2, f64), .{ undefined, undefined })
1743// @as(@Vector(2, f64), .{ undefined, undefined })
1744// @as(@Vector(2, f64), .{ undefined, 0 })
1745// @as(@Vector(2, f64), .{ undefined, undefined })
1746// @as(@Vector(2, f64), .{ undefined, 0 })
1747// @as(@Vector(2, f64), .{ undefined, undefined })
1748// @as(@Vector(2, f64), .{ undefined, undefined })
1749// @as(@Vector(2, f64), .{ undefined, undefined })
1750// @as(@Vector(2, f64), .{ undefined, undefined })
1751// @as(@Vector(2, f64), .{ undefined, undefined })
1752// @as(f64, undefined)
1753// @as(f64, undefined)
1754// @as(@Vector(2, f64), .{ 9, undefined })
1755// @as(@Vector(2, f64), .{ undefined, 9 })
1756// @as(@Vector(2, f64), .{ undefined, undefined })
1757// @as(@Vector(2, f64), .{ 9, undefined })
1758// @as(@Vector(2, f64), .{ 9, undefined })
1759// @as(@Vector(2, f64), .{ undefined, undefined })
1760// @as(@Vector(2, f64), .{ undefined, undefined })
1761// @as(@Vector(2, f64), .{ undefined, 9 })
1762// @as(@Vector(2, f64), .{ undefined, undefined })
1763// @as(@Vector(2, f64), .{ undefined, 9 })
1764// @as(@Vector(2, f64), .{ undefined, undefined })
1765// @as(@Vector(2, f64), .{ undefined, undefined })
1766// @as(@Vector(2, f64), .{ undefined, undefined })
1767// @as(@Vector(2, f64), .{ undefined, undefined })
1768// @as(@Vector(2, f64), .{ undefined, undefined })
1769// @as(f64, undefined)
1770// @as(@Vector(2, f64), .{ -3, undefined })
1771// @as(@Vector(2, f64), .{ undefined, -3 })
1772// @as(@Vector(2, f64), .{ undefined, undefined })
1773// @as(f64, undefined)
1774// @as(f64, undefined)
1775// @as(@Vector(2, f64), [runtime value])
1776// @as(@Vector(2, f64), [runtime value])
1777// @as(@Vector(2, f64), [runtime value])
1778// @as(@Vector(2, f64), [runtime value])
1779// @as(@Vector(2, f64), [runtime value])
1780// @as(@Vector(2, f64), [runtime value])
1781// @as(@Vector(2, f64), [runtime value])
1782// @as(@Vector(2, f64), [runtime value])
1783// @as(@Vector(2, f64), [runtime value])
1784// @as(@Vector(2, f64), [runtime value])
1785// @as(@Vector(2, f64), [runtime value])
1786// @as(@Vector(2, f64), [runtime value])
1787// @as(@Vector(2, f64), [runtime value])
1788// @as(@Vector(2, f64), [runtime value])
1789// @as(@Vector(2, f64), .{ undefined, undefined })
1790// @as(f64, undefined)
1791// @as(f64, undefined)
1792// @as(@Vector(2, f64), [runtime value])
1793// @as(@Vector(2, f64), [runtime value])
1794// @as(@Vector(2, f64), [runtime value])
1795// @as(@Vector(2, f64), [runtime value])
1796// @as(@Vector(2, f64), [runtime value])
1797// @as(@Vector(2, f64), [runtime value])
1798// @as(@Vector(2, f64), [runtime value])
1799// @as(@Vector(2, f64), [runtime value])
1800// @as(@Vector(2, f64), [runtime value])
1801// @as(@Vector(2, f64), [runtime value])
1802// @as(@Vector(2, f64), [runtime value])
1803// @as(@Vector(2, f64), [runtime value])
1804// @as(@Vector(2, f64), [runtime value])
1805// @as(@Vector(2, f64), [runtime value])
1806// @as(@Vector(2, f64), .{ undefined, undefined })
1807// @as(f64, undefined)
1808// @as(f64, undefined)
1809// @as(@Vector(2, f64), [runtime value])
1810// @as(@Vector(2, f64), [runtime value])
1811// @as(@Vector(2, f64), [runtime value])
1812// @as(@Vector(2, f64), [runtime value])
1813// @as(@Vector(2, f64), [runtime value])
1814// @as(@Vector(2, f64), [runtime value])
1815// @as(@Vector(2, f64), [runtime value])
1816// @as(@Vector(2, f64), [runtime value])
1817// @as(@Vector(2, f64), [runtime value])
1818// @as(@Vector(2, f64), [runtime value])
1819// @as(@Vector(2, f64), [runtime value])
1820// @as(@Vector(2, f64), [runtime value])
1821// @as(@Vector(2, f64), [runtime value])
1822// @as(@Vector(2, f64), [runtime value])
1823// @as(@Vector(2, f64), .{ undefined, undefined })
1824// @as(f64, undefined)
1825// @as(@Vector(2, f64), [runtime value])
1826// @as(@Vector(2, f64), [runtime value])
1827// @as(@Vector(2, f64), .{ undefined, undefined })
1828// @as(f80, undefined)
1829// @as(f80, undefined)
1830// @as(@Vector(2, f80), .{ 6, undefined })
1831// @as(@Vector(2, f80), .{ undefined, 6 })
1832// @as(@Vector(2, f80), .{ undefined, undefined })
1833// @as(@Vector(2, f80), .{ 6, undefined })
1834// @as(@Vector(2, f80), .{ 6, undefined })
1835// @as(@Vector(2, f80), .{ undefined, undefined })
1836// @as(@Vector(2, f80), .{ undefined, undefined })
1837// @as(@Vector(2, f80), .{ undefined, 6 })
1838// @as(@Vector(2, f80), .{ undefined, undefined })
1839// @as(@Vector(2, f80), .{ undefined, 6 })
1840// @as(@Vector(2, f80), .{ undefined, undefined })
1841// @as(@Vector(2, f80), .{ undefined, undefined })
1842// @as(@Vector(2, f80), .{ undefined, undefined })
1843// @as(@Vector(2, f80), .{ undefined, undefined })
1844// @as(@Vector(2, f80), .{ undefined, undefined })
1845// @as(f80, undefined)
1846// @as(f80, undefined)
1847// @as(@Vector(2, f80), .{ 0, undefined })
1848// @as(@Vector(2, f80), .{ undefined, 0 })
1849// @as(@Vector(2, f80), .{ undefined, undefined })
1850// @as(@Vector(2, f80), .{ 0, undefined })
1851// @as(@Vector(2, f80), .{ 0, undefined })
1852// @as(@Vector(2, f80), .{ undefined, undefined })
1853// @as(@Vector(2, f80), .{ undefined, undefined })
1854// @as(@Vector(2, f80), .{ undefined, 0 })
1855// @as(@Vector(2, f80), .{ undefined, undefined })
1856// @as(@Vector(2, f80), .{ undefined, 0 })
1857// @as(@Vector(2, f80), .{ undefined, undefined })
1858// @as(@Vector(2, f80), .{ undefined, undefined })
1859// @as(@Vector(2, f80), .{ undefined, undefined })
1860// @as(@Vector(2, f80), .{ undefined, undefined })
1861// @as(@Vector(2, f80), .{ undefined, undefined })
1862// @as(f80, undefined)
1863// @as(f80, undefined)
1864// @as(@Vector(2, f80), .{ 9, undefined })
1865// @as(@Vector(2, f80), .{ undefined, 9 })
1866// @as(@Vector(2, f80), .{ undefined, undefined })
1867// @as(@Vector(2, f80), .{ 9, undefined })
1868// @as(@Vector(2, f80), .{ 9, undefined })
1869// @as(@Vector(2, f80), .{ undefined, undefined })
1870// @as(@Vector(2, f80), .{ undefined, undefined })
1871// @as(@Vector(2, f80), .{ undefined, 9 })
1872// @as(@Vector(2, f80), .{ undefined, undefined })
1873// @as(@Vector(2, f80), .{ undefined, 9 })
1874// @as(@Vector(2, f80), .{ undefined, undefined })
1875// @as(@Vector(2, f80), .{ undefined, undefined })
1876// @as(@Vector(2, f80), .{ undefined, undefined })
1877// @as(@Vector(2, f80), .{ undefined, undefined })
1878// @as(@Vector(2, f80), .{ undefined, undefined })
1879// @as(f80, undefined)
1880// @as(@Vector(2, f80), .{ -3, undefined })
1881// @as(@Vector(2, f80), .{ undefined, -3 })
1882// @as(@Vector(2, f80), .{ undefined, undefined })
1883// @as(f80, undefined)
1884// @as(f80, undefined)
1885// @as(@Vector(2, f80), [runtime value])
1886// @as(@Vector(2, f80), [runtime value])
1887// @as(@Vector(2, f80), [runtime value])
1888// @as(@Vector(2, f80), [runtime value])
1889// @as(@Vector(2, f80), [runtime value])
1890// @as(@Vector(2, f80), [runtime value])
1891// @as(@Vector(2, f80), [runtime value])
1892// @as(@Vector(2, f80), [runtime value])
1893// @as(@Vector(2, f80), [runtime value])
1894// @as(@Vector(2, f80), [runtime value])
1895// @as(@Vector(2, f80), [runtime value])
1896// @as(@Vector(2, f80), [runtime value])
1897// @as(@Vector(2, f80), [runtime value])
1898// @as(@Vector(2, f80), [runtime value])
1899// @as(@Vector(2, f80), .{ undefined, undefined })
1900// @as(f80, undefined)
1901// @as(f80, undefined)
1902// @as(@Vector(2, f80), [runtime value])
1903// @as(@Vector(2, f80), [runtime value])
1904// @as(@Vector(2, f80), [runtime value])
1905// @as(@Vector(2, f80), [runtime value])
1906// @as(@Vector(2, f80), [runtime value])
1907// @as(@Vector(2, f80), [runtime value])
1908// @as(@Vector(2, f80), [runtime value])
1909// @as(@Vector(2, f80), [runtime value])
1910// @as(@Vector(2, f80), [runtime value])
1911// @as(@Vector(2, f80), [runtime value])
1912// @as(@Vector(2, f80), [runtime value])
1913// @as(@Vector(2, f80), [runtime value])
1914// @as(@Vector(2, f80), [runtime value])
1915// @as(@Vector(2, f80), [runtime value])
1916// @as(@Vector(2, f80), .{ undefined, undefined })
1917// @as(f80, undefined)
1918// @as(f80, undefined)
1919// @as(@Vector(2, f80), [runtime value])
1920// @as(@Vector(2, f80), [runtime value])
1921// @as(@Vector(2, f80), [runtime value])
1922// @as(@Vector(2, f80), [runtime value])
1923// @as(@Vector(2, f80), [runtime value])
1924// @as(@Vector(2, f80), [runtime value])
1925// @as(@Vector(2, f80), [runtime value])
1926// @as(@Vector(2, f80), [runtime value])
1927// @as(@Vector(2, f80), [runtime value])
1928// @as(@Vector(2, f80), [runtime value])
1929// @as(@Vector(2, f80), [runtime value])
1930// @as(@Vector(2, f80), [runtime value])
1931// @as(@Vector(2, f80), [runtime value])
1932// @as(@Vector(2, f80), [runtime value])
1933// @as(@Vector(2, f80), .{ undefined, undefined })
1934// @as(f80, undefined)
1935// @as(@Vector(2, f80), [runtime value])
1936// @as(@Vector(2, f80), [runtime value])
1937// @as(@Vector(2, f80), .{ undefined, undefined })
1938// @as(f128, undefined)
1939// @as(f128, undefined)
1940// @as(@Vector(2, f128), .{ 6, undefined })
1941// @as(@Vector(2, f128), .{ undefined, 6 })
1942// @as(@Vector(2, f128), .{ undefined, undefined })
1943// @as(@Vector(2, f128), .{ 6, undefined })
1944// @as(@Vector(2, f128), .{ 6, undefined })
1945// @as(@Vector(2, f128), .{ undefined, undefined })
1946// @as(@Vector(2, f128), .{ undefined, undefined })
1947// @as(@Vector(2, f128), .{ undefined, 6 })
1948// @as(@Vector(2, f128), .{ undefined, undefined })
1949// @as(@Vector(2, f128), .{ undefined, 6 })
1950// @as(@Vector(2, f128), .{ undefined, undefined })
1951// @as(@Vector(2, f128), .{ undefined, undefined })
1952// @as(@Vector(2, f128), .{ undefined, undefined })
1953// @as(@Vector(2, f128), .{ undefined, undefined })
1954// @as(@Vector(2, f128), .{ undefined, undefined })
1955// @as(f128, undefined)
1956// @as(f128, undefined)
1957// @as(@Vector(2, f128), .{ 0, undefined })
1958// @as(@Vector(2, f128), .{ undefined, 0 })
1959// @as(@Vector(2, f128), .{ undefined, undefined })
1960// @as(@Vector(2, f128), .{ 0, undefined })
1961// @as(@Vector(2, f128), .{ 0, undefined })
1962// @as(@Vector(2, f128), .{ undefined, undefined })
1963// @as(@Vector(2, f128), .{ undefined, undefined })
1964// @as(@Vector(2, f128), .{ undefined, 0 })
1965// @as(@Vector(2, f128), .{ undefined, undefined })
1966// @as(@Vector(2, f128), .{ undefined, 0 })
1967// @as(@Vector(2, f128), .{ undefined, undefined })
1968// @as(@Vector(2, f128), .{ undefined, undefined })
1969// @as(@Vector(2, f128), .{ undefined, undefined })
1970// @as(@Vector(2, f128), .{ undefined, undefined })
1971// @as(@Vector(2, f128), .{ undefined, undefined })
1972// @as(f128, undefined)
1973// @as(f128, undefined)
1974// @as(@Vector(2, f128), .{ 9, undefined })
1975// @as(@Vector(2, f128), .{ undefined, 9 })
1976// @as(@Vector(2, f128), .{ undefined, undefined })
1977// @as(@Vector(2, f128), .{ 9, undefined })
1978// @as(@Vector(2, f128), .{ 9, undefined })
1979// @as(@Vector(2, f128), .{ undefined, undefined })
1980// @as(@Vector(2, f128), .{ undefined, undefined })
1981// @as(@Vector(2, f128), .{ undefined, 9 })
1982// @as(@Vector(2, f128), .{ undefined, undefined })
1983// @as(@Vector(2, f128), .{ undefined, 9 })
1984// @as(@Vector(2, f128), .{ undefined, undefined })
1985// @as(@Vector(2, f128), .{ undefined, undefined })
1986// @as(@Vector(2, f128), .{ undefined, undefined })
1987// @as(@Vector(2, f128), .{ undefined, undefined })
1988// @as(@Vector(2, f128), .{ undefined, undefined })
1989// @as(f128, undefined)
1990// @as(@Vector(2, f128), .{ -3, undefined })
1991// @as(@Vector(2, f128), .{ undefined, -3 })
1992// @as(@Vector(2, f128), .{ undefined, undefined })
1993// @as(f128, undefined)
1994// @as(f128, undefined)
1995// @as(@Vector(2, f128), [runtime value])
1996// @as(@Vector(2, f128), [runtime value])
1997// @as(@Vector(2, f128), [runtime value])
1998// @as(@Vector(2, f128), [runtime value])
1999// @as(@Vector(2, f128), [runtime value])
2000// @as(@Vector(2, f128), [runtime value])
2001// @as(@Vector(2, f128), [runtime value])
2002// @as(@Vector(2, f128), [runtime value])
2003// @as(@Vector(2, f128), [runtime value])
2004// @as(@Vector(2, f128), [runtime value])
2005// @as(@Vector(2, f128), [runtime value])
2006// @as(@Vector(2, f128), [runtime value])
2007// @as(@Vector(2, f128), [runtime value])
2008// @as(@Vector(2, f128), [runtime value])
2009// @as(@Vector(2, f128), .{ undefined, undefined })
2010// @as(f128, undefined)
2011// @as(f128, undefined)
2012// @as(@Vector(2, f128), [runtime value])
2013// @as(@Vector(2, f128), [runtime value])
2014// @as(@Vector(2, f128), [runtime value])
2015// @as(@Vector(2, f128), [runtime value])
2016// @as(@Vector(2, f128), [runtime value])
2017// @as(@Vector(2, f128), [runtime value])
2018// @as(@Vector(2, f128), [runtime value])
2019// @as(@Vector(2, f128), [runtime value])
2020// @as(@Vector(2, f128), [runtime value])
2021// @as(@Vector(2, f128), [runtime value])
2022// @as(@Vector(2, f128), [runtime value])
2023// @as(@Vector(2, f128), [runtime value])
2024// @as(@Vector(2, f128), [runtime value])
2025// @as(@Vector(2, f128), [runtime value])
2026// @as(@Vector(2, f128), .{ undefined, undefined })
2027// @as(f128, undefined)
2028// @as(f128, undefined)
2029// @as(@Vector(2, f128), [runtime value])
2030// @as(@Vector(2, f128), [runtime value])
2031// @as(@Vector(2, f128), [runtime value])
2032// @as(@Vector(2, f128), [runtime value])
2033// @as(@Vector(2, f128), [runtime value])
2034// @as(@Vector(2, f128), [runtime value])
2035// @as(@Vector(2, f128), [runtime value])
2036// @as(@Vector(2, f128), [runtime value])
2037// @as(@Vector(2, f128), [runtime value])
2038// @as(@Vector(2, f128), [runtime value])
2039// @as(@Vector(2, f128), [runtime value])
2040// @as(@Vector(2, f128), [runtime value])
2041// @as(@Vector(2, f128), [runtime value])
2042// @as(@Vector(2, f128), [runtime value])
2043// @as(@Vector(2, f128), .{ undefined, undefined })
2044// @as(f128, undefined)
2045// @as(@Vector(2, f128), [runtime value])
2046// @as(@Vector(2, f128), [runtime value])
2047// @as(@Vector(2, f128), .{ undefined, undefined })