aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-06-10 15:04:39 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-06-10 15:04:39 -0700
commit3c3bc5af29a5fcd1daaf8d8d39625c7b505e80bf (patch)
tree265b5cfeb0847a23439a58e8c54e31bf4bb2a615 /src/Sema.zig
parent58bc562cb45d5d27fed2e69ee289a4b5c9199cff (diff)
downloadzig-3c3bc5af29a5fcd1daaf8d8d39625c7b505e80bf.tar.gz
zig-3c3bc5af29a5fcd1daaf8d8d39625c7b505e80bf.zip
Sema: introduce bitSizeAdvanced to recursively resolve types
Same pattern as abiSizeAdvanced. Fixes compiler crash for nested packed structs.
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index f1cfd04865..738098dd83 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -11747,11 +11747,11 @@ fn zirSizeOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.
fn zirBitSizeOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref {
const inst_data = sema.code.instructions.items(.data)[inst].un_node;
+ const src = inst_data.src();
const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node };
- const unresolved_operand_ty = try sema.resolveType(block, operand_src, inst_data.operand);
- const operand_ty = try sema.resolveTypeFields(block, operand_src, unresolved_operand_ty);
+ const operand_ty = try sema.resolveType(block, operand_src, inst_data.operand);
const target = sema.mod.getTarget();
- const bit_size = operand_ty.bitSize(target);
+ const bit_size = try operand_ty.bitSizeAdvanced(target, sema.kit(block, src));
return sema.addIntUnsigned(Type.comptime_int, bit_size);
}