aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-03-28 11:03:01 +0300
committerAndrew Kelley <andrew@ziglang.org>2022-03-28 13:04:50 -0700
commit3c4ac47e00d961186c8728df964a29a33275514c (patch)
treed357889c3e99573985602602afa04995d2348807 /src/codegen/llvm.zig
parent7e47f106ccf73af4c890ecbb4d48e9e92d38d3c4 (diff)
downloadzig-3c4ac47e00d961186c8728df964a29a33275514c.tar.gz
zig-3c4ac47e00d961186c8728df964a29a33275514c.zip
stage2 llvm: fix union init of byRef values
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig14
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 = .{