Skip to content

Commit d6c74a9

Browse files
committed
remove usages of .alignment = 0
1 parent 1733086 commit d6c74a9

File tree

9 files changed

+45
-51
lines changed

9 files changed

+45
-51
lines changed

lib/compiler/aro/aro/Attribute.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ pub const Arguments = blk: {
708708
field.* = .{
709709
.name = decl.name,
710710
.type = @field(attributes, decl.name),
711-
.alignment = 0,
711+
.alignment = @alignOf(@field(attributes, decl.name)),
712712
};
713713
}
714714

lib/std/meta.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -939,7 +939,7 @@ fn CreateUniqueTuple(comptime N: comptime_int, comptime types: [N]type) type {
939939
.type = T,
940940
.default_value_ptr = null,
941941
.is_comptime = false,
942-
.alignment = 0,
942+
.alignment = @alignOf(T),
943943
};
944944
}
945945

lib/std/zig/llvm/Builder.zig

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8533,18 +8533,19 @@ pub const Metadata = enum(u32) {
85338533
.type = []const u8,
85348534
.default_value_ptr = null,
85358535
.is_comptime = false,
8536-
.alignment = 0,
8536+
.alignment = @alignOf([]const u8),
85378537
};
85388538
}
85398539
fmt_str = fmt_str ++ "(";
85408540
inline for (fields[2..], names) |*field, name| {
85418541
fmt_str = fmt_str ++ "{[" ++ name ++ "]f}";
8542+
const T = std.fmt.Formatter(FormatData, format);
85428543
field.* = .{
85438544
.name = name,
8544-
.type = std.fmt.Formatter(FormatData, format),
8545+
.type = T,
85458546
.default_value_ptr = null,
85468547
.is_comptime = false,
8547-
.alignment = 0,
8548+
.alignment = @alignOf(T),
85488549
};
85498550
}
85508551
fmt_str = fmt_str ++ ")\n";

