Commit 8f92a49dfd

Andrew Kelley <andrew@ziglang.org>
2019-07-17 04:23:48
update to llvm9 trunk
1 parent c0b4121
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)
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)
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")
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[] = {
src/target.hpp
@@ -48,6 +48,7 @@ enum Os {
     OsHermitCore,
     OsHurd,
     OsWASI,
+    OsEmscripten,
     OsZen,
     OsUefi,
 };
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, "");
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
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
 ```