From 8f92a49dfde5e8690525da028844cb7c1188d397 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 16 Jul 2019 22:23:48 -0400 Subject: [PATCH] update to llvm9 trunk --- README.md | 10 +++++----- cmake/Findclang.cmake | 16 ++++++++-------- cmake/Findlld.cmake | 14 +++++++------- cmake/Findllvm.cmake | 18 +++++++++--------- src/target.cpp | 7 +++++++ src/target.hpp | 1 + src/zig_llvm.cpp | 12 +++++++++++- src/zig_llvm.h | 15 +++++++++++---- 8 files changed, 59 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 91178f87de..2e94e68763 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,14 @@ Note that you can * cmake >= 2.8.5 * gcc >= 5.0.0 or clang >= 3.6.0 - * LLVM, Clang, LLD development libraries == 8.x, compiled with the same gcc or clang version above + * LLVM, Clang, LLD development libraries == 9.x, compiled with the same gcc or clang version above - Use the system package manager, or [build from source](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#posix). ##### Windows * cmake >= 2.8.5 * Microsoft Visual Studio 2017 (version 15.8) - * LLVM, Clang, LLD development libraries == 8.x, compiled with the same MSVC version above + * LLVM, Clang, LLD development libraries == 9.x, compiled with the same MSVC version above - Use the [pre-built binaries](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#pre-built-binaries) or [build from source](https://github.com/ziglang/zig/wiki/How-to-build-LLVM,-libclang,-and-liblld-from-source#windows). #### Instructions @@ -50,11 +50,11 @@ make install ##### MacOS ``` -brew install cmake llvm@8 -brew outdated llvm@8 || brew upgrade llvm@8 +brew install cmake llvm@9 +brew outdated llvm@9 || brew upgrade llvm@9 mkdir build cd build -cmake .. -DCMAKE_PREFIX_PATH=/usr/local/Cellar/llvm/8.0.0_1 +cmake .. -DCMAKE_PREFIX_PATH=/usr/local/Cellar/llvm/9.0.0 make install ``` diff --git a/cmake/Findclang.cmake b/cmake/Findclang.cmake index 5555485d89..704eba9814 100644 --- a/cmake/Findclang.cmake +++ b/cmake/Findclang.cmake @@ -38,10 +38,10 @@ if(MSVC) else() find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h PATHS - /usr/lib/llvm/8/include - /usr/lib/llvm-8/include - /usr/lib/llvm-8.0/include - /usr/local/llvm80/include + /usr/lib/llvm/9/include + /usr/lib/llvm-9/include + /usr/lib/llvm-9.0/include + /usr/local/llvm90/include /mingw64/include) macro(FIND_AND_ADD_CLANG_LIB _libname_) @@ -49,10 +49,10 @@ else() find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_} PATHS ${CLANG_LIBDIRS} - /usr/lib/llvm/8/lib - /usr/lib/llvm-8/lib - /usr/lib/llvm-8.0/lib - /usr/local/llvm80/lib + /usr/lib/llvm/9/lib + /usr/lib/llvm-9/lib + /usr/lib/llvm-9.0/lib + /usr/local/llvm90/lib /mingw64/lib /c/msys64/mingw64/lib c:\\msys64\\mingw64\\lib) diff --git a/cmake/Findlld.cmake b/cmake/Findlld.cmake index 1895612eb9..878a750159 100644 --- a/cmake/Findlld.cmake +++ b/cmake/Findlld.cmake @@ -8,14 +8,14 @@ find_path(LLD_INCLUDE_DIRS NAMES lld/Common/Driver.h PATHS - /usr/lib/llvm-8.0/include - /usr/local/llvm80/include + /usr/lib/llvm-9.0/include + /usr/local/llvm90/include /mingw64/include) -find_library(LLD_LIBRARY NAMES lld-8.0 lld80 lld +find_library(LLD_LIBRARY NAMES lld-9.0 lld90 lld PATHS - /usr/lib/llvm-8.0/lib - /usr/local/llvm80/lib + /usr/lib/llvm-9.0/lib + /usr/local/llvm90/lib ) if(EXISTS ${LLD_LIBRARY}) set(LLD_LIBRARIES ${LLD_LIBRARY}) @@ -24,8 +24,8 @@ else() string(TOUPPER ${_libname_} _prettylibname_) find_library(LLD_${_prettylibname_}_LIB NAMES ${_libname_} PATHS - /usr/lib/llvm-8.0/lib - /usr/local/llvm80/lib + /usr/lib/llvm-9.0/lib + /usr/local/llvm90/lib /mingw64/lib /c/msys64/mingw64/lib c:/msys64/mingw64/lib) diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake index 3eb6bd9003..8a75f59a7c 100644 --- a/cmake/Findllvm.cmake +++ b/cmake/Findllvm.cmake @@ -8,12 +8,12 @@ # LLVM_LIBDIRS find_program(LLVM_CONFIG_EXE - NAMES llvm-config-8 llvm-config-8.0 llvm-config80 llvm-config + NAMES llvm-config-9 llvm-config-9.0 llvm-config90 llvm-config PATHS "/mingw64/bin" "/c/msys64/mingw64/bin" "c:/msys64/mingw64/bin" - "C:/Libraries/llvm-8.0.0/bin") + "C:/Libraries/llvm-9.0.0/bin") if ("${LLVM_CONFIG_EXE}" STREQUAL "LLVM_CONFIG_EXE-NOTFOUND") message(FATAL_ERROR "unable to find llvm-config") @@ -28,14 +28,14 @@ execute_process( OUTPUT_VARIABLE LLVM_CONFIG_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) -if("${LLVM_CONFIG_VERSION}" VERSION_LESS 8) - message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") +if("${LLVM_CONFIG_VERSION}" VERSION_LESS 9) + message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") endif() -if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 9) - message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") +if("${LLVM_CONFIG_VERSION}" VERSION_EQUAL 10) + message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") endif() -if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 9) - message(FATAL_ERROR "expected LLVM 8.x but found ${LLVM_CONFIG_VERSION}") +if("${LLVM_CONFIG_VERSION}" VERSION_GREATER 10) + message(FATAL_ERROR "expected LLVM 9.x but found ${LLVM_CONFIG_VERSION}") endif() execute_process( @@ -112,7 +112,7 @@ execute_process( set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS}) if(NOT LLVM_LIBRARIES) - find_library(LLVM_LIBRARIES NAMES LLVM LLVM-8 LLVM-8.0) + find_library(LLVM_LIBRARIES NAMES LLVM LLVM-9 LLVM-9.0) endif() link_directories("${CMAKE_PREFIX_PATH}/lib") diff --git a/src/target.cpp b/src/target.cpp index 804c421618..1c5a34e54f 100644 --- a/src/target.cpp +++ b/src/target.cpp @@ -33,6 +33,7 @@ static const ZigLLVM_SubArchType subarch_list_arm32[] = { ZigLLVM_ARMSubArch_v8r, ZigLLVM_ARMSubArch_v8m_baseline, ZigLLVM_ARMSubArch_v8m_mainline, + ZigLLVM_ARMSubArch_v8_1m_mainline, ZigLLVM_ARMSubArch_v7, ZigLLVM_ARMSubArch_v7em, ZigLLVM_ARMSubArch_v7m, @@ -76,6 +77,7 @@ static const ZigLLVM_ArchType arch_list[] = { ZigLLVM_armeb, // ARM (big endian): armeb ZigLLVM_aarch64, // AArch64 (little endian): aarch64 ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be + ZigLLVM_aarch64_32, // AArch64 (little endian) ILP32: aarch64_32 ZigLLVM_arc, // ARC: Synopsys ARC ZigLLVM_avr, // AVR: Atmel AVR microcontroller ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) @@ -176,6 +178,7 @@ static const Os os_list[] = { OsHermitCore, OsHurd, OsWASI, + OsEmscripten, OsZen, OsUefi, }; @@ -193,15 +196,19 @@ static const ZigLLVM_EnvironmentType abi_list[] = { ZigLLVM_CODE16, ZigLLVM_EABI, ZigLLVM_EABIHF, + ZigLLVM_ELFv1, + ZigLLVM_ELFv2, ZigLLVM_Android, ZigLLVM_Musl, ZigLLVM_MuslEABI, ZigLLVM_MuslEABIHF, + ZigLLVM_MSVC, ZigLLVM_Itanium, ZigLLVM_Cygnus, ZigLLVM_CoreCLR, ZigLLVM_Simulator, + ZigLLVM_MacABI, }; static const ZigLLVM_ObjectFormatType oformat_list[] = { diff --git a/src/target.hpp b/src/target.hpp index fcda9955b9..0e7dc6686d 100644 --- a/src/target.hpp +++ b/src/target.hpp @@ -48,6 +48,7 @@ enum Os { OsHermitCore, OsHurd, OsWASI, + OsEmscripten, OsZen, OsUefi, }; diff --git a/src/zig_llvm.cpp b/src/zig_llvm.cpp index c51c9e1a50..c033d7af96 100644 --- a/src/zig_llvm.cpp +++ b/src/zig_llvm.cpp @@ -176,7 +176,6 @@ bool ZigLLVMTargetMachineEmitToFile(LLVMTargetMachineRef targ_machine_ref, LLVMM PMBuilder->SizeLevel = is_small ? 2 : 0; PMBuilder->DisableTailCalls = is_debug; - PMBuilder->DisableUnitAtATime = is_debug; PMBuilder->DisableUnrollLoops = is_debug; PMBuilder->SLPVectorize = !is_debug; PMBuilder->LoopVectorize = !is_debug; @@ -805,6 +804,8 @@ const char *ZigLLVMGetSubArchTypeName(ZigLLVM_SubArchType sub_arch) { return "v8m_baseline"; case ZigLLVM_ARMSubArch_v8m_mainline: return "v8m_mainline"; + case ZigLLVM_ARMSubArch_v8_1m_mainline: + return "v8_1m_mainline"; case ZigLLVM_ARMSubArch_v7: return "v7"; case ZigLLVM_ARMSubArch_v7em: @@ -964,6 +965,7 @@ bool ZigLLDLink(ZigLLVM_ObjectFormatType oformat, const char **args, size_t arg_ switch (oformat) { case ZigLLVM_UnknownObjectFormat: + case ZigLLVM_XCOFF: assert(false); // unreachable case ZigLLVM_COFF: @@ -1043,6 +1045,7 @@ static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8 == Triple::ARMSubArch_v static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8r == Triple::ARMSubArch_v8r, ""); static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_baseline == Triple::ARMSubArch_v8m_baseline, ""); static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8m_mainline == Triple::ARMSubArch_v8m_mainline, ""); +static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v8_1m_mainline == Triple::ARMSubArch_v8_1m_mainline, ""); static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7 == Triple::ARMSubArch_v7, ""); static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7em == Triple::ARMSubArch_v7em, ""); static_assert((Triple::SubArchType)ZigLLVM_ARMSubArch_v7m == Triple::ARMSubArch_v7m, ""); @@ -1115,6 +1118,10 @@ static_assert((Triple::OSType)ZigLLVM_WatchOS == Triple::WatchOS, ""); static_assert((Triple::OSType)ZigLLVM_Mesa3D == Triple::Mesa3D, ""); static_assert((Triple::OSType)ZigLLVM_Contiki == Triple::Contiki, ""); static_assert((Triple::OSType)ZigLLVM_AMDPAL == Triple::AMDPAL, ""); +static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, ""); +static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, ""); +static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, ""); +static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, ""); static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, ""); static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, ""); @@ -1127,6 +1134,8 @@ 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, ""); @@ -1143,3 +1152,4 @@ static_assert((Triple::ObjectFormatType)ZigLLVM_COFF == Triple::COFF, ""); static_assert((Triple::ObjectFormatType)ZigLLVM_ELF == Triple::ELF, ""); static_assert((Triple::ObjectFormatType)ZigLLVM_MachO == Triple::MachO, ""); static_assert((Triple::ObjectFormatType)ZigLLVM_Wasm == Triple::Wasm, ""); +static_assert((Triple::ObjectFormatType)ZigLLVM_XCOFF == Triple::XCOFF, ""); diff --git a/src/zig_llvm.h b/src/zig_llvm.h index 8b7b0775f7..210f245efe 100644 --- a/src/zig_llvm.h +++ b/src/zig_llvm.h @@ -227,6 +227,7 @@ enum ZigLLVM_ArchType { ZigLLVM_armeb, // ARM (big endian): armeb ZigLLVM_aarch64, // AArch64 (little endian): aarch64 ZigLLVM_aarch64_be, // AArch64 (big endian): aarch64_be + ZigLLVM_aarch64_32, // AArch64 (little endian) ILP32: aarch64_32 ZigLLVM_arc, // ARC: Synopsys ARC ZigLLVM_avr, // AVR: Atmel AVR microcontroller ZigLLVM_bpfel, // eBPF or extended BPF or 64-bit BPF (little endian) @@ -289,6 +290,7 @@ enum ZigLLVM_SubArchType { ZigLLVM_ARMSubArch_v8r, ZigLLVM_ARMSubArch_v8m_baseline, ZigLLVM_ARMSubArch_v8m_mainline, + ZigLLVM_ARMSubArch_v8_1m_mainline, ZigLLVM_ARMSubArch_v7, ZigLLVM_ARMSubArch_v7em, ZigLLVM_ARMSubArch_v7m, @@ -370,11 +372,12 @@ enum ZigLLVM_OSType { ZigLLVM_HermitCore, // HermitCore Unikernel/Multikernel ZigLLVM_Hurd, // GNU/Hurd ZigLLVM_WASI, // Experimental WebAssembly OS + ZigLLVM_Emscripten, - ZigLLVM_LastOSType = ZigLLVM_WASI + ZigLLVM_LastOSType = ZigLLVM_Emscripten }; -// Synchronize with target.cpp::environ_list +// Synchronize with target.cpp::abi_list enum ZigLLVM_EnvironmentType { ZigLLVM_UnknownEnvironment, @@ -387,6 +390,8 @@ enum ZigLLVM_EnvironmentType { ZigLLVM_CODE16, ZigLLVM_EABI, ZigLLVM_EABIHF, + ZigLLVM_ELFv1, + ZigLLVM_ELFv2, ZigLLVM_Android, ZigLLVM_Musl, ZigLLVM_MuslEABI, @@ -396,9 +401,10 @@ enum ZigLLVM_EnvironmentType { ZigLLVM_Itanium, ZigLLVM_Cygnus, ZigLLVM_CoreCLR, - ZigLLVM_Simulator, + ZigLLVM_Simulator, // Simulator variants of other systems, e.g., Apple's iOS + ZigLLVM_MacABI, // Mac Catalyst variant of Apple's iOS deployment target. - ZigLLVM_LastEnvironmentType = ZigLLVM_Simulator + ZigLLVM_LastEnvironmentType = ZigLLVM_MacABI }; enum ZigLLVM_ObjectFormatType { @@ -408,6 +414,7 @@ enum ZigLLVM_ObjectFormatType { ZigLLVM_ELF, ZigLLVM_MachO, ZigLLVM_Wasm, + ZigLLVM_XCOFF, }; #define ZigLLVM_DIFlags_Zero 0U