From ce56ae8afe1fd00cc137375332014b8d8a8ef960 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 2 Oct 2019 13:05:10 -0400 Subject: we have to use c++14 now for llvm10 --- src/zig_llvm.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/zig_llvm.cpp') diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 8166173051..4047d906d9 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -150,7 +150,7 @@ LLVMTargetMachineRef ZigLLVMCreateTargetMachine(LLVMTargetRef T, const char *Tri } unsigned ZigLLVMDataLayoutGetStackAlignment(LLVMTargetDataRef TD) { - return unwrap(TD)->getStackAlignment(); + return unwrap(TD)->getStackAlignment().value(); } bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMModuleRef module_ref, -- cgit v1.2.3 From 7e674d6761c057985003694f98861f589b6cf313 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 16 Jan 2020 21:31:58 -0500 Subject: zig_llvm: update CodeGenFileType usage --- src/zig_llvm.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/zig_llvm.cpp') diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index de989c2442..1b02315905 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -228,14 +228,14 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM PMBuilder->populateModulePassManager(MPM); // Set output pass. - TargetMachine::CodeGenFileType ft; + CodeGenFileType ft; if (output_type != ZigLLVM_EmitLLVMIr) { switch (output_type) { case ZigLLVM_EmitAssembly: - ft = TargetMachine::CGFT_AssemblyFile; + ft = CGFT_AssemblyFile; break; case ZigLLVM_EmitBinary: - ft = TargetMachine::CGFT_ObjectFile; + ft = CGFT_ObjectFile; break; default: abort(); -- cgit v1.2.3 From fb8e681ea8413b233ebc83cc649ab9a166b6d979 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 22 Jan 2020 18:43:30 -0500 Subject: update zig_llvm.h and zig_llvm.cpp to llvm 10 --- lib/std/target.zig | 6 ++++-- src/target.cpp | 16 ++++++++++++++++ src/zig_llvm.cpp | 32 +++++++++++++++++++++----------- src/zig_llvm.h | 11 +++++++---- 4 files changed, 48 insertions(+), 17 deletions(-) (limited to 'src/zig_llvm.cpp') diff --git a/lib/std/target.zig b/lib/std/target.zig index d62786ff7f..6593e40700 100644 --- a/lib/std/target.zig +++ b/lib/std/target.zig @@ -100,6 +100,7 @@ pub const Target = union(enum) { wasm64, renderscript32, renderscript64, + ve, pub const Arm32 = enum { v8_5a, @@ -155,6 +156,9 @@ pub const Target = union(enum) { pub const Mips = enum { r6, }; + pub const PPC = enum { + spe, + }; pub fn isARM(arch: Arch) bool { return switch (arch) { @@ -309,8 +313,6 @@ pub const Target = union(enum) { code16, eabi, eabihf, - elfv1, - elfv2, android, musl, musleabi, diff --git a/src/target.cpp b/src/target.cpp index 82d5467e26..197a2e9f23 100644 --- a/src/target.cpp +++ b/src/target.cpp @@ -21,6 +21,7 @@ static const SubArchList subarch_list_list[] = { SubArchListArm64, SubArchListKalimba, SubArchListMips, + SubArchListPPC, }; static const ZigLLVM_SubArchType subarch_list_arm32[] = { @@ -72,6 +73,10 @@ static const ZigLLVM_SubArchType subarch_list_mips[] = { ZigLLVM_MipsSubArch_r6, }; +static const ZigLLVM_SubArchType subarch_list_ppc[] = { + ZigLLVM_PPCSubArch_spe, +}; + static const ZigLLVM_ArchType arch_list[] = { ZigLLVM_arm, // ARM (little endian): arm, armv.*, xscale ZigLLVM_armeb, // ARM (big endian): armeb @@ -123,6 +128,7 @@ static const ZigLLVM_ArchType arch_list[] = { ZigLLVM_wasm64, // WebAssembly with 64-bit pointers ZigLLVM_renderscript32, // 32-bit RenderScript ZigLLVM_renderscript64, // 64-bit RenderScript + ZigLLVM_ve, // NEC SX-Aurora Vector Engine }; static const ZigLLVM_VendorType vendor_list[] = { @@ -627,6 +633,7 @@ SubArchList target_subarch_list(ZigLLVM_ArchType arch) { case ZigLLVM_wasm64: case ZigLLVM_renderscript32: case ZigLLVM_renderscript64: + case ZigLLVM_ve: return SubArchListNone; } zig_unreachable(); @@ -644,6 +651,8 @@ size_t target_subarch_count(SubArchList sub_arch_list) { return array_length(subarch_list_kalimba); case SubArchListMips: return array_length(subarch_list_mips); + case SubArchListPPC: + return array_length(subarch_list_ppc); } zig_unreachable(); } @@ -664,6 +673,9 @@ ZigLLVM_SubArchType target_subarch_enum(SubArchList sub_arch_list, size_t i) { case SubArchListMips: assert(i < array_length(subarch_list_mips)); return subarch_list_mips[i]; + case SubArchListPPC: + assert(i < array_length(subarch_list_ppc)); + return subarch_list_ppc[i]; } zig_unreachable(); } @@ -726,6 +738,8 @@ const char *target_subarch_name(ZigLLVM_SubArchType subarch) { return "v5"; case ZigLLVM_MipsSubArch_r6: return "r6"; + case ZigLLVM_PPCSubArch_spe: + return "spe"; } zig_unreachable(); } @@ -935,6 +949,7 @@ uint32_t target_arch_pointer_bit_width(ZigLLVM_ArchType arch) { case ZigLLVM_spir64: case ZigLLVM_wasm64: case ZigLLVM_renderscript64: + case ZigLLVM_ve: return 64; } zig_unreachable(); @@ -998,6 +1013,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) { case ZigLLVM_spir64: case ZigLLVM_wasm64: case ZigLLVM_renderscript64: + case ZigLLVM_ve: return 64; case ZigLLVM_x86_64: diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 1b02315905..0cbaa8047f 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -299,14 +300,16 @@ LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *A LLVMValueRef ZigLLVMBuildMemCpy(LLVMBuilderRef B, LLVMValueRef Dst, unsigned DstAlign, LLVMValueRef Src, unsigned SrcAlign, LLVMValueRef Size, bool isVolatile) { - CallInst *call_inst = unwrap(B)->CreateMemCpy(unwrap(Dst), DstAlign, unwrap(Src), SrcAlign, unwrap(Size), isVolatile); + CallInst *call_inst = unwrap(B)->CreateMemCpy(unwrap(Dst), + MaybeAlign(DstAlign), unwrap(Src), MaybeAlign(SrcAlign), unwrap(Size), isVolatile); return wrap(call_inst); } LLVMValueRef ZigLLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr, LLVMValueRef Val, LLVMValueRef Size, unsigned Align, bool isVolatile) { - CallInst *call_inst = unwrap(B)->CreateMemSet(unwrap(Ptr), unwrap(Val), unwrap(Size), Align, isVolatile); + CallInst *call_inst = unwrap(B)->CreateMemSet(unwrap(Ptr), unwrap(Val), unwrap(Size), + MaybeAlign(Align), isVolatile); return wrap(call_inst); } @@ -770,7 +773,7 @@ void ZigLLVMAddFunctionAttrCold(LLVMValueRef fn_ref) { } void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv) { - llvm::cl::ParseCommandLineOptions(argc, argv); + cl::ParseCommandLineOptions(argc, argv); } const char *ZigLLVMGetArchTypeName(ZigLLVM_ArchType arch) { @@ -864,6 +867,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) { return "v5"; case ZigLLVM_MipsSubArch_r6: return "r6"; + case ZigLLVM_PPCSubArch_spe: + return "spe"; } abort(); } @@ -1072,11 +1077,14 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, - void (*append_diagnostic)(void *, const char *, size_t), void *context) + void (*append_diagnostic_stdout)(void *, const char *, size_t), + void (*append_diagnostic_stderr)(void *, const char *, size_t), + void *context) { ArrayRef array_ref_args(args, arg_count); - MyOStream diag(append_diagnostic, context); + MyOStream diag_stdout(append_diagnostic_stdout, context); + MyOStream diag_stderr(append_diagnostic_stderr, context); switch (oformat) { case ZigLLVM_UnknownObjectFormat: @@ -1084,16 +1092,16 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_ assert(false); // unreachable case ZigLLVM_COFF: - return lld::coff::link(array_ref_args, false, diag); + return lld::coff::link(array_ref_args, false, diag_stdout, diag_stderr); case ZigLLVM_ELF: - return lld::elf::link(array_ref_args, false, diag); + return lld::elf::link(array_ref_args, false, diag_stdout, diag_stderr); case ZigLLVM_MachO: - return lld::mach_o::link(array_ref_args, false, diag); + return lld::mach_o::link(array_ref_args, false, diag_stdout, diag_stderr); case ZigLLVM_Wasm: - return lld::wasm::link(array_ref_args, false, diag); + return lld::wasm::link(array_ref_args, false, diag_stdout, diag_stderr); } assert(false); // unreachable abort(); @@ -1154,6 +1162,7 @@ static_assert((Triple::ArchType)ZigLLVM_arm == Triple::arm, ""); static_assert((Triple::ArchType)ZigLLVM_armeb == Triple::armeb, ""); static_assert((Triple::ArchType)ZigLLVM_aarch64 == Triple::aarch64, ""); static_assert((Triple::ArchType)ZigLLVM_aarch64_be == Triple::aarch64_be, ""); +static_assert((Triple::ArchType)ZigLLVM_aarch64_32 == Triple::aarch64_32, ""); static_assert((Triple::ArchType)ZigLLVM_arc == Triple::arc, ""); static_assert((Triple::ArchType)ZigLLVM_avr == Triple::avr, ""); static_assert((Triple::ArchType)ZigLLVM_bpfel == Triple::bpfel, ""); @@ -1199,6 +1208,7 @@ static_assert((Triple::ArchType)ZigLLVM_wasm32 == Triple::wasm32, ""); static_assert((Triple::ArchType)ZigLLVM_wasm64 == Triple::wasm64, ""); static_assert((Triple::ArchType)ZigLLVM_renderscript32 == Triple::renderscript32, ""); static_assert((Triple::ArchType)ZigLLVM_renderscript64 == Triple::renderscript64, ""); +static_assert((Triple::ArchType)ZigLLVM_ve == Triple::ve, ""); static_assert((Triple::ArchType)ZigLLVM_LastArchType == Triple::LastArchType, ""); static_assert((Triple::SubArchType)ZigLLVM_NoSubArch == Triple::NoSubArch, ""); @@ -1229,6 +1239,7 @@ static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v4 == Triple::KalimbaS static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, ""); static_assert((Triple::SubArchType)ZigLLVM_KalimbaSubArch_v5 == Triple::KalimbaSubArch_v5, ""); static_assert((Triple::SubArchType)ZigLLVM_MipsSubArch_r6 == Triple::MipsSubArch_r6, ""); +static_assert((Triple::SubArchType)ZigLLVM_PPCSubArch_spe == Triple::PPCSubArch_spe, ""); static_assert((Triple::VendorType)ZigLLVM_UnknownVendor == Triple::UnknownVendor, ""); static_assert((Triple::VendorType)ZigLLVM_Apple == Triple::Apple, ""); @@ -1299,8 +1310,6 @@ static_assert((Triple::EnvironmentType)ZigLLVM_GNUX32 == Triple::GNUX32, ""); static_assert((Triple::EnvironmentType)ZigLLVM_CODE16 == Triple::CODE16, ""); static_assert((Triple::EnvironmentType)ZigLLVM_EABI == Triple::EABI, ""); static_assert((Triple::EnvironmentType)ZigLLVM_EABIHF == Triple::EABIHF, ""); -static_assert((Triple::EnvironmentType)ZigLLVM_ELFv1 == Triple::ELFv1, ""); -static_assert((Triple::EnvironmentType)ZigLLVM_ELFv2 == Triple::ELFv2, ""); static_assert((Triple::EnvironmentType)ZigLLVM_Android == Triple::Android, ""); static_assert((Triple::EnvironmentType)ZigLLVM_Musl == Triple::Musl, ""); static_assert((Triple::EnvironmentType)ZigLLVM_MuslEABI == Triple::MuslEABI, ""); @@ -1310,6 +1319,7 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Itanium == Triple::Itanium, ""); static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, ""); static_assert((Triple::EnvironmentType)ZigLLVM_CoreCLR == Triple::CoreCLR, ""); static_assert((Triple::EnvironmentType)ZigLLVM_Simulator == Triple::Simulator, ""); +static_assert((Triple::EnvironmentType)ZigLLVM_MacABI == Triple::MacABI, ""); static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, ""); static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, ""); diff --git a/src/zig_llvm.h b/src/zig_llvm.h index ba9816b4f8..aa2c72df3e 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -327,8 +327,9 @@ enum ZigLLVM_ArchType { ZigLLVM_wasm64, // WebAssembly with 64-bit pointers ZigLLVM_renderscript32, // 32-bit RenderScript ZigLLVM_renderscript64, // 64-bit RenderScript + ZigLLVM_ve, // NEC SX-Aurora Vector Engine - ZigLLVM_LastArchType = ZigLLVM_renderscript64 + ZigLLVM_LastArchType = ZigLLVM_ve }; // synchronize with lists in target.cpp @@ -364,6 +365,8 @@ enum ZigLLVM_SubArchType { ZigLLVM_KalimbaSubArch_v5, ZigLLVM_MipsSubArch_r6, + + ZigLLVM_PPCSubArch_spe, }; enum ZigLLVM_VendorType { @@ -444,8 +447,6 @@ enum ZigLLVM_EnvironmentType { ZigLLVM_CODE16, ZigLLVM_EABI, ZigLLVM_EABIHF, - ZigLLVM_ELFv1, - ZigLLVM_ELFv2, ZigLLVM_Android, ZigLLVM_Musl, ZigLLVM_MuslEABI, @@ -531,7 +532,9 @@ ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os); ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi); ZIG_EXTERN_C bool ZigLLDLink(enum ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, - void (*append_diagnostic)(void *, const char *, size_t), void *context); + void (*append_diagnostic_stdout)(void *, const char *, size_t), + void (*append_diagnostic_stderr)(void *, const char *, size_t), + void *context); ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size_t file_name_count, enum ZigLLVM_OSType os_type); -- cgit v1.2.3 From 79fb48601749f93541800cff82f3506931dd433c Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 23 Jan 2020 17:28:13 -0500 Subject: link: update to llvm 10 API --- src/link.cpp | 9 +++++++-- src/zig_llvm.cpp | 9 ++++----- src/zig_llvm.h | 5 ++--- 3 files changed, 13 insertions(+), 10 deletions(-) (limited to 'src/zig_llvm.cpp') diff --git a/src/link.cpp b/src/link.cpp index 61a5ad5664..efb60976cb 100644 --- a/src/link.cpp +++ b/src/link.cpp @@ -1894,9 +1894,14 @@ static void link_diag_callback(void *context, const char *ptr, size_t len) { buf_append_mem(diag, ptr, len); } -static bool zig_lld_link(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, Buf *diag) { +static bool zig_lld_link(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, + Buf *diag) +{ + Buf *stdout_diag = buf_alloc(); buf_resize(diag, 0); - return ZigLLDLink(oformat, args, arg_count, link_diag_callback, diag); + bool result = ZigLLDLink(oformat, args, arg_count, link_diag_callback, stdout_diag, diag); + buf_destroy(stdout_diag); + return result; } static void add_uefi_link_args(LinkJob *lj) { diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 0cbaa8047f..aa635e4274 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -1077,14 +1077,13 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, - void (*append_diagnostic_stdout)(void *, const char *, size_t), - void (*append_diagnostic_stderr)(void *, const char *, size_t), - void *context) + void (*append_diagnostic)(void *, const char *, size_t), + void *context_stdout, void *context_stderr) { ArrayRef array_ref_args(args, arg_count); - MyOStream diag_stdout(append_diagnostic_stdout, context); - MyOStream diag_stderr(append_diagnostic_stderr, context); + MyOStream diag_stdout(append_diagnostic, context_stdout); + MyOStream diag_stderr(append_diagnostic, context_stderr); switch (oformat) { case ZigLLVM_UnknownObjectFormat: diff --git a/src/zig_llvm.h b/src/zig_llvm.h index aa2c72df3e..09f07ff767 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -532,9 +532,8 @@ ZIG_EXTERN_C const char *ZigLLVMGetOSTypeName(enum ZigLLVM_OSType os); ZIG_EXTERN_C const char *ZigLLVMGetEnvironmentTypeName(enum ZigLLVM_EnvironmentType abi); ZIG_EXTERN_C bool ZigLLDLink(enum ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_count, - void (*append_diagnostic_stdout)(void *, const char *, size_t), - void (*append_diagnostic_stderr)(void *, const char *, size_t), - void *context); + void (*append_diagnostic)(void *, const char *, size_t), + void *context_stdout, void *context_stderr); ZIG_EXTERN_C bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size_t file_name_count, enum ZigLLVM_OSType os_type); -- cgit v1.2.3