aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index fb7daa80ec..aacb3af47d 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -5838,8 +5838,15 @@ pub const FuncGen = struct {
const llvm_i = llvmFieldIndex(result_ty, i, target, &ptr_ty_buf).?;
indices[1] = llvm_u32.constInt(llvm_i, .False);
const field_ptr = self.builder.buildInBoundsGEP(alloca_inst, &indices, indices.len, "");
- const store_inst = self.builder.buildStore(llvm_elem, field_ptr);
- store_inst.setAlignment(result_ty.structFieldAlign(i, target));
+ var field_ptr_payload: Type.Payload.Pointer = .{
+ .data = .{
+ .pointee_type = self.air.typeOf(elem),
+ .@"align" = result_ty.structFieldAlign(i, target),
+ .@"addrspace" = .generic,
+ },
+ };
+ const field_ptr_ty = Type.initPayload(&field_ptr_payload.base);
+ self.store(field_ptr, field_ptr_ty, llvm_elem, .NotAtomic);
}
return alloca_inst;
@@ -5871,8 +5878,14 @@ pub const FuncGen = struct {
};
const elem_ptr = self.builder.buildInBoundsGEP(alloca_inst, &indices, indices.len, "");
const llvm_elem = try self.resolveInst(elem);
- const store_inst = self.builder.buildStore(llvm_elem, elem_ptr);
- store_inst.setAlignment(elem_ty.abiAlignment(target));
+ var elem_ptr_payload: Type.Payload.Pointer = .{
+ .data = .{
+ .pointee_type = elem_ty,
+ .@"addrspace" = .generic,
+ },
+ };
+ const elem_ptr_ty = Type.initPayload(&elem_ptr_payload.base);
+ self.store(elem_ptr, elem_ptr_ty, llvm_elem, .NotAtomic);
}
return alloca_inst;