diff options
| author | Jimmi Holst Christensen <jhc@dismail.de> | 2022-01-08 13:00:49 +0100 |
|---|---|---|
| committer | Jimmi Holst Christensen <jhc@dismail.de> | 2022-01-08 13:00:49 +0100 |
| commit | d8d5e2d4b959f9627853a9f1248609929f0f0de4 (patch) | |
| tree | def51f4b1febf910813575e88043732545b6977d /src/type.zig | |
| parent | 3f586781b6c8d698468cc58ab64797097323c253 (diff) | |
| download | zig-d8d5e2d4b959f9627853a9f1248609929f0f0de4.tar.gz zig-d8d5e2d4b959f9627853a9f1248609929f0f0de4.zip | |
Implement offsetOf builtin function
Diffstat (limited to 'src/type.zig')
| -rw-r--r-- | src/type.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/type.zig b/src/type.zig index f4561769e2..5e04a7e304 100644 --- a/src/type.zig +++ b/src/type.zig @@ -3777,7 +3777,10 @@ pub const Type = extern union { var offset: u64 = 0; var big_align: u32 = 0; for (struct_obj.fields.values()) |field, i| { - if (!field.ty.hasCodeGenBits()) continue; + if (!field.ty.hasCodeGenBits()) { + if (i == index) return offset; + continue; + } const field_align = field.normalAlignment(target); big_align = @maximum(big_align, field_align); @@ -3794,7 +3797,10 @@ pub const Type = extern union { var big_align: u32 = 0; var running_bits: u16 = 0; for (struct_obj.fields.values()) |field, i| { - if (!field.ty.hasCodeGenBits()) continue; + if (!field.ty.hasCodeGenBits()) { + if (i == index) return offset; + continue; + } const field_align = field.packedAlignment(); if (field_align == 0) { |
