aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2023-09-17 01:51:47 +0200
committerAndrew Kelley <andrew@ziglang.org>2023-09-23 12:36:44 -0700
commit18d0909adaac1ba67a06d92632423a435e4458f4 (patch)
treee45453b0d4695281d3fe154223eb7cf35afeadd7 /src
parent66036e600058081ce2f9248fd221900dce793cdd (diff)
downloadzig-18d0909adaac1ba67a06d92632423a435e4458f4.tar.gz
zig-18d0909adaac1ba67a06d92632423a435e4458f4.zip
spirv: fixes
Diffstat (limited to 'src')
-rw-r--r--src/codegen/spirv.zig41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig
index c906e5ad96..372a11c912 100644
--- a/src/codegen/spirv.zig
+++ b/src/codegen/spirv.zig
@@ -708,7 +708,7 @@ pub const DeclGen = struct {
const elem_ty = array_type.child.toType();
const elem_ty_ref = try self.resolveType(elem_ty, .indirect);
- const constituents = try self.gpa.alloc(IdRef, ty.arrayLenIncludingSentinel(mod));
+ const constituents = try self.gpa.alloc(IdRef, @as(u32, @intCast(ty.arrayLenIncludingSentinel(mod))));
defer self.gpa.free(constituents);
switch (aggregate.storage) {
@@ -1289,19 +1289,19 @@ pub const DeclGen = struct {
}
const UnionLayout = struct {
- active_field: usize,
+ active_field: u32,
active_field_ty: Type,
- payload_size: usize,
-
- tag_size: usize,
- tag_index: usize,
- active_field_size: usize,
- active_field_index: usize,
- payload_padding_size: usize,
- payload_padding_index: usize,
- padding_size: usize,
- padding_index: usize,
- total_fields: usize,
+ payload_size: u32,
+
+ tag_size: u32,
+ tag_index: u32,
+ active_field_size: u32,
+ active_field_index: u32,
+ payload_padding_size: u32,
+ payload_padding_index: u32,
+ padding_size: u32,
+ padding_index: u32,
+ total_fields: u32,
};
fn unionLayout(self: *DeclGen, ty: Type, maybe_active_field: ?usize) UnionLayout {
@@ -1314,28 +1314,28 @@ pub const DeclGen = struct {
const active_field_ty = union_obj.field_types.get(ip)[active_field].toType();
var union_layout = UnionLayout{
- .active_field = active_field,
+ .active_field = @intCast(active_field),
.active_field_ty = active_field_ty,
- .payload_size = layout.payload_size,
- .tag_size = layout.tag_size,
+ .payload_size = @intCast(layout.payload_size),
+ .tag_size = @intCast(layout.tag_size),
.tag_index = undefined,
.active_field_size = undefined,
.active_field_index = undefined,
.payload_padding_size = undefined,
.payload_padding_index = undefined,
- .padding_size = layout.padding,
+ .padding_size = @intCast(layout.padding),
.padding_index = undefined,
.total_fields = undefined,
};
union_layout.active_field_size = if (active_field_ty.hasRuntimeBitsIgnoreComptime(mod))
- active_field_ty.abiSize(mod)
+ @intCast(active_field_ty.abiSize(mod))
else
0;
- union_layout.payload_padding_size = layout.payload_size - union_layout.active_field_size;
+ union_layout.payload_padding_size = @intCast(layout.payload_size - union_layout.active_field_size);
const tag_first = layout.tag_align.compare(.gte, layout.payload_align);
- var field_index: usize = 0;
+ var field_index: u32 = 0;
if (union_layout.tag_size != 0 and tag_first) {
union_layout.tag_index = field_index;
@@ -1534,6 +1534,7 @@ pub const DeclGen = struct {
.id_result = decl_id,
.storage_class = actual_storage_class,
});
+ self.spv.globalPtr(spv_decl_index).?.result_id = decl_id;
// Now emit the instructions that initialize the variable.
const initializer_id = self.spv.allocId();