aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-01-16 21:19:48 -0500
committerGitHub <noreply@github.com>2023-01-16 21:19:48 -0500
commite646becd04c37fbaaa654f6419dd9f5e85d9f210 (patch)
tree01e5a1535ebec3ab5d2476396efb9469d75f29ce /src/type.zig
parent37424fd11a79801e18a121ee7e86730012b0c55e (diff)
parentb2c85464bef931c8263b50b40697a584600ee69e (diff)
downloadzig-e646becd04c37fbaaa654f6419dd9f5e85d9f210.tar.gz
zig-e646becd04c37fbaaa654f6419dd9f5e85d9f210.zip
Merge pull request #14336 from Vexu/field-reorder
Sema: automatically optimize order of struct fields
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/type.zig b/src/type.zig
index 4c56a7e167..65391aabfc 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -5741,10 +5741,14 @@ pub const Type = extern union {
target: Target,
pub fn next(it: *StructOffsetIterator) ?FieldOffset {
- const i = it.field;
+ var i = it.field;
if (it.struct_obj.fields.count() <= i)
return null;
+ if (it.struct_obj.optimized_order) |some| {
+ i = some[i];
+ if (i == Module.Struct.omitted_field) return null;
+ }
const field = it.struct_obj.fields.values()[i];
it.field += 1;