authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-11-15 23:19:22-05:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-11-15 23:33:48-05:00
loga9c005e0e48cb88467b97dcdc9a25dbf7a5a5b4b
treef2431c3eeec647e791c70342c6bc40af6d907529
parentb82aec5a15acd3d10f2efbde52a0bfb9af411891

cbe: fixed tagged union initializers of a zero-bit field type

Fixes missing braces warnings on gcc 11.3.0.

1 files changed, 7 insertions(+), 1 deletions(-)

src/codegen/c.zig+7-1
...@@ -1140,10 +1140,16 @@ pub const DeclGen = struct {...@@ -1140,10 +1140,16 @@ pub const DeclGen = struct {
1140 const index = ty.unionTagFieldIndex(union_obj.tag, dg.module).?;1140 const index = ty.unionTagFieldIndex(union_obj.tag, dg.module).?;
1141 const field_ty = ty.unionFields().values()[index].ty;1141 const field_ty = ty.unionFields().values()[index].ty;
1142 const field_name = ty.unionFields().keys()[index];1142 const field_name = ty.unionFields().keys()[index];
1143 var it = ty.unionFields().iterator();
1143 if (field_ty.hasRuntimeBits()) {1144 if (field_ty.hasRuntimeBits()) {
1144 try writer.print(".{ } = ", .{fmtIdent(field_name)});1145 try writer.print(".{ } = ", .{fmtIdent(field_name)});
1145 try dg.renderValue(writer, field_ty, union_obj.val, .Initializer);1146 try dg.renderValue(writer, field_ty, union_obj.val, .Initializer);
1146 } else try writer.writeByte('0');1147 } else while (it.next()) |field| {
1148 if (!field.value_ptr.ty.hasRuntimeBits()) continue;
1149 try writer.print(".{ } = ", .{fmtIdent(field.key_ptr.*)});
1150 try dg.renderValue(writer, field.value_ptr.ty, Value.undef, .Initializer);
1151 break;
1152 } else try writer.writeAll(".empty_union = 0");
1147 if (ty.unionTagTypeSafety()) |_| try writer.writeByte('}');1153 if (ty.unionTagTypeSafety()) |_| try writer.writeByte('}');
1148 try writer.writeByte('}');1154 try writer.writeByte('}');
1149 },1155 },