src/InternPool.zig

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,13 +1137,16 @@ const Local = struct {
11371137
const elem_info = @typeInfo(Elem).@"struct";
11381138
const elem_fields = elem_info.fields;
11391139
var new_fields: [elem_fields.len]std.builtin.Type.StructField = undefined;
1140-
for (&new_fields, elem_fields) |*new_field, elem_field| new_field.* = .{
1141-
.name = elem_field.name,
1142-
.type = *[len]elem_field.type,
1143-
.default_value_ptr = null,
1144-
.is_comptime = false,
1145-
.alignment = 0,
1146-
};
1140+
for (&new_fields, elem_fields) |*new_field, elem_field| {
1141+
const T = *[len]elem_field.type;
1142+
new_field.* = .{
1143+
.name = elem_field.name,
1144+
.type = T,
1145+
.default_value_ptr = null,
1146+
.is_comptime = false,
1147+
.alignment = @alignOf(T),
1148+
};
1149+
}
11471150
return @Type(.{ .@"struct" = .{
11481151
.layout = .auto,
11491152
.fields = &new_fields,
@@ -1158,22 +1161,25 @@ const Local = struct {
11581161
const elem_info = @typeInfo(Elem).@"struct";
11591162
const elem_fields = elem_info.fields;
11601163
var new_fields: [elem_fields.len]std.builtin.Type.StructField = undefined;
1161-
for (&new_fields, elem_fields) |*new_field, elem_field| new_field.* = .{
1162-
.name = elem_field.name,
1163-
.type = @Type(.{ .pointer = .{
1164+
for (&new_fields, elem_fields) |*new_field, elem_field| {
1165+
const T = @Type(.{ .pointer = .{
11641166
.size = opts.size,
11651167
.is_const = opts.is_const,
11661168
.is_volatile = false,
1167-
.alignment = 0,
1169+
.alignment = @alignOf(elem_field.type),
11681170
.address_space = .generic,
11691171
.child = elem_field.type,
11701172
.is_allowzero = false,
11711173
.sentinel_ptr = null,
1172-
} }),
1173-
.default_value_ptr = null,
1174-
.is_comptime = false,
1175-
.alignment = 0,
1176-
};
1174+
} });
1175+
new_field.* = .{
1176+
.name = elem_field.name,
1177+
.type = T,
1178+
.default_value_ptr = null,
1179+
.is_comptime = false,
1180+
.alignment = @alignOf(T),
1181+
};
1182+
}
11771183
return @Type(.{ .@"struct" = .{
11781184
.layout = .auto,
11791185
.fields = &new_fields,

src/Sema.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20332,7 +20332,7 @@ fn zirReify(
2033220332
).?);
2033320333

2033420334
if (!try sema.intFitsInType(alignment_val, align_ty, null)) {
20335-
return sema.fail(block, src, "alignment must fit in '{}'", .{align_ty.fmt(pt)});
20335+
return sema.fail(block, src, "alignment must fit in '{f}'", .{align_ty.fmt(pt)});
2033620336
}
2033720337
const alignment_val_int = try alignment_val.toUnsignedIntSema(pt);
2033820338
const abi_align = try sema.validateAlign(block, src, alignment_val_int);

src/codegen/aarch64/Assemble.zig

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ pub fn nextInstruction(as: *Assemble) !?Instruction {
3333
var symbols: Symbols: {
3434
const symbols = @typeInfo(@TypeOf(instruction.symbols)).@"struct".fields;
3535
var symbol_fields: [symbols.len]std.builtin.Type.StructField = undefined;
36-
for (&symbol_fields, symbols) |*symbol_field, symbol| symbol_field.* = .{
37-
.name = symbol.name,
38-
.type = zonCast(SymbolSpec, @field(instruction.symbols, symbol.name), .{}).Storage(),
39-
.default_value_ptr = null,
40-
.is_comptime = false,
41-
.alignment = 0,
42-
};
36+
for (&symbol_fields, symbols) |*symbol_field, symbol| {
37+
const Storage = zonCast(SymbolSpec, @field(instruction.symbols, symbol.name), .{}).Storage();
38+
symbol_field.* = .{
39+
.name = symbol.name,
40+
.type = Storage,
41+
.default_value_ptr = null,
42+
.is_comptime = false,
43+
.alignment = @alignOf(Storage),
44+
};
45+
}
4346
break :Symbols @Type(.{ .@"struct" = .{
4447
.layout = .auto,
4548
.fields = &symbol_fields,

test/behavior/tuple.zig

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,17 +318,19 @@ test "tuple type with void field" {
318318
test "zero sized struct in tuple handled correctly" {
319319
const State = struct {
320320
const Self = @This();
321+
const Inner = struct {};
322+
321323
data: @Type(.{
322324
.@"struct" = .{
323325
.is_tuple = true,
324326
.layout = .auto,
325327
.decls = &.{},
326328
.fields = &.{.{
327329
.name = "0",
328-
.type = struct {},
330+
.type = Inner,
329331
.default_value_ptr = null,
330332
.is_comptime = false,
331-
.alignment = 0,
333+
.alignment = @alignOf(Inner),
332334
}},
333335
},
334336
}),

test/behavior/type.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ test "struct field names sliced at comptime from larger string" {
735735
var it = std.mem.tokenizeScalar(u8, text, '\n');
736736
while (it.next()) |name| {
737737
fields = fields ++ &[_]Type.StructField{.{
738-
.alignment = 0,
738+
.alignment = @alignOf(usize),
739739
.name = name ++ "",
740740
.type = usize,
741741
.default_value_ptr = null,

test/cases/compile_errors/align_zero.zig

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -65,24 +65,7 @@ export fn k() void {
6565
} });
6666
}
6767

68-
export fn l() void {
69-
_ = @Type(.{ .@"struct" = .{
70-
.layout = .@"packed",
71-
.fields = &.{.{
72-
.name = "test",
73-
.type = u32,
74-
.default_value_ptr = null,
75-
.is_comptime = false,
76-
.alignment = 8,
77-
}},
78-
.decls = &.{},
79-
.is_tuple = false,
80-
} });
81-
}
82-
8368
// error
84-
// backend=stage2
85-
// target=native
8669
//
8770
// :1:27: error: alignment must be >= 1
8871
// :7:34: error: alignment must be >= 1
@@ -93,6 +76,5 @@ export fn l() void {
9376
// :29:17: error: alignment must be >= 1
9477
// :33:35: error: alignment must be >= 1
9578
// :37:34: error: alignment must be >= 1
96-
// :41:9: error: alignment can only be 0 on packed struct fields
79+
// :41:9: error: alignment must be >= 1
9780
// :56:9: error: alignment must be >= 1
98-
// :69:9: error: alignment in a packed struct field must be set to 0

0 commit comments

Comments
 (0)