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 {...@@ -2573,15 +2573,14 @@ pub const Type = extern union {
2573 .array_u8_sentinel_0 => self.castTag(.array_u8_sentinel_0).?.data + 1,2573 .array_u8_sentinel_0 => self.castTag(.array_u8_sentinel_0).?.data + 1,
2574 .array, .vector => {2574 .array, .vector => {
2575 const payload = self.cast(Payload.Array).?.data;2575 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));
2577 return payload.len * elem_size;2578 return payload.len * elem_size;
2578 },2579 },
2579 .array_sentinel => {2580 .array_sentinel => {
2580 const payload = self.castTag(.array_sentinel).?.data;2581 const payload = self.castTag(.array_sentinel).?.data;
2581 const elem_size = std.math.max(2582 const elem_size = payload.elem_type.abiSize(target);
2582 payload.elem_type.abiAlignment(target),2583 assert(elem_size >= payload.elem_type.abiAlignment(target));
2583 payload.elem_type.abiSize(target),
2584 );
2585 return (payload.len + 1) * elem_size;2584 return (payload.len + 1) * elem_size;
2586 },2585 },
2587 .i16, .u16 => return 2,2586 .i16, .u16 => return 2,