forked from pkmn/engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzig.patch
More file actions
47 lines (43 loc) · 2.43 KB
/
zig.patch
File metadata and controls
47 lines (43 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 358d4ac469..923db8ed85 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -6898,7 +6898,8 @@ pub const FuncGen = struct {
const elem_alignment = elem_ty.abiAlignment(zcu).toLlvm();
return self.loadByRef(elem_ptr, elem_ty, elem_alignment, .normal);
} else {
- return self.loadTruncate(.normal, elem_ty, elem_ptr, .default);
+ const elem_llvm_ty = try o.lowerType(pt, elem_ty);
+ return self.wip.load(.normal, elem_llvm_ty, elem_ptr, .default, "");
}
}
@@ -7066,11 +7067,12 @@ pub const FuncGen = struct {
const payload_index = @intFromBool(layout.tag_align.compare(.gte, layout.payload_align));
const field_ptr =
try self.wip.gepStruct(union_llvm_ty, struct_llvm_val, payload_index, "");
+ const llvm_field_ty = try o.lowerType(pt, field_ty);
const payload_alignment = layout.payload_align.toLlvm();
if (isByRef(field_ty, zcu)) {
return self.loadByRef(field_ptr, field_ty, payload_alignment, .normal);
} else {
- return self.loadTruncate(.normal, field_ty, field_ptr, payload_alignment);
+ return self.wip.load(.normal, llvm_field_ty, field_ptr, payload_alignment, "");
}
},
else => unreachable,
@@ -11256,7 +11258,8 @@ pub const FuncGen = struct {
return fg.loadByRef(payload_ptr, payload_ty, payload_alignment, .normal);
}
- return fg.loadTruncate(.normal, payload_ty, payload_ptr, payload_alignment);
+ const payload_llvm_ty = try fg.ng.object.lowerType(pt, payload_ty);
+ return fg.wip.load(.normal, payload_llvm_ty, payload_ptr, payload_alignment, "");
}
assert(!isByRef(payload_ty, zcu));
@@ -11452,7 +11455,7 @@ pub const FuncGen = struct {
if (isByRef(elem_ty, zcu)) {
return self.loadByRef(ptr, elem_ty, ptr_alignment, access_kind);
}
- return self.loadTruncate(access_kind, elem_ty, ptr, ptr_alignment);
+ return self.wip.load(access_kind, try o.lowerType(pt, elem_ty), ptr, ptr_alignment, "");
}
const containing_int_ty = try o.builder.intType(@intCast(info.packed_offset.host_size * 8));