| ... | @@ -2584,18 +2584,7 @@ fn validateAlign( | ... | @@ -2584,18 +2584,7 @@ fn validateAlign( |
| 2584 | src: LazySrcLoc, | 2584 | src: LazySrcLoc, |
| 2585 | alignment: u64, | 2585 | alignment: u64, |
| 2586 | ) !Alignment { | 2586 | ) !Alignment { |
| 2587 | const result = try validateAlignAllowZero(sema, block, src, alignment); | 2587 | if (alignment == 0) return sema.fail(block, src, "alignment must be >= 1", .{}); |
| 2588 | if (result == .none) return sema.fail(block, src, "alignment must be >= 1", .{}); | | |
| 2589 | return result; | | |
| 2590 | } | | |
| 2591 | | | |
| 2592 | fn validateAlignAllowZero( | | |
| 2593 | sema: *Sema, | | |
| 2594 | block: *Block, | | |
| 2595 | src: LazySrcLoc, | | |
| 2596 | alignment: u64, | | |
| 2597 | ) !Alignment { | | |
| 2598 | if (alignment == 0) return .none; | | |
| 2599 | if (!std.math.isPowerOfTwo(alignment)) { | 2588 | if (!std.math.isPowerOfTwo(alignment)) { |
| 2600 | return sema.fail(block, src, "alignment value '{d}' is not a power of two", .{ | 2589 | return sema.fail(block, src, "alignment value '{d}' is not a power of two", .{ |
| 2601 | alignment, | 2590 | alignment, |
| ... | @@ -20496,7 +20485,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air | ... | @@ -20496,7 +20485,7 @@ fn zirPtrType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 20496 | else => {}, | 20485 | else => {}, |
| 20497 | } | 20486 | } |
| 20498 | const align_bytes = (try val.getUnsignedIntSema(pt)).?; | 20487 | const align_bytes = (try val.getUnsignedIntSema(pt)).?; |
| 20499 | break :blk try sema.validateAlignAllowZero(block, align_src, align_bytes); | 20488 | break :blk try sema.validateAlign(block, align_src, align_bytes); |
| 20500 | } else .none; | 20489 | } else .none; |
| 20501 | | 20490 | |
| 20502 | const address_space: std.builtin.AddressSpace = if (inst_data.flags.has_addrspace) blk: { | 20491 | const address_space: std.builtin.AddressSpace = if (inst_data.flags.has_addrspace) blk: { |
| ... | @@ -26858,7 +26847,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A | ... | @@ -26858,7 +26847,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 26858 | if (val.isGenericPoison()) { | 26847 | if (val.isGenericPoison()) { |
| 26859 | break :blk null; | 26848 | break :blk null; |
| 26860 | } | 26849 | } |
| 26861 | break :blk try sema.validateAlignAllowZero(block, align_src, try val.toUnsignedIntSema(pt)); | 26850 | break :blk try sema.validateAlign(block, align_src, try val.toUnsignedIntSema(pt)); |
| 26862 | } else if (extra.data.bits.has_align_ref) blk: { | 26851 | } else if (extra.data.bits.has_align_ref) blk: { |
| 26863 | const align_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]); | 26852 | const align_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]); |
| 26864 | extra_index += 1; | 26853 | extra_index += 1; |
| ... | @@ -26876,7 +26865,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A | ... | @@ -26876,7 +26865,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 26876 | error.GenericPoison => break :blk null, | 26865 | error.GenericPoison => break :blk null, |
| 26877 | else => |e| return e, | 26866 | else => |e| return e, |
| 26878 | }; | 26867 | }; |
| 26879 | break :blk try sema.validateAlignAllowZero(block, align_src, try align_val.toUnsignedIntSema(pt)); | 26868 | break :blk try sema.validateAlign(block, align_src, try align_val.toUnsignedIntSema(pt)); |
| 26880 | } else .none; | 26869 | } else .none; |
| 26881 | | 26870 | |
| 26882 | const @"addrspace": ?std.builtin.AddressSpace = if (extra.data.bits.has_addrspace_body) blk: { | 26871 | const @"addrspace": ?std.builtin.AddressSpace = if (extra.data.bits.has_addrspace_body) blk: { |