From c541ac240c3ad17dda964f9de085a5e8f5472c7a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 22 Mar 2018 20:59:26 -0400 Subject: use the llvm API for creating memcpy and memset instructions --- src/zig_llvm.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/zig_llvm.cpp') diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index b4eef13cc1..3eb550dcc4 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -207,6 +207,20 @@ LLVMValueRef ZigLLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, LLVMValueRef *A return wrap(unwrap(B)->Insert(call_inst)); } +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); + 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); + return wrap(call_inst); +} + void ZigLLVMFnSetSubprogram(LLVMValueRef fn, ZigLLVMDISubprogram *subprogram) { assert( isa(unwrap(fn)) ); Function *unwrapped_function = reinterpret_cast(unwrap(fn)); -- cgit v1.2.3 From 5800faa31859afb83d556a67747251e20c3e4b48 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 4 Apr 2018 18:27:52 -0400 Subject: update to latest llvm API --- src/target.cpp | 2 +- src/zig_llvm.cpp | 1 + src/zig_llvm.h | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/zig_llvm.cpp') diff --git a/src/target.cpp b/src/target.cpp index a8a58013ff..5dcf98c3a2 100644 --- a/src/target.cpp +++ b/src/target.cpp @@ -162,6 +162,7 @@ static const Os os_list[] = { OsZen, }; +// Coordinate with zig_llvm.h static const ZigLLVM_EnvironmentType environ_list[] = { ZigLLVM_UnknownEnvironment, @@ -182,7 +183,6 @@ static const ZigLLVM_EnvironmentType environ_list[] = { ZigLLVM_Itanium, ZigLLVM_Cygnus, ZigLLVM_CoreCLR, - ZigLLVM_OpenCL, ZigLLVM_Simulator, }; diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 3eb550dcc4..ba915bf064 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include diff --git a/src/zig_llvm.h b/src/zig_llvm.h index af92850fc4..a63524281a 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -376,7 +376,6 @@ enum ZigLLVM_EnvironmentType { ZigLLVM_Itanium, ZigLLVM_Cygnus, ZigLLVM_CoreCLR, - ZigLLVM_OpenCL, ZigLLVM_Simulator, ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator -- cgit v1.2.3 From 8efb3f5e197edf2debebf0557c74fef2541cc117 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sat, 26 May 2018 12:18:13 -0400 Subject: update to latest LLVM API --- src/translate_c.cpp | 3 +-- src/zig_llvm.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/zig_llvm.cpp') diff --git a/src/translate_c.cpp b/src/translate_c.cpp index bfd683d9ee..ce0eda5d50 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -4658,7 +4658,6 @@ int parse_h_file(ImportTableEntry *import, ZigList *errors, const ch std::shared_ptr pch_container_ops = std::make_shared(); - bool skip_function_bodies = false; bool only_local_decls = true; bool capture_diagnostics = true; bool user_files_are_volatile = true; @@ -4671,7 +4670,7 @@ int parse_h_file(ImportTableEntry *import, ZigList *errors, const ch &clang_argv.at(0), &clang_argv.last(), pch_container_ops, diags, resources_path, only_local_decls, capture_diagnostics, None, true, 0, TU_Complete, - false, false, allow_pch_with_compiler_errors, skip_function_bodies, + false, false, allow_pch_with_compiler_errors, SkipFunctionBodiesScope::None, single_file_parse, user_files_are_volatile, for_serialization, None, &err_unit, nullptr)); diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 22fd409859..8cd3e6fb78 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -162,7 +162,7 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM abort(); } - if (target_machine->addPassesToEmitFile(MPM, dest, ft)) { + if (target_machine->addPassesToEmitFile(MPM, dest, nullptr, ft)) { *error_message = strdup("TargetMachine can't emit a file of this type"); return true; } -- cgit v1.2.3 From 84a700f97240eb2d4c65554d9be43bae9fa6d4ae Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 14 Jun 2018 18:28:42 -0400 Subject: llvm7: find external liblldWasm and update for newest lld macho API --- cmake/Findlld.cmake | 1 + src/zig_llvm.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src/zig_llvm.cpp') diff --git a/cmake/Findlld.cmake b/cmake/Findlld.cmake index d3c9011205..1c4e9163a3 100644 --- a/cmake/Findlld.cmake +++ b/cmake/Findlld.cmake @@ -33,6 +33,7 @@ else() FIND_AND_ADD_LLD_LIB(lldELF) FIND_AND_ADD_LLD_LIB(lldCOFF) FIND_AND_ADD_LLD_LIB(lldMachO) + FIND_AND_ADD_LLD_LIB(lldWasm) FIND_AND_ADD_LLD_LIB(lldReaderWriter) FIND_AND_ADD_LLD_LIB(lldCore) FIND_AND_ADD_LLD_LIB(lldYAML) diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index b990ae2310..95d7d65d99 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -850,7 +850,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_ return lld::elf::link(array_ref_args, false, diag); case ZigLLVM_MachO: - return lld::mach_o::link(array_ref_args, diag); + return lld::mach_o::link(array_ref_args, false, diag); case ZigLLVM_Wasm: return lld::wasm::link(array_ref_args, false, diag); -- cgit v1.2.3 From 9665cfe027c70a84cb6351ea6ecb833a728736aa Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 3 Jul 2018 03:48:47 -0400 Subject: update for latest llvm --- src/translate_c.cpp | 3 +++ src/zig_llvm.cpp | 2 ++ src/zig_llvm.h | 1 + 3 files changed, 6 insertions(+) (limited to 'src/zig_llvm.cpp') diff --git a/src/translate_c.cpp b/src/translate_c.cpp index 55333112c9..92ee306e90 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -3619,6 +3619,9 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt, case Stmt::SEHTryStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C SEHTryStmtClass"); return ErrorUnexpected; + case Stmt::FixedPointLiteralClass: + emit_warning(c, stmt->getLocStart(), "TODO handle C FixedPointLiteralClass"); + return ErrorUnexpected; } zig_unreachable(); } diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index 95d7d65d99..f53e097577 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -707,6 +707,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) { switch (sub_arch) { case ZigLLVM_NoSubArch: return "(none)"; + case ZigLLVM_ARMSubArch_v8_4a: + return "v8_4a"; case ZigLLVM_ARMSubArch_v8_3a: return "v8_3a"; case ZigLLVM_ARMSubArch_v8_2a: diff --git a/src/zig_llvm.h b/src/zig_llvm.h index e26a081761..19e8095c3f 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -268,6 +268,7 @@ enum ZigLLVM_ArchType { enum ZigLLVM_SubArchType { ZigLLVM_NoSubArch, + ZigLLVM_ARMSubArch_v8_4a, ZigLLVM_ARMSubArch_v8_3a, ZigLLVM_ARMSubArch_v8_2a, ZigLLVM_ARMSubArch_v8_1a, -- cgit v1.2.3