Commit fc6d7d2799

Jacob Young <jacobly0@users.noreply.github.com>
2022-12-10 09:44:25
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.
1 parent f020734
Changed files (1)
src
codegen
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");