authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-08-10 18:14:09-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-19 09:37:30-07:00
logcd8234c3ba6a624fa9d21c66d7999459f51b4969
tree8b10460ec87944afe05e12e93aeb65a967618c3f
parentdbf8fb78430895b0c96109754f27f5990212881e

update for LLVM 17 new target data

New OSs: * UEFI * LiteOS New ABI: * OpenHOS Also update the LLD driver API wrappers.

4 files changed, 50 insertions(+), 12 deletions(-)

lib/std/target.zig+2-1
......@@ -28,6 +28,7 @@ pub const Target = struct {
2828 netbsd,
2929 openbsd,
3030 solaris,
31 uefi,
3132 windows,
3233 zos,
3334 haiku,
......@@ -52,7 +53,7 @@ pub const Target = struct {
5253 wasi,
5354 emscripten,
5455 shadermodel,
55 uefi,
56 liteos,
5657 opencl,
5758 glsl450,
5859 vulkan,
src/codegen/llvm/bindings.zig+2
......@@ -1167,6 +1167,7 @@ pub const OSType = enum(c_int) {
11671167 NetBSD,
11681168 OpenBSD,
11691169 Solaris,
1170 UEFI,
11701171 Win32,
11711172 ZOS,
11721173 Haiku,
......@@ -1191,6 +1192,7 @@ pub const OSType = enum(c_int) {
11911192 WASI,
11921193 Emscripten,
11931194 ShaderModel,
1195 LiteOS,
11941196};
11951197
11961198pub const ArchType = enum(c_int) {
src/zig_llvm.cpp+39-6
......@@ -35,7 +35,6 @@
3535#include <llvm/IR/PassManager.h>
3636#include <llvm/IR/Verifier.h>
3737#include <llvm/InitializePasses.h>
38#include <llvm/MC/SubtargetFeature.h>
3938#include <llvm/MC/TargetRegistry.h>
4039#include <llvm/Passes/OptimizationLevel.h>
4140#include <llvm/Passes/PassBuilder.h>
......@@ -47,10 +46,8 @@
4746#include <llvm/Object/COFFModuleDefinition.h>
4847#include <llvm/PassRegistry.h>
4948#include <llvm/Support/CommandLine.h>
50#include <llvm/Support/Host.h>
5149#include <llvm/Support/FileSystem.h>
5250#include <llvm/Support/Process.h>
53#include <llvm/Support/TargetParser.h>
5451#include <llvm/Support/TimeProfiler.h>
5552#include <llvm/Support/Timer.h>
5653#include <llvm/Support/raw_ostream.h>
......@@ -58,7 +55,6 @@
5855#include <llvm/Target/CodeGenCWrappers.h>
5956#include <llvm/Transforms/IPO.h>
6057#include <llvm/Transforms/IPO/AlwaysInliner.h>
61#include <llvm/Transforms/IPO/PassManagerBuilder.h>
6258#include <llvm/Transforms/Instrumentation/ThreadSanitizer.h>
6359#include <llvm/Transforms/Scalar.h>
6460#include <llvm/Transforms/Utils.h>
......@@ -1103,6 +1099,24 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
11031099 return false;
11041100}
11051101
1102// The header file in LLD 16 exposed these functions. As of 17 they are only
1103// exposed via a macro ("LLD_HAS_DRIVER") which I have copied and pasted the
1104// body of here so that you don't have to wonder what it is doing.
1105namespace lld {
1106 namespace coff {
1107 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1108 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1109 }
1110 namespace elf {
1111 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1112 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1113 }
1114 namespace wasm {
1115 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1116 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1117 }
1118}
1119
11061120bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
11071121 std::vector<const char *> args(argv, argv + argc);
11081122 return lld::coff::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
......@@ -1249,6 +1263,7 @@ static_assert((Triple::OSType)ZigLLVM_MacOSX == Triple::MacOSX, "");
12491263static_assert((Triple::OSType)ZigLLVM_NetBSD == Triple::NetBSD, "");
12501264static_assert((Triple::OSType)ZigLLVM_OpenBSD == Triple::OpenBSD, "");
12511265static_assert((Triple::OSType)ZigLLVM_Solaris == Triple::Solaris, "");
1266static_assert((Triple::OSType)ZigLLVM_UEFI == Triple::UEFI, "");
12521267static_assert((Triple::OSType)ZigLLVM_Win32 == Triple::Win32, "");
12531268static_assert((Triple::OSType)ZigLLVM_ZOS == Triple::ZOS, "");
12541269static_assert((Triple::OSType)ZigLLVM_Haiku == Triple::Haiku, "");
......@@ -1270,6 +1285,8 @@ static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, "");
12701285static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, "");
12711286static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, "");
12721287static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, "");
1288static_assert((Triple::OSType)ZigLLVM_ShaderModel == Triple::ShaderModel, "");
1289static_assert((Triple::OSType)ZigLLVM_LiteOS == Triple::LiteOS, "");
12731290static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
12741291
12751292static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, "");
......@@ -1297,6 +1314,22 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, "");
12971314static_assert((Triple::EnvironmentType)ZigLLVM_CoreCLR == Triple::CoreCLR, "");
12981315static_assert((Triple::EnvironmentType)ZigLLVM_Simulator == Triple::Simulator, "");
12991316static_assert((Triple::EnvironmentType)ZigLLVM_MacABI == Triple::MacABI, "");
1317static_assert((Triple::EnvironmentType)ZigLLVM_Pixel == Triple::Pixel, "");
1318static_assert((Triple::EnvironmentType)ZigLLVM_Vertex == Triple::Vertex, "");
1319static_assert((Triple::EnvironmentType)ZigLLVM_Geometry == Triple::Geometry, "");
1320static_assert((Triple::EnvironmentType)ZigLLVM_Hull == Triple::Hull, "");
1321static_assert((Triple::EnvironmentType)ZigLLVM_Domain == Triple::Domain, "");
1322static_assert((Triple::EnvironmentType)ZigLLVM_Compute == Triple::Compute, "");
1323static_assert((Triple::EnvironmentType)ZigLLVM_Library == Triple::Library, "");
1324static_assert((Triple::EnvironmentType)ZigLLVM_RayGeneration == Triple::RayGeneration, "");
1325static_assert((Triple::EnvironmentType)ZigLLVM_Intersection == Triple::Intersection, "");
1326static_assert((Triple::EnvironmentType)ZigLLVM_AnyHit == Triple::AnyHit, "");
1327static_assert((Triple::EnvironmentType)ZigLLVM_ClosestHit == Triple::ClosestHit, "");
1328static_assert((Triple::EnvironmentType)ZigLLVM_Miss == Triple::Miss, "");
1329static_assert((Triple::EnvironmentType)ZigLLVM_Callable == Triple::Callable, "");
1330static_assert((Triple::EnvironmentType)ZigLLVM_Mesh == Triple::Mesh, "");
1331static_assert((Triple::EnvironmentType)ZigLLVM_Amplification == Triple::Amplification, "");
1332static_assert((Triple::EnvironmentType)ZigLLVM_OpenHOS == Triple::OpenHOS, "");
13001333static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");
13011334
13021335static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");
......@@ -1334,8 +1367,8 @@ static_assert((CallingConv::ID)ZigLLVM_Intel_OCL_BI == llvm::CallingConv::Intel_
13341367static_assert((CallingConv::ID)ZigLLVM_X86_64_SysV == llvm::CallingConv::X86_64_SysV, "");
13351368static_assert((CallingConv::ID)ZigLLVM_Win64 == llvm::CallingConv::Win64, "");
13361369static_assert((CallingConv::ID)ZigLLVM_X86_VectorCall == llvm::CallingConv::X86_VectorCall, "");
1337static_assert((CallingConv::ID)ZigLLVM_HHVM == llvm::CallingConv::HHVM, "");
1338static_assert((CallingConv::ID)ZigLLVM_HHVM_C == llvm::CallingConv::HHVM_C, "");
1370static_assert((CallingConv::ID)ZigLLVM_DUMMY_HHVM == llvm::CallingConv::DUMMY_HHVM, "");
1371static_assert((CallingConv::ID)ZigLLVM_DUMMY_HHVM_C == llvm::CallingConv::DUMMY_HHVM_C, "");
13391372static_assert((CallingConv::ID)ZigLLVM_X86_INTR == llvm::CallingConv::X86_INTR, "");
13401373static_assert((CallingConv::ID)ZigLLVM_AVR_INTR == llvm::CallingConv::AVR_INTR, "");
13411374static_assert((CallingConv::ID)ZigLLVM_AVR_SIGNAL == llvm::CallingConv::AVR_SIGNAL, "");
src/zig_llvm.h+7-5
......@@ -13,7 +13,6 @@
1313#include <llvm-c/Core.h>
1414#include <llvm-c/Analysis.h>
1515#include <llvm-c/Target.h>
16#include <llvm-c/Initialization.h>
1716#include <llvm-c/TargetMachine.h>
1817
1918#ifdef __cplusplus
......@@ -102,8 +101,8 @@ enum ZigLLVM_CallingConv {
102101 ZigLLVM_X86_64_SysV = 78,
103102 ZigLLVM_Win64 = 79,
104103 ZigLLVM_X86_VectorCall = 80,
105 ZigLLVM_HHVM = 81,
106 ZigLLVM_HHVM_C = 82,
104 ZigLLVM_DUMMY_HHVM = 81,
105 ZigLLVM_DUMMY_HHVM_C = 82,
107106 ZigLLVM_X86_INTR = 83,
108107 ZigLLVM_AVR_INTR = 84,
109108 ZigLLVM_AVR_SIGNAL = 85,
......@@ -402,6 +401,7 @@ enum ZigLLVM_OSType {
402401 ZigLLVM_NetBSD,
403402 ZigLLVM_OpenBSD,
404403 ZigLLVM_Solaris,
404 ZigLLVM_UEFI,
405405 ZigLLVM_Win32,
406406 ZigLLVM_ZOS,
407407 ZigLLVM_Haiku,
......@@ -426,7 +426,8 @@ enum ZigLLVM_OSType {
426426 ZigLLVM_WASI, // Experimental WebAssembly OS
427427 ZigLLVM_Emscripten,
428428 ZigLLVM_ShaderModel, // DirectX ShaderModel
429 ZigLLVM_LastOSType = ZigLLVM_ShaderModel
429 ZigLLVM_LiteOS,
430 ZigLLVM_LastOSType = ZigLLVM_LiteOS
430431};
431432
432433// Synchronize with target.cpp::abi_list
......@@ -474,8 +475,9 @@ enum ZigLLVM_EnvironmentType {
474475 ZigLLVM_Callable,
475476 ZigLLVM_Mesh,
476477 ZigLLVM_Amplification,
478 ZigLLVM_OpenHOS,
477479
478 ZigLLVM_LastEnvironmentType = ZigLLVM_Amplification
480 ZigLLVM_LastEnvironmentType = ZigLLVM_OpenHOS
479481};
480482
481483enum ZigLLVM_ObjectFormatType {