From 146551007f3973e527f56c86bb928faf3d592ae0 Mon Sep 17 00:00:00 2001 From: Guillaume Wenzek Date: Mon, 28 Mar 2022 22:43:02 +0200 Subject: [PATCH] add some missing targets WIP: try to get a compilable zig, even with some todos --- src/codegen/llvm.zig | 1 + src/codegen/llvm/bindings.zig | 5 ++++- src/main.zig | 6 +++--- src/stage1/target.cpp | 8 ++++++++ src/translate_c.zig | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 81742d4866a9..273f67200c25 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -572,6 +572,7 @@ pub const Object = struct { } else { _ = self.llvm_module.addAlias( llvm_global.typeOf(), + 0, // TODO(gwenzek) addrSpace llvm_global, exp_name_z, ); diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index 2cfe0e67c154..493e93a5e101 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -459,7 +459,10 @@ pub const Builder = opaque { pub const buildStore = LLVMBuildStore; extern fn LLVMBuildStore(*const Builder, Val: *const Value, Ptr: *const Value) *const Value; - pub const buildLoad = LLVMBuildLoad2; + pub const buildLoad = LLVMBuildLoad; + extern fn LLVMBuildLoad(*const Builder, PointerVal: *const Value, Name: [*:0]const u8) *const Value; + // TODO(gwenzek): replace buildLoad with buildLoad2 + pub const buildLoad2 = LLVMBuildLoad2; extern fn LLVMBuildLoad2(*const Builder, Ty: *const Type, PointerVal: *const Value, Name: [*:0]const u8) *const Value; pub const buildNeg = LLVMBuildNeg; diff --git a/src/main.zig b/src/main.zig index bd25c5d234df..860752122587 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4129,11 +4129,11 @@ pub fn punt_to_lld(arena: Allocator, args: []const []const u8) error{OutOfMemory const llvm = @import("codegen/llvm/bindings.zig"); const argc = @intCast(c_int, argv.len); if (mem.eql(u8, args[1], "ld.lld")) { - break :rc llvm.LinkELF(argc, argv.ptr, true); + break :rc llvm.LinkELF(argc, argv.ptr, true, false); } else if (mem.eql(u8, args[1], "lld-link")) { - break :rc llvm.LinkCOFF(argc, argv.ptr, true); + break :rc llvm.LinkCOFF(argc, argv.ptr, true, false); } else if (mem.eql(u8, args[1], "wasm-ld")) { - break :rc llvm.LinkWasm(argc, argv.ptr, true); + break :rc llvm.LinkWasm(argc, argv.ptr, true, false); } else { unreachable; } diff --git a/src/stage1/target.cpp b/src/stage1/target.cpp index 3e6ee2fe575b..29623187afe4 100644 --- a/src/stage1/target.cpp +++ b/src/stage1/target.cpp @@ -524,6 +524,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) { case ZigLLVM_amdil: case ZigLLVM_hsail: case ZigLLVM_spir: + case ZigLLVM_spirv32: case ZigLLVM_kalimba: case ZigLLVM_lanai: case ZigLLVM_shave: @@ -551,6 +552,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) { case ZigLLVM_amdil64: case ZigLLVM_hsail64: case ZigLLVM_spir64: + case ZigLLVM_spirv64: case ZigLLVM_wasm64: case ZigLLVM_renderscript64: case ZigLLVM_ve: @@ -592,6 +594,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) { case ZigLLVM_amdil: case ZigLLVM_hsail: case ZigLLVM_spir: + case ZigLLVM_spirv32: case ZigLLVM_kalimba: case ZigLLVM_lanai: case ZigLLVM_shave: @@ -618,6 +621,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) { case ZigLLVM_amdil64: case ZigLLVM_hsail64: case ZigLLVM_spir64: + case ZigLLVM_spirv64: case ZigLLVM_wasm64: case ZigLLVM_renderscript64: case ZigLLVM_ve: @@ -849,6 +853,8 @@ const char *arch_stack_pointer_register_name(ZigLLVM_ArchType arch) { case ZigLLVM_sparcv9: case ZigLLVM_spir: case ZigLLVM_spir64: + case ZigLLVM_spirv32: + case ZigLLVM_spirv64: case ZigLLVM_systemz: case ZigLLVM_tce: case ZigLLVM_tcele: @@ -909,6 +915,8 @@ bool target_is_arm(const ZigTarget *target) { case ZigLLVM_sparcv9: case ZigLLVM_spir: case ZigLLVM_spir64: + case ZigLLVM_spirv32: + case ZigLLVM_spirv64: case ZigLLVM_systemz: case ZigLLVM_tce: case ZigLLVM_tcele: diff --git a/src/translate_c.zig b/src/translate_c.zig index 5d48cb2a5a69..8c49d55b507f 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -4788,7 +4788,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan .rhs = try transQualType(c, scope, element_qt, source_loc), }); }, - .ExtInt, .ExtVector => { + .BitInt, .ExtVector => { const type_name = c.str(ty.getTypeClassName()); return fail(c, error.UnsupportedType, source_loc, "TODO implement translation of type: '{s}'", .{type_name}); },