| ... | @@ -142,7 +142,7 @@ pub const File = struct { | ... | @@ -142,7 +142,7 @@ pub const File = struct { |
| 142 | macho: MachO.SrcFn, | 142 | macho: MachO.SrcFn, |
| 143 | c: C.FnBlock, | 143 | c: C.FnBlock, |
| 144 | wasm: ?Wasm.FnData, | 144 | wasm: ?Wasm.FnData, |
| 145 | spirv: void, | 145 | spirv: SpirV.FnData, |
| 146 | }; | 146 | }; |
| 147 | | 147 | |
| 148 | pub const Export = union { | 148 | pub const Export = union { |
| ... | @@ -180,7 +180,7 @@ pub const File = struct { | ... | @@ -180,7 +180,7 @@ pub const File = struct { |
| 180 | .macho => &(try MachO.createEmpty(allocator, options)).base, | 180 | .macho => &(try MachO.createEmpty(allocator, options)).base, |
| 181 | .wasm => &(try Wasm.createEmpty(allocator, options)).base, | 181 | .wasm => &(try Wasm.createEmpty(allocator, options)).base, |
| 182 | .c => unreachable, // Reported error earlier. | 182 | .c => unreachable, // Reported error earlier. |
| 183 | .spirv => return error.SpirVObjectFormatUnimplemented, | 183 | .spirv => &(try SpirV.createEmpty(allocator, options)).base, |
| 184 | .hex => return error.HexObjectFormatUnimplemented, | 184 | .hex => return error.HexObjectFormatUnimplemented, |
| 185 | .raw => return error.RawObjectFormatUnimplemented, | 185 | .raw => return error.RawObjectFormatUnimplemented, |
| 186 | }; | 186 | }; |
| ... | @@ -196,7 +196,7 @@ pub const File = struct { | ... | @@ -196,7 +196,7 @@ pub const File = struct { |
| 196 | .macho => &(try MachO.createEmpty(allocator, options)).base, | 196 | .macho => &(try MachO.createEmpty(allocator, options)).base, |
| 197 | .wasm => &(try Wasm.createEmpty(allocator, options)).base, | 197 | .wasm => &(try Wasm.createEmpty(allocator, options)).base, |
| 198 | .c => unreachable, // Reported error earlier. | 198 | .c => unreachable, // Reported error earlier. |
| 199 | .spirv => return error.SpirVObjectFormatUnimplemented, | 199 | .spirv => &(try SpirV.createEmpty(allocator, options)).base, |
| 200 | .hex => return error.HexObjectFormatUnimplemented, | 200 | .hex => return error.HexObjectFormatUnimplemented, |
| 201 | .raw => return error.RawObjectFormatUnimplemented, | 201 | .raw => return error.RawObjectFormatUnimplemented, |
| 202 | }; | 202 | }; |
| ... | @@ -212,7 +212,7 @@ pub const File = struct { | ... | @@ -212,7 +212,7 @@ pub const File = struct { |
| 212 | .macho => &(try MachO.openPath(allocator, sub_path, options)).base, | 212 | .macho => &(try MachO.openPath(allocator, sub_path, options)).base, |
| 213 | .wasm => &(try Wasm.openPath(allocator, sub_path, options)).base, | 213 | .wasm => &(try Wasm.openPath(allocator, sub_path, options)).base, |
| 214 | .c => &(try C.openPath(allocator, sub_path, options)).base, | 214 | .c => &(try C.openPath(allocator, sub_path, options)).base, |
| 215 | .spirv => return error.SpirVObjectFormatUnimplemented, | 215 | .spirv => &(try SpirV.openPath(allocator, sub_path, options)).base, |
| 216 | .hex => return error.HexObjectFormatUnimplemented, | 216 | .hex => return error.HexObjectFormatUnimplemented, |
| 217 | .raw => return error.RawObjectFormatUnimplemented, | 217 | .raw => return error.RawObjectFormatUnimplemented, |
| 218 | }; | 218 | }; |
| ... | @@ -242,7 +242,7 @@ pub const File = struct { | ... | @@ -242,7 +242,7 @@ pub const File = struct { |
| 242 | .mode = determineMode(base.options), | 242 | .mode = determineMode(base.options), |
| 243 | }); | 243 | }); |
| 244 | }, | 244 | }, |
| 245 | .c, .wasm => {}, | 245 | .c, .wasm, .spirv => {}, |
| 246 | } | 246 | } |
| 247 | } | 247 | } |
| 248 | | 248 | |
| ... | @@ -287,7 +287,7 @@ pub const File = struct { | ... | @@ -287,7 +287,7 @@ pub const File = struct { |
| 287 | f.close(); | 287 | f.close(); |
| 288 | base.file = null; | 288 | base.file = null; |
| 289 | }, | 289 | }, |
| 290 | .c, .wasm => {}, | 290 | .c, .wasm, .spirv => {}, |
| 291 | } | 291 | } |
| 292 | } | 292 | } |
| 293 | | 293 | |
| ... | @@ -300,6 +300,7 @@ pub const File = struct { | ... | @@ -300,6 +300,7 @@ pub const File = struct { |
| 300 | .macho => return @fieldParentPtr(MachO, "base", base).updateDecl(module, decl), | 300 | .macho => return @fieldParentPtr(MachO, "base", base).updateDecl(module, decl), |
| 301 | .c => return @fieldParentPtr(C, "base", base).updateDecl(module, decl), | 301 | .c => return @fieldParentPtr(C, "base", base).updateDecl(module, decl), |
| 302 | .wasm => return @fieldParentPtr(Wasm, "base", base).updateDecl(module, decl), | 302 | .wasm => return @fieldParentPtr(Wasm, "base", base).updateDecl(module, decl), |
| | 303 | .spirv => return @fieldParentPtr(SpirV, "base", base).updateDecl(module, decl), |
| 303 | } | 304 | } |
| 304 | } | 305 | } |
| 305 | | 306 | |
| ... | @@ -309,7 +310,7 @@ pub const File = struct { | ... | @@ -309,7 +310,7 @@ pub const File = struct { |
| 309 | .elf => return @fieldParentPtr(Elf, "base", base).updateDeclLineNumber(module, decl), | 310 | .elf => return @fieldParentPtr(Elf, "base", base).updateDeclLineNumber(module, decl), |
| 310 | .macho => return @fieldParentPtr(MachO, "base", base).updateDeclLineNumber(module, decl), | 311 | .macho => return @fieldParentPtr(MachO, "base", base).updateDeclLineNumber(module, decl), |
| 311 | .c => return @fieldParentPtr(C, "base", base).updateDeclLineNumber(module, decl), | 312 | .c => return @fieldParentPtr(C, "base", base).updateDeclLineNumber(module, decl), |
| 312 | .wasm => {}, | 313 | .wasm, .spirv => {}, |
| 313 | } | 314 | } |
| 314 | } | 315 | } |
| 315 | | 316 | |
| ... | @@ -321,7 +322,7 @@ pub const File = struct { | ... | @@ -321,7 +322,7 @@ pub const File = struct { |
| 321 | .elf => return @fieldParentPtr(Elf, "base", base).allocateDeclIndexes(decl), | 322 | .elf => return @fieldParentPtr(Elf, "base", base).allocateDeclIndexes(decl), |
| 322 | .macho => return @fieldParentPtr(MachO, "base", base).allocateDeclIndexes(decl), | 323 | .macho => return @fieldParentPtr(MachO, "base", base).allocateDeclIndexes(decl), |
| 323 | .c => return @fieldParentPtr(C, "base", base).allocateDeclIndexes(decl), | 324 | .c => return @fieldParentPtr(C, "base", base).allocateDeclIndexes(decl), |
| 324 | .wasm => {}, | 325 | .wasm, .spirv => {}, |
| 325 | } | 326 | } |
| 326 | } | 327 | } |
| 327 | | 328 | |
| ... | @@ -368,6 +369,11 @@ pub const File = struct { | ... | @@ -368,6 +369,11 @@ pub const File = struct { |
| 368 | parent.deinit(); | 369 | parent.deinit(); |
| 369 | base.allocator.destroy(parent); | 370 | base.allocator.destroy(parent); |
| 370 | }, | 371 | }, |
| | 372 | .spirv => { |
| | 373 | const parent = @fieldParentPtr(SpirV, "base", base); |
| | 374 | parent.deinit(); |
| | 375 | base.allocator.destroy(parent); |
| | 376 | }, |
| 371 | } | 377 | } |
| 372 | } | 378 | } |
| 373 | | 379 | |
| ... | @@ -401,6 +407,7 @@ pub const File = struct { | ... | @@ -401,6 +407,7 @@ pub const File = struct { |
| 401 | .macho => return @fieldParentPtr(MachO, "base", base).flush(comp), | 407 | .macho => return @fieldParentPtr(MachO, "base", base).flush(comp), |
| 402 | .c => return @fieldParentPtr(C, "base", base).flush(comp), | 408 | .c => return @fieldParentPtr(C, "base", base).flush(comp), |
| 403 | .wasm => return @fieldParentPtr(Wasm, "base", base).flush(comp), | 409 | .wasm => return @fieldParentPtr(Wasm, "base", base).flush(comp), |
| | 410 | .spirv => return @fieldParentPtr(SpirV, "base", base).flush(comp), |
| 404 | } | 411 | } |
| 405 | } | 412 | } |
| 406 | | 413 | |
| ... | @@ -413,6 +420,7 @@ pub const File = struct { | ... | @@ -413,6 +420,7 @@ pub const File = struct { |
| 413 | .macho => return @fieldParentPtr(MachO, "base", base).flushModule(comp), | 420 | .macho => return @fieldParentPtr(MachO, "base", base).flushModule(comp), |
| 414 | .c => return @fieldParentPtr(C, "base", base).flushModule(comp), | 421 | .c => return @fieldParentPtr(C, "base", base).flushModule(comp), |
| 415 | .wasm => return @fieldParentPtr(Wasm, "base", base).flushModule(comp), | 422 | .wasm => return @fieldParentPtr(Wasm, "base", base).flushModule(comp), |
| | 423 | .spirv => return @fieldParentPtr(SpirV, "base", base).flushModule(comp), |
| 416 | } | 424 | } |
| 417 | } | 425 | } |
| 418 | | 426 | |
| ... | @@ -424,6 +432,7 @@ pub const File = struct { | ... | @@ -424,6 +432,7 @@ pub const File = struct { |
| 424 | .macho => @fieldParentPtr(MachO, "base", base).freeDecl(decl), | 432 | .macho => @fieldParentPtr(MachO, "base", base).freeDecl(decl), |
| 425 | .c => @fieldParentPtr(C, "base", base).freeDecl(decl), | 433 | .c => @fieldParentPtr(C, "base", base).freeDecl(decl), |
| 426 | .wasm => @fieldParentPtr(Wasm, "base", base).freeDecl(decl), | 434 | .wasm => @fieldParentPtr(Wasm, "base", base).freeDecl(decl), |
| | 435 | .spirv => @fieldParentPtr(SpirV, "base", base).freeDecl(decl), |
| 427 | } | 436 | } |
| 428 | } | 437 | } |
| 429 | | 438 | |
| ... | @@ -433,7 +442,7 @@ pub const File = struct { | ... | @@ -433,7 +442,7 @@ pub const File = struct { |
| 433 | .elf => return @fieldParentPtr(Elf, "base", base).error_flags, | 442 | .elf => return @fieldParentPtr(Elf, "base", base).error_flags, |
| 434 | .macho => return @fieldParentPtr(MachO, "base", base).error_flags, | 443 | .macho => return @fieldParentPtr(MachO, "base", base).error_flags, |
| 435 | .c => return .{ .no_entry_point_found = false }, | 444 | .c => return .{ .no_entry_point_found = false }, |
| 436 | .wasm => return ErrorFlags{}, | 445 | .wasm, .spirv => return ErrorFlags{}, |
| 437 | } | 446 | } |
| 438 | } | 447 | } |
| 439 | | 448 | |
| ... | @@ -451,6 +460,7 @@ pub const File = struct { | ... | @@ -451,6 +460,7 @@ pub const File = struct { |
| 451 | .macho => return @fieldParentPtr(MachO, "base", base).updateDeclExports(module, decl, exports), | 460 | .macho => return @fieldParentPtr(MachO, "base", base).updateDeclExports(module, decl, exports), |
| 452 | .c => return @fieldParentPtr(C, "base", base).updateDeclExports(module, decl, exports), | 461 | .c => return @fieldParentPtr(C, "base", base).updateDeclExports(module, decl, exports), |
| 453 | .wasm => return @fieldParentPtr(Wasm, "base", base).updateDeclExports(module, decl, exports), | 462 | .wasm => return @fieldParentPtr(Wasm, "base", base).updateDeclExports(module, decl, exports), |
| | 463 | .spirv => return @fieldParentPtr(SpirV, "base", base).updateDeclExports(module, decl, exports), |
| 454 | } | 464 | } |
| 455 | } | 465 | } |
| 456 | | 466 | |
| ... | @@ -461,6 +471,7 @@ pub const File = struct { | ... | @@ -461,6 +471,7 @@ pub const File = struct { |
| 461 | .macho => return @fieldParentPtr(MachO, "base", base).getDeclVAddr(decl), | 471 | .macho => return @fieldParentPtr(MachO, "base", base).getDeclVAddr(decl), |
| 462 | .c => unreachable, | 472 | .c => unreachable, |
| 463 | .wasm => unreachable, | 473 | .wasm => unreachable, |
| | 474 | .spirv => unreachable, |
| 464 | } | 475 | } |
| 465 | } | 476 | } |
| 466 | | 477 | |