From fc6d7d2799fa297a65e8bb0052e9e2c7bca5c645 Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sat, 10 Dec 2022 03:44:25 -0500 Subject: CBE: fix compiling for aarch64-windows These bugs were triggered in the C backend by aarch64-specific code in os/windows.zig. Intentionally not updating zig1.wasm yet because of upcoming changes and since aarch64-windows is not tested on master yet. --- src/codegen/c.zig | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/codegen') diff --git a/src/codegen/c.zig b/src/codegen/c.zig index 364d8f586d..b78c9e9b1a 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -559,6 +559,7 @@ pub const DeclGen = struct { try writer.writeByte(')'); } switch (ptr_val.tag()) { + .int_u64, .one => try writer.print("{x}", .{try dg.fmtIntLiteral(Type.usize, ptr_val)}), .decl_ref_mut, .decl_ref, .variable => { const decl_index = switch (ptr_val.tag()) { .decl_ref => ptr_val.castTag(.decl_ref).?.data, @@ -640,6 +641,9 @@ pub const DeclGen = struct { }; if (field_info.ty.hasRuntimeBitsIgnoreComptime()) { + // Ensure complete type definition is visible before accessing fields. + try dg.renderType(std.io.null_writer, field_ptr.container_ty, .Complete); + try writer.writeAll("&("); try dg.renderParentPtr(writer, field_ptr.container_ptr, container_ptr_ty); try writer.writeAll(")->"); @@ -672,6 +676,9 @@ pub const DeclGen = struct { }; const container_ptr_ty = Type.initPayload(&container_ptr_ty_pl.base); + // Ensure complete type definition is visible before accessing fields. + try dg.renderType(std.io.null_writer, payload_ptr.container_ty, .Complete); + try writer.writeAll("&("); try dg.renderParentPtr(writer, payload_ptr.container_ptr, container_ptr_ty); try writer.writeAll(")->payload"); -- cgit v1.2.3