| author | |
| committer | |
| log | 37b0aa600ad47872d3a03f9e9fb60316fc3587c5 |
| tree | f10a2241876fdd27135a62a6112d0d98d0a5f8ef |
| parent | eb2d61d02e503f01070c05e2e1fc87e827124d94 |
13 files changed, 21 insertions(+), 15 deletions(-)
src/codegen/spirv/Module.zig+6-7| ... | @@ -407,12 +407,12 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void { | ... | @@ -407,12 +407,12 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void { |
| 407 | var types_constants = try self.cache.materialize(self); | 407 | var types_constants = try self.cache.materialize(self); |
| 408 | defer types_constants.deinit(self.gpa); | 408 | defer types_constants.deinit(self.gpa); |
| 409 | 409 | ||
| 410 | // TODO: Vulkan doesn't support initializer kernel | 410 | // // TODO: Pass global variables as function parameters |
| 411 | var init_func = if (target.os.tag != .vulkan) | 411 | // var init_func = if (target.os.tag != .vulkan) |
| 412 | try self.initializer(&entry_points) | 412 | // try self.initializer(&entry_points) |
| 413 | else | 413 | // else |
| 414 | Section{}; | 414 | // Section{}; |
| 415 | defer init_func.deinit(self.gpa); | 415 | // defer init_func.deinit(self.gpa); |
| 416 | 416 | ||
| 417 | const header = [_]Word{ | 417 | const header = [_]Word{ |
| 418 | spec.magic_number, | 418 | spec.magic_number, |
| ... | @@ -458,7 +458,6 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void { | ... | @@ -458,7 +458,6 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void { |
| 458 | self.sections.types_globals_constants.toWords(), | 458 | self.sections.types_globals_constants.toWords(), |
| 459 | globals.toWords(), | 459 | globals.toWords(), |
| 460 | self.sections.functions.toWords(), | 460 | self.sections.functions.toWords(), |
| 461 | init_func.toWords(), | ||
| 462 | }; | 461 | }; |
| 463 | 462 | ||
| 464 | var iovc_buffers: [buffers.len]std.os.iovec_const = undefined; | 463 | var iovc_buffers: [buffers.len]std.os.iovec_const = undefined; |
test/behavior/basic.zig-2| ... | @@ -756,7 +756,6 @@ test "extern variable with non-pointer opaque type" { | ... | @@ -756,7 +756,6 @@ test "extern variable with non-pointer opaque type" { |
| 756 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 756 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 757 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 757 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 758 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 758 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 759 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 760 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; | 759 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; |
| 761 | 760 | ||
| 762 | @export(var_to_export, .{ .name = "opaque_extern_var" }); | 761 | @export(var_to_export, .{ .name = "opaque_extern_var" }); |
| ... | @@ -1195,7 +1194,6 @@ test "integer compare" { | ... | @@ -1195,7 +1194,6 @@ test "integer compare" { |
| 1195 | 1194 | ||
| 1196 | test "reference to inferred local variable works as expected" { | 1195 | test "reference to inferred local variable works as expected" { |
| 1197 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1196 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1198 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 1199 | 1197 | ||
| 1200 | const Crasher = struct { | 1198 | const Crasher = struct { |
| 1201 | lets_crash: u64 = 0, | 1199 | lets_crash: u64 = 0, |
test/behavior/byval_arg_var.zig+1| ... | @@ -5,6 +5,7 @@ var result: []const u8 = "wrong"; | ... | @@ -5,6 +5,7 @@ var result: []const u8 = "wrong"; |
| 5 | 5 | ||
| 6 | test "pass string literal byvalue to a generic var param" { | 6 | test "pass string literal byvalue to a generic var param" { |
| 7 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 7 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 8 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 8 | 9 | ||
| 9 | start(); | 10 | start(); |
| 10 | blowUpStack(10); | 11 | blowUpStack(10); |
test/behavior/cast.zig+1| ... | @@ -1262,6 +1262,7 @@ test "implicit cast from *T to ?*anyopaque" { | ... | @@ -1262,6 +1262,7 @@ test "implicit cast from *T to ?*anyopaque" { |
| 1262 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 1262 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1263 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1263 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1264 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1264 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1265 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 1265 | 1266 | ||
| 1266 | var a: u8 = 1; | 1267 | var a: u8 = 1; |
| 1267 | incrementVoidPtrValue(&a); | 1268 | incrementVoidPtrValue(&a); |
test/behavior/error.zig+2| ... | @@ -124,6 +124,7 @@ test "debug info for optional error set" { | ... | @@ -124,6 +124,7 @@ test "debug info for optional error set" { |
| 124 | 124 | ||
| 125 | test "implicit cast to optional to error union to return result loc" { | 125 | test "implicit cast to optional to error union to return result loc" { |
| 126 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 126 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 127 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 127 | 128 | ||
| 128 | const S = struct { | 129 | const S = struct { |
| 129 | fn entry() !void { | 130 | fn entry() !void { |
| ... | @@ -950,6 +951,7 @@ test "returning an error union containing a type with no runtime bits" { | ... | @@ -950,6 +951,7 @@ test "returning an error union containing a type with no runtime bits" { |
| 950 | test "try used in recursive function with inferred error set" { | 951 | test "try used in recursive function with inferred error set" { |
| 951 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 952 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 952 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 953 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 954 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO | ||
| 953 | 955 | ||
| 954 | const Value = union(enum) { | 956 | const Value = union(enum) { |
| 955 | values: []const @This(), | 957 | values: []const @This(), |
test/behavior/floatop.zig+2| ... | @@ -127,6 +127,7 @@ test "cmp f16" { | ... | @@ -127,6 +127,7 @@ test "cmp f16" { |
| 127 | test "cmp f32/f64" { | 127 | test "cmp f32/f64" { |
| 128 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 128 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 129 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; | 129 | if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest; |
| 130 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 130 | 131 | ||
| 131 | try testCmp(f32); | 132 | try testCmp(f32); |
| 132 | try comptime testCmp(f32); | 133 | try comptime testCmp(f32); |
| ... | @@ -978,6 +979,7 @@ test "@abs f32/f64" { | ... | @@ -978,6 +979,7 @@ test "@abs f32/f64" { |
| 978 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 979 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 979 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 980 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 980 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 981 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 982 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 981 | 983 | ||
| 982 | try testFabs(f32); | 984 | try testFabs(f32); |
| 983 | try comptime testFabs(f32); | 985 | try comptime testFabs(f32); |
test/behavior/globals.zig-1| ... | @@ -50,7 +50,6 @@ test "global loads can affect liveness" { | ... | @@ -50,7 +50,6 @@ test "global loads can affect liveness" { |
| 50 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 50 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 51 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 51 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 52 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 52 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 53 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 54 | 53 | ||
| 55 | const S = struct { | 54 | const S = struct { |
| 56 | const ByRef = struct { | 55 | const ByRef = struct { |
test/behavior/optional.zig+3| ... | @@ -28,6 +28,7 @@ pub const EmptyStruct = struct {}; | ... | @@ -28,6 +28,7 @@ pub const EmptyStruct = struct {}; |
| 28 | 28 | ||
| 29 | test "optional pointer to size zero struct" { | 29 | test "optional pointer to size zero struct" { |
| 30 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 30 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 31 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 31 | 32 | ||
| 32 | var e = EmptyStruct{}; | 33 | var e = EmptyStruct{}; |
| 33 | const o: ?*EmptyStruct = &e; | 34 | const o: ?*EmptyStruct = &e; |
| ... | @@ -35,6 +36,8 @@ test "optional pointer to size zero struct" { | ... | @@ -35,6 +36,8 @@ test "optional pointer to size zero struct" { |
| 35 | } | 36 | } |
| 36 | 37 | ||
| 37 | test "equality compare optional pointers" { | 38 | test "equality compare optional pointers" { |
| 39 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 40 | |||
| 38 | try testNullPtrsEql(); | 41 | try testNullPtrsEql(); |
| 39 | try comptime testNullPtrsEql(); | 42 | try comptime testNullPtrsEql(); |
| 40 | } | 43 | } |
test/behavior/pointers.zig+1| ... | @@ -216,6 +216,7 @@ test "assign null directly to C pointer and test null equality" { | ... | @@ -216,6 +216,7 @@ test "assign null directly to C pointer and test null equality" { |
| 216 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 216 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 217 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 217 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 218 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 218 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 219 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 219 | 220 | ||
| 220 | var x: [*c]i32 = null; | 221 | var x: [*c]i32 = null; |
| 221 | _ = &x; | 222 | _ = &x; |
test/behavior/typename.zig-5| ... | @@ -41,7 +41,6 @@ test "anon field init" { | ... | @@ -41,7 +41,6 @@ test "anon field init" { |
| 41 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 41 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 42 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 42 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 43 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 43 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 44 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 45 | 44 | ||
| 46 | const Foo = .{ | 45 | const Foo = .{ |
| 47 | .T1 = struct {}, | 46 | .T1 = struct {}, |
| ... | @@ -90,7 +89,6 @@ test "top level decl" { | ... | @@ -90,7 +89,6 @@ test "top level decl" { |
| 90 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 89 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 91 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 90 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 92 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 91 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 93 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 94 | 92 | ||
| 95 | try expectEqualStrings( | 93 | try expectEqualStrings( |
| 96 | "behavior.typename.A_Struct", | 94 | "behavior.typename.A_Struct", |
| ... | @@ -140,7 +138,6 @@ test "fn param" { | ... | @@ -140,7 +138,6 @@ test "fn param" { |
| 140 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 138 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 141 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 139 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 142 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 140 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 143 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 144 | 141 | ||
| 145 | // https://github.com/ziglang/zig/issues/675 | 142 | // https://github.com/ziglang/zig/issues/675 |
| 146 | try expectEqualStrings( | 143 | try expectEqualStrings( |
| ... | @@ -211,7 +208,6 @@ test "local variable" { | ... | @@ -211,7 +208,6 @@ test "local variable" { |
| 211 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 208 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 212 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 209 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 213 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 210 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 214 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 215 | 211 | ||
| 216 | const Foo = struct { a: u32 }; | 212 | const Foo = struct { a: u32 }; |
| 217 | const Bar = union { a: u32 }; | 213 | const Bar = union { a: u32 }; |
| ... | @@ -239,7 +235,6 @@ test "anon name strategy used in sub expression" { | ... | @@ -239,7 +235,6 @@ test "anon name strategy used in sub expression" { |
| 239 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 235 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 240 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 236 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 241 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 237 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 242 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 243 | 238 | ||
| 244 | const S = struct { | 239 | const S = struct { |
| 245 | fn getTheName() []const u8 { | 240 | fn getTheName() []const u8 { |
test/behavior/undefined.zig+1| ... | @@ -104,6 +104,7 @@ test "returned undef is 0xaa bytes when runtime safety is enabled" { | ... | @@ -104,6 +104,7 @@ test "returned undef is 0xaa bytes when runtime safety is enabled" { |
| 104 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 104 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 105 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 105 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 106 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 106 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 107 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 107 | 108 | ||
| 108 | const Rect = struct { | 109 | const Rect = struct { |
| 109 | x: f32, | 110 | x: f32, |
test/behavior/vector.zig+2| ... | @@ -372,6 +372,7 @@ test "load vector elements via comptime index" { | ... | @@ -372,6 +372,7 @@ test "load vector elements via comptime index" { |
| 372 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 372 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 373 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 373 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 374 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 374 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 375 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 375 | 376 | ||
| 376 | const S = struct { | 377 | const S = struct { |
| 377 | fn doTheTest() !void { | 378 | fn doTheTest() !void { |
| ... | @@ -393,6 +394,7 @@ test "store vector elements via comptime index" { | ... | @@ -393,6 +394,7 @@ test "store vector elements via comptime index" { |
| 393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 394 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 394 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 395 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 395 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 396 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 397 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; | ||
| 396 | 398 | ||
| 397 | const S = struct { | 399 | const S = struct { |
| 398 | fn doTheTest() !void { | 400 | fn doTheTest() !void { |
test/behavior/while.zig+2| ... | @@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 { | ... | @@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 { |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | test "while with continue expression" { | 40 | test "while with continue expression" { |
| 41 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO | ||
| 42 | |||
| 41 | var sum: i32 = 0; | 43 | var sum: i32 = 0; |
| 42 | { | 44 | { |
| 43 | var i: i32 = 0; | 45 | var i: i32 = 0; |