authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-14 00:09:20-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-14 00:11:46-07:00
logeee989d2a00f99d95900515b48f981f2ea6bbe78
tree2f532bec516305d93805a83bde691f7dc6e9d5d9
parent2a50a4629b19af1e72f55a41f45398be61bb7db1

Sema: Type.abiSize asserts instead of using max with alignment

ABI size is guaranteed to always be >= alignment.

1 files changed, 4 insertions(+), 5 deletions(-)

src/type.zig+4-5
......@@ -2573,15 +2573,14 @@ pub const Type = extern union {
25732573 .array_u8_sentinel_0 => self.castTag(.array_u8_sentinel_0).?.data + 1,
25742574 .array, .vector => {
25752575 const payload = self.cast(Payload.Array).?.data;
2576 const elem_size = @maximum(payload.elem_type.abiAlignment(target), payload.elem_type.abiSize(target));
2576 const elem_size = payload.elem_type.abiSize(target);
2577 assert(elem_size >= payload.elem_type.abiAlignment(target));
25772578 return payload.len * elem_size;
25782579 },
25792580 .array_sentinel => {
25802581 const payload = self.castTag(.array_sentinel).?.data;
2581 const elem_size = std.math.max(
2582 payload.elem_type.abiAlignment(target),
2583 payload.elem_type.abiSize(target),
2584 );
2582 const elem_size = payload.elem_type.abiSize(target);
2583 assert(elem_size >= payload.elem_type.abiAlignment(target));
25852584 return (payload.len + 1) * elem_size;
25862585 },
25872586 .i16, .u16 => return 2,