struct field reordering (minimizing padding)

This commit is contained in:
2026-08-09 14:12:25 +02:00
parent 729488e702
commit 6688822de2
4 changed files with 111 additions and 15 deletions
+23 -4
View File
@@ -1887,6 +1887,18 @@ Bool_Last :: struct {
flag bool
}
Optimized :: struct {
prefix u8
wide u64
suffix u8
}
Source_Order_C :: c_struct {
prefix c_uchar
wide c_ulong
suffix c_uchar
}
Opaque :: opaque
Color :: enum {
red
@@ -1937,12 +1949,19 @@ main func() i32 {
if (sizeof!(bool) != 1) return 15
if (sizeof!(Bool_First) != 2) return 16
if (sizeof!(Bool_Last) != 2) return 17
optimized Optimized := Optimized{prefix = 40, wide = 72623859790382856, suffix = 41}
if (sizeof!(Optimized) != 16) return 18
if (alignof!(Optimized) != 8) return 19
if (sizeof!(Source_Order_C) != 24) return 20
if (optimized.prefix != 40) return 21
if (optimized.wide != 72623859790382856) return 22
if (optimized.suffix != 41) return 23
first :: make_bool_first()
if (!first.flag) return 18
if (first.byte != 41) return 19
if (!first.flag) return 24
if (first.byte != 41) return 25
last :: make_bool_last()
if (!last.flag) return 20
if (last.byte != 42) return 21
if (!last.flag) return 26
if (last.byte != 42) return 27
return 0
}
`