diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-06-10 15:04:39 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-06-10 15:04:39 -0700 |
| commit | 3c3bc5af29a5fcd1daaf8d8d39625c7b505e80bf (patch) | |
| tree | 265b5cfeb0847a23439a58e8c54e31bf4bb2a615 /src/Sema.zig | |
| parent | 58bc562cb45d5d27fed2e69ee289a4b5c9199cff (diff) | |
| download | zig-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.zig | 6 |
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); } |
