authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-14 21:22:01-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-14 22:26:11-07:00
log8c14d170b579e078ff961973e4d28a4946df36d7
tree63d2c4d8eaeaa1ae08eac8438d26982f25ddf4b1
parent9c136be78fcc44d4dd4902605de6af14358c67a3

Revert "stage2 llvm: Use unpacked struct for unions and arrays"

This reverts commit 2eaef84ebe968224b0cf25206abf12ea1c5e0f5a. Here is a motivating example: ```zig const E = union(enum) { A: [9]u8, B: u64, }; ``` ```llvm %test2.E = type { { i64, [1 x i8] }, i1, [6 x i8] } ``` ``` error(codegen): when lowering test2.E, Zig ABI size = 16 but LLVM ABI size = 24 ```

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

src/codegen/llvm.zig+5-5
...@@ -2734,7 +2734,7 @@ pub const DeclGen = struct {...@@ -2734,7 +2734,7 @@ pub const DeclGen = struct {
2734 llvm_aligned_field_ty,2734 llvm_aligned_field_ty,
2735 dg.context.intType(8).arrayType(padding_len),2735 dg.context.intType(8).arrayType(padding_len),
2736 };2736 };
2737 break :t dg.context.structType(&fields, fields.len, .False);2737 break :t dg.context.structType(&fields, fields.len, .True);
2738 };2738 };
27392739
2740 if (layout.tag_size == 0) {2740 if (layout.tag_size == 0) {
...@@ -3050,7 +3050,7 @@ pub const DeclGen = struct {...@@ -3050,7 +3050,7 @@ pub const DeclGen = struct {
3050 return dg.context.constStruct(3050 return dg.context.constStruct(
3051 llvm_elems.ptr,3051 llvm_elems.ptr,
3052 @intCast(c_uint, llvm_elems.len),3052 @intCast(c_uint, llvm_elems.len),
3053 .False,3053 .True,
3054 );3054 );
3055 } else {3055 } else {
3056 const llvm_elem_ty = try dg.lowerType(elem_ty);3056 const llvm_elem_ty = try dg.lowerType(elem_ty);
...@@ -3087,7 +3087,7 @@ pub const DeclGen = struct {...@@ -3087,7 +3087,7 @@ pub const DeclGen = struct {
3087 return dg.context.constStruct(3087 return dg.context.constStruct(
3088 llvm_elems.ptr,3088 llvm_elems.ptr,
3089 @intCast(c_uint, llvm_elems.len),3089 @intCast(c_uint, llvm_elems.len),
3090 .False,3090 .True,
3091 );3091 );
3092 } else {3092 } else {
3093 const llvm_elem_ty = try dg.lowerType(elem_ty);3093 const llvm_elem_ty = try dg.lowerType(elem_ty);
...@@ -3104,7 +3104,7 @@ pub const DeclGen = struct {...@@ -3104,7 +3104,7 @@ pub const DeclGen = struct {
3104 const llvm_elems: [1]*const llvm.Value = .{sentinel};3104 const llvm_elems: [1]*const llvm.Value = .{sentinel};
3105 const need_unnamed = dg.isUnnamedType(elem_ty, llvm_elems[0]);3105 const need_unnamed = dg.isUnnamedType(elem_ty, llvm_elems[0]);
3106 if (need_unnamed) {3106 if (need_unnamed) {
3107 return dg.context.constStruct(&llvm_elems, llvm_elems.len, .False);3107 return dg.context.constStruct(&llvm_elems, llvm_elems.len, .True);
3108 } else {3108 } else {
3109 const llvm_elem_ty = try dg.lowerType(elem_ty);3109 const llvm_elem_ty = try dg.lowerType(elem_ty);
3110 return llvm_elem_ty.constArray(&llvm_elems, llvm_elems.len);3110 return llvm_elem_ty.constArray(&llvm_elems, llvm_elems.len);
...@@ -3397,7 +3397,7 @@ pub const DeclGen = struct {...@@ -3397,7 +3397,7 @@ pub const DeclGen = struct {
3397 const fields: [2]*const llvm.Value = .{3397 const fields: [2]*const llvm.Value = .{
3398 field, dg.context.intType(8).arrayType(padding_len).getUndef(),3398 field, dg.context.intType(8).arrayType(padding_len).getUndef(),
3399 };3399 };
3400 break :p dg.context.constStruct(&fields, fields.len, .False);3400 break :p dg.context.constStruct(&fields, fields.len, .True);
3401 };3401 };
34023402
3403 if (layout.tag_size == 0) {3403 if (layout.tag_size == 0) {