authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-05-01 23:31:26-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-05-01 23:31:26-07:00
log4dd724d06a99d7b82b1b1758d28aa5559550f5bb
treea401630305207feb99915a012fa9deaa959f8212
parenteadcefc124b4ee61c99c8ed97434ed26e24c5f83

Sema: fix struct decl decoding ZIR incorrectly


2 files changed, 5 insertions(+), 5 deletions(-)

src/Sema.zig+4-3
......@@ -695,6 +695,7 @@ pub fn analyzeStructDecl(
695695 assert(body.len == 0);
696696 return;
697697 }
698 extra_index += body.len;
698699
699700 try struct_obj.fields.ensureCapacity(&new_decl_arena.allocator, fields_len);
700701
......@@ -736,9 +737,8 @@ pub fn analyzeStructDecl(
736737 const bits_per_field = 4;
737738 const fields_per_u32 = 32 / bits_per_field;
738739 const bit_bags_count = std.math.divCeil(usize, fields_len, fields_per_u32) catch unreachable;
739 const body_end = extra_index + body.len;
740 var bit_bag_index: usize = extra_index;
740741 extra_index += bit_bags_count;
741 var bit_bag_index: usize = body_end;
742742 var cur_bit_bag: u32 = undefined;
743743 var field_i: u32 = 0;
744744 while (field_i < fields_len) : (field_i += 1) {
......@@ -903,9 +903,10 @@ fn zirEnumDecl(
903903 try new_decl.finalizeNewArena(&new_decl_arena);
904904 return sema.analyzeDeclVal(block, src, new_decl);
905905 }
906 extra_index += body.len;
906907
907908 const bit_bags_count = std.math.divCeil(usize, fields_len, 32) catch unreachable;
908 const body_end = extra_index + body.len;
909 const body_end = extra_index;
909910 extra_index += bit_bags_count;
910911
911912 try enum_obj.fields.ensureCapacity(&new_decl_arena.allocator, fields_len);
src/Zir.zig+1-2
......@@ -3443,9 +3443,8 @@ const Writer = struct {
34433443 const bits_per_field = 4;
34443444 const fields_per_u32 = 32 / bits_per_field;
34453445 const bit_bags_count = std.math.divCeil(usize, fields_len, fields_per_u32) catch unreachable;
3446 const body_end = extra_index;
3446 var bit_bag_index: usize = extra_index;
34473447 extra_index += bit_bags_count;
3448 var bit_bag_index: usize = body_end;
34493448 var cur_bit_bag: u32 = undefined;
34503449 var field_i: u32 = 0;
34513450 while (field_i < fields_len) : (field_i += 1) {