diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-03-28 11:03:01 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-28 13:04:50 -0700 |
| commit | 3c4ac47e00d961186c8728df964a29a33275514c (patch) | |
| tree | d357889c3e99573985602602afa04995d2348807 /src/codegen | |
| parent | 7e47f106ccf73af4c890ecbb4d48e9e92d38d3c4 (diff) | |
| download | zig-3c4ac47e00d961186c8728df964a29a33275514c.tar.gz zig-3c4ac47e00d961186c8728df964a29a33275514c.zip | |
stage2 llvm: fix union init of byRef values
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 431d158293..2e2e4ca819 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -6630,6 +6630,14 @@ pub const FuncGen = struct { // tag and the payload. const index_type = self.context.intType(32); + var field_ptr_payload: Type.Payload.Pointer = .{ + .data = .{ + .pointee_type = field.ty, + .@"align" = field_align, + .@"addrspace" = .generic, + }, + }; + const field_ptr_ty = Type.initPayload(&field_ptr_payload.base); if (layout.tag_size == 0) { const indices: [3]*const llvm.Value = .{ index_type.constNull(), @@ -6638,8 +6646,7 @@ pub const FuncGen = struct { }; const len: c_uint = if (field_size == layout.payload_size) 2 else 3; const field_ptr = self.builder.buildInBoundsGEP(casted_ptr, &indices, len, ""); - const store_inst = self.builder.buildStore(llvm_payload, field_ptr); - store_inst.setAlignment(field_align); + self.store(field_ptr, field_ptr_ty, llvm_payload, .NotAtomic); return result_ptr; } @@ -6651,8 +6658,7 @@ pub const FuncGen = struct { }; const len: c_uint = if (field_size == layout.payload_size) 2 else 3; const field_ptr = self.builder.buildInBoundsGEP(casted_ptr, &indices, len, ""); - const store_inst = self.builder.buildStore(llvm_payload, field_ptr); - store_inst.setAlignment(field_align); + self.store(field_ptr, field_ptr_ty, llvm_payload, .NotAtomic); } { const indices: [2]*const llvm.Value = .{ |
