summaryrefslogtreecommitdiff
path: root/data/_llvm10
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2019-12-19 18:03:42 -1000
committerSam Bingner <sam@bingner.com>2019-12-19 18:03:42 -1000
commite9c5d02e14b87f22c28605169df783feb8de7898 (patch)
tree3212a5852105216c3d7bb5bf2535bb24d4c41245 /data/_llvm10
parentbe093a95b6fc60b3d5544de115e8b87282969be4 (diff)
llvm with libtapi supporting v3 in progress
Diffstat (limited to 'data/_llvm10')
l---------data/_llvm10/_metadata/_libedit.dep1
-rw-r--r--data/_llvm10/_metadata/conflicts1
-rw-r--r--data/_llvm10/_metadata/depends1
-rw-r--r--data/_llvm10/_metadata/description1
-rw-r--r--data/_llvm10/_metadata/homepage1
-rw-r--r--data/_llvm10/_metadata/in.1200.000
-rw-r--r--data/_llvm10/_metadata/in.1443.000
l---------data/_llvm10/_metadata/license1
l---------data/_llvm10/_metadata/maintainer1
-rw-r--r--data/_llvm10/_metadata/name1
l---------data/_llvm10/_metadata/ncurses.dep1
-rwxr-xr-xdata/_llvm10/_metadata/postinst24
-rwxr-xr-xdata/_llvm10/_metadata/prerm22
-rw-r--r--data/_llvm10/_metadata/priority1
-rw-r--r--data/_llvm10/_metadata/provides1
l---------data/_llvm10/_metadata/python.dep1
-rw-r--r--data/_llvm10/_metadata/replaces1
-rw-r--r--data/_llvm10/_metadata/role1
-rw-r--r--data/_llvm10/_metadata/section1
-rw-r--r--data/_llvm10/_metadata/tags1
-rw-r--r--data/_llvm10/_metadata/version1
l---------data/_llvm10/_metadata/xz.dep1
-rw-r--r--data/_llvm10/buildpath.diff41
-rw-r--r--data/_llvm10/debugserver.xml32
-rw-r--r--data/_llvm10/directory-watcher-mac.diff25
-rw-r--r--data/_llvm10/libtapi-arm64e.diff1618
-rw-r--r--data/_llvm10/libtapi-dynamic.diff-breaks91
-rw-r--r--data/_llvm10/lldbwut.diff105
-rw-r--r--data/_llvm10/make.sh80
-rw-r--r--data/_llvm10/mutex-availability.diff34
-rw-r--r--data/_llvm10/sdkpath.diff109
-rw-r--r--data/_llvm10/tapi-1000.10.8.tar.gzbin0 -> 205606 bytes
32 files changed, 2199 insertions, 0 deletions
diff --git a/data/_llvm10/_metadata/_libedit.dep b/data/_llvm10/_metadata/_libedit.dep
new file mode 120000
index 000000000..f493e4789
--- /dev/null
+++ b/data/_llvm10/_metadata/_libedit.dep
@@ -0,0 +1 @@
+../../_libedit \ No newline at end of file
diff --git a/data/_llvm10/_metadata/conflicts b/data/_llvm10/_metadata/conflicts
new file mode 100644
index 000000000..08f4c1128
--- /dev/null
+++ b/data/_llvm10/_metadata/conflicts
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang
diff --git a/data/_llvm10/_metadata/depends b/data/_llvm10/_metadata/depends
new file mode 100644
index 000000000..10ba93442
--- /dev/null
+++ b/data/_llvm10/_metadata/depends
@@ -0,0 +1 @@
+dpkg (>= 1.18.25-9)
diff --git a/data/_llvm10/_metadata/description b/data/_llvm10/_metadata/description
new file mode 100644
index 000000000..bc38f718d
--- /dev/null
+++ b/data/_llvm10/_metadata/description
@@ -0,0 +1 @@
+A toolkit for the construction of highly optimized compilers, optimizers, and runtime environments and a compiler front-end for the C family of languages (C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM compiler infrastructure project.
diff --git a/data/_llvm10/_metadata/homepage b/data/_llvm10/_metadata/homepage
new file mode 100644
index 000000000..3be368bd3
--- /dev/null
+++ b/data/_llvm10/_metadata/homepage
@@ -0,0 +1 @@
+https://www.llvm.org/
diff --git a/data/_llvm10/_metadata/in.1200.00 b/data/_llvm10/_metadata/in.1200.00
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/data/_llvm10/_metadata/in.1200.00
diff --git a/data/_llvm10/_metadata/in.1443.00 b/data/_llvm10/_metadata/in.1443.00
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/data/_llvm10/_metadata/in.1443.00
diff --git a/data/_llvm10/_metadata/license b/data/_llvm10/_metadata/license
new file mode 120000
index 000000000..eea9de8d1
--- /dev/null
+++ b/data/_llvm10/_metadata/license
@@ -0,0 +1 @@
+../../../licenses/bsd \ No newline at end of file
diff --git a/data/_llvm10/_metadata/maintainer b/data/_llvm10/_metadata/maintainer
new file mode 120000
index 000000000..573d7ebef
--- /dev/null
+++ b/data/_llvm10/_metadata/maintainer
@@ -0,0 +1 @@
+../../../people/sbingner \ No newline at end of file
diff --git a/data/_llvm10/_metadata/name b/data/_llvm10/_metadata/name
new file mode 100644
index 000000000..8e28c177c
--- /dev/null
+++ b/data/_llvm10/_metadata/name
@@ -0,0 +1 @@
+LLVM Clang
diff --git a/data/_llvm10/_metadata/ncurses.dep b/data/_llvm10/_metadata/ncurses.dep
new file mode 120000
index 000000000..a395fad08
--- /dev/null
+++ b/data/_llvm10/_metadata/ncurses.dep
@@ -0,0 +1 @@
+../../ncurses \ No newline at end of file
diff --git a/data/_llvm10/_metadata/postinst b/data/_llvm10/_metadata/postinst
new file mode 100755
index 000000000..4c8a40c3f
--- /dev/null
+++ b/data/_llvm10/_metadata/postinst
@@ -0,0 +1,24 @@
+#!/bin/bash
+LLVMPROGS="ar as bcanalyzer cxxdump cxxfilt diff dlltool dwarfdump nm objdump pdbutil profdata ranlib readelf readobj size split strings"
+
+case "$1" in
+ configure)
+ for prog in ${LLVMPROGS}; do
+ update-alternatives --quiet --install /usr/bin/${prog} ${prog} /usr/bin/llvm-${prog} 50
+ done
+ update-alternatives --quiet --install /usr/bin/cc cc /usr/bin/clang 50
+ update-alternatives --quiet --install /usr/bin/gcc gcc /usr/bin/clang 50
+ update-alternatives --quiet --install /usr/bin/cpp cpp /usr/bin/clang-cpp 50
+ update-alternatives --quiet --install /usr/bin/c++ c++ /usr/bin/clang++ 50
+ update-alternatives --quiet --install /usr/bin/g++ g++ /usr/bin/clang++ 50
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
diff --git a/data/_llvm10/_metadata/prerm b/data/_llvm10/_metadata/prerm
new file mode 100755
index 000000000..42f304a09
--- /dev/null
+++ b/data/_llvm10/_metadata/prerm
@@ -0,0 +1,22 @@
+#!/bin/bash
+LLVMPROGS="ar as bcanalyzer cxxdump cxxfilt diff dlltool dwarfdump nm objdump pdbutil profdata ranlib readelf readobj size split strings"
+case "$1" in
+ remove|deconfigure)
+ for prog in ${LLVMPROGS}; do
+ update-alternatives --quiet --remove ${prog} /usr/bin/llvm-${prog}
+ done
+ update-alternatives --quiet --remove cc /usr/bin/clang
+ update-alternatives --quiet --remove gcc /usr/bin/clang
+ update-alternatives --quiet --remove cpp /usr/bin/clang-cpp
+ update-alternatives --quiet --remove c++ /usr/bin/clang++
+ update-alternatives --quiet --remove g++ /usr/bin/clang++
+ ;;
+ upgrade)
+ ;;
+ failed-upgrade)
+ ;;
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
diff --git a/data/_llvm10/_metadata/priority b/data/_llvm10/_metadata/priority
new file mode 100644
index 000000000..134d9bc32
--- /dev/null
+++ b/data/_llvm10/_metadata/priority
@@ -0,0 +1 @@
+optional
diff --git a/data/_llvm10/_metadata/provides b/data/_llvm10/_metadata/provides
new file mode 100644
index 000000000..52db077d7
--- /dev/null
+++ b/data/_llvm10/_metadata/provides
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang, cc, gcc
diff --git a/data/_llvm10/_metadata/python.dep b/data/_llvm10/_metadata/python.dep
new file mode 120000
index 000000000..62afec14c
--- /dev/null
+++ b/data/_llvm10/_metadata/python.dep
@@ -0,0 +1 @@
+../../python \ No newline at end of file
diff --git a/data/_llvm10/_metadata/replaces b/data/_llvm10/_metadata/replaces
new file mode 100644
index 000000000..08f4c1128
--- /dev/null
+++ b/data/_llvm10/_metadata/replaces
@@ -0,0 +1 @@
+org.coolstar.llvm-clang64, org.coolstar.llvm-clang
diff --git a/data/_llvm10/_metadata/role b/data/_llvm10/_metadata/role
new file mode 100644
index 000000000..8d0320866
--- /dev/null
+++ b/data/_llvm10/_metadata/role
@@ -0,0 +1 @@
+developer
diff --git a/data/_llvm10/_metadata/section b/data/_llvm10/_metadata/section
new file mode 100644
index 000000000..e0eb96881
--- /dev/null
+++ b/data/_llvm10/_metadata/section
@@ -0,0 +1 @@
+Development
diff --git a/data/_llvm10/_metadata/tags b/data/_llvm10/_metadata/tags
new file mode 100644
index 000000000..ad5d50831
--- /dev/null
+++ b/data/_llvm10/_metadata/tags
@@ -0,0 +1 @@
+purpose::console
diff --git a/data/_llvm10/_metadata/version b/data/_llvm10/_metadata/version
new file mode 100644
index 000000000..7b3a6c14a
--- /dev/null
+++ b/data/_llvm10/_metadata/version
@@ -0,0 +1 @@
+10.0.0~svn-20191106+dcaf932
diff --git a/data/_llvm10/_metadata/xz.dep b/data/_llvm10/_metadata/xz.dep
new file mode 120000
index 000000000..d5eb7ae54
--- /dev/null
+++ b/data/_llvm10/_metadata/xz.dep
@@ -0,0 +1 @@
+../../xz \ No newline at end of file
diff --git a/data/_llvm10/buildpath.diff b/data/_llvm10/buildpath.diff
new file mode 100644
index 000000000..ffecb8996
--- /dev/null
+++ b/data/_llvm10/buildpath.diff
@@ -0,0 +1,41 @@
+diff -ur llvm-project-apple-stable-20191106/llvm/tools/llvm-config/llvm-config.cpp llvm-project-apple-stable-20191106+iOS/llvm/tools/llvm-config/llvm-config.cpp
+--- llvm-project-apple-stable-20191106/llvm/tools/llvm-config/llvm-config.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/llvm/tools/llvm-config/llvm-config.cpp 2019-12-06 09:02:23.000000000 -1000
+@@ -287,15 +287,15 @@
+
+ // Check to see if we are inside a development tree by comparing to possible
+ // locations (prefix style or CMake style).
+- if (sys::fs::equivalent(CurrentExecPrefix, LLVM_OBJ_ROOT)) {
++ if (sys::fs::equivalent(CurrentExecPrefix, "/usr/src/llvm/build")) {
+ IsInDevelopmentTree = true;
+ DevelopmentTreeLayout = CMakeStyle;
+- ActiveObjRoot = LLVM_OBJ_ROOT;
++ ActiveObjRoot = "/usr/src/llvm/build";
+ } else if (sys::fs::equivalent(sys::path::parent_path(CurrentExecPrefix),
+- LLVM_OBJ_ROOT)) {
++ "/usr/src/llvm/build")) {
+ IsInDevelopmentTree = true;
+ DevelopmentTreeLayout = CMakeBuildModeStyle;
+- ActiveObjRoot = LLVM_OBJ_ROOT;
++ ActiveObjRoot = "/usr/src/llvm/build";
+ } else {
+ IsInDevelopmentTree = false;
+ DevelopmentTreeLayout = CMakeStyle; // Initialized to avoid warnings.
+@@ -307,7 +307,7 @@
+ ActiveCMakeDir;
+ std::string ActiveIncludeOption;
+ if (IsInDevelopmentTree) {
+- ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
++ ActiveIncludeDir = std::string("/usr/src/llvm") + "/include";
+ ActivePrefix = CurrentExecPrefix;
+
+ // CMake organizes the products differently than a normal prefix style
+@@ -562,7 +562,7 @@
+ } else if (Arg == "--obj-root") {
+ OS << ActivePrefix << '\n';
+ } else if (Arg == "--src-root") {
+- OS << LLVM_SRC_ROOT << '\n';
++ OS << "/usr/src/llvm" << '\n';
+ } else if (Arg == "--ignore-libllvm") {
+ LinkDyLib = false;
+ LinkMode = BuiltSharedLibs ? LinkModeShared : LinkModeAuto;
diff --git a/data/_llvm10/debugserver.xml b/data/_llvm10/debugserver.xml
new file mode 100644
index 000000000..c42871716
--- /dev/null
+++ b/data/_llvm10/debugserver.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>platform-application</key>
+ <true/>
+ <key>com.apple.security.cs.debugger</key>
+ <true/>
+ <key>com.apple.backboardd.debugapplications</key>
+ <true/>
+ <key>com.apple.backboardd.launchapplications</key>
+ <true/>
+ <key>com.apple.diagnosticd.diagnostic</key>
+ <true/>
+ <key>com.apple.frontboard.debugapplications</key>
+ <true/>
+ <key>com.apple.frontboard.launchapplications</key>
+ <true/>
+ <key>com.apple.security.network.client</key>
+ <true/>
+ <key>com.apple.security.network.server</key>
+ <true/>
+ <key>com.apple.springboard.debugapplications</key>
+ <true/>
+ <key>com.apple.system-task-ports</key>
+ <true/>
+ <key>run-unsigned-code</key>
+ <true/>
+ <key>task_for_pid-allow</key>
+ <true/>
+</dict>
+</plist>
diff --git a/data/_llvm10/directory-watcher-mac.diff b/data/_llvm10/directory-watcher-mac.diff
new file mode 100644
index 000000000..efb62fde4
--- /dev/null
+++ b/data/_llvm10/directory-watcher-mac.diff
@@ -0,0 +1,25 @@
+diff -ur llvm-project-apple-stable-20191106/clang/lib/DirectoryWatcher/CMakeLists.txt llvm-project-apple-stable-20191106+iOS/clang/lib/DirectoryWatcher/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/clang/lib/DirectoryWatcher/CMakeLists.txt 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/clang/lib/DirectoryWatcher/CMakeLists.txt 2019-12-05 12:38:06.000000000 -1000
+@@ -9,7 +9,9 @@
+ check_include_files("CoreServices/CoreServices.h" HAVE_CORESERVICES)
+ if(HAVE_CORESERVICES)
+ list(APPEND DIRECTORY_WATCHER_SOURCES mac/DirectoryWatcher-mac.cpp)
+- set(DIRECTORY_WATCHER_LINK_LIBS "-framework CoreServices")
++ set(DIRECTORY_WATCHER_LINK_LIBS "-framework CoreServices -framework CoreFoundation")
++ else()
++ list(APPEND DIRECTORY_WATCHER_SOURCES default/DirectoryWatcher-not-implemented.cpp)
+ endif()
+ elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ check_include_files("sys/inotify.h" HAVE_INOTIFY)
+diff -ur llvm-project-apple-stable-20191106/clang/lib/DirectoryWatcher/mac/DirectoryWatcher-mac.cpp llvm-project-apple-stable-20191106+iOS/clang/lib/DirectoryWatcher/mac/DirectoryWatcher-mac.cpp
+--- llvm-project-apple-stable-20191106/clang/lib/DirectoryWatcher/mac/DirectoryWatcher-mac.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/clang/lib/DirectoryWatcher/mac/DirectoryWatcher-mac.cpp 2019-12-05 12:41:40.000000000 -1000
+@@ -14,6 +14,7 @@
+ #include "llvm/Support/Error.h"
+ #include "llvm/Support/Path.h"
+ #include <CoreServices/CoreServices.h>
++#include <FSEvents/FSEvents.h>
+
+ using namespace llvm;
+ using namespace clang;
diff --git a/data/_llvm10/libtapi-arm64e.diff b/data/_llvm10/libtapi-arm64e.diff
new file mode 100644
index 000000000..5677a6dc2
--- /dev/null
+++ b/data/_llvm10/libtapi-arm64e.diff
@@ -0,0 +1,1618 @@
+diff -ur llvm-project-apple-stable-20191106/clang/include/clang/Basic/FileManager.h llvm-project-apple-stable-20191106+arm64e/clang/include/clang/Basic/FileManager.h
+--- llvm-project-apple-stable-20191106/clang/include/clang/Basic/FileManager.h 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/clang/include/clang/Basic/FileManager.h 2019-12-15 00:26:20.000000000 -1000
+@@ -398,6 +398,9 @@
+ std::error_code getNoncachedStatValue(StringRef Path,
+ llvm::vfs::Status &Result);
+
++ // Remove the real file \p Entry from the cache.
++ void invalidateCache(const FileEntry *Entry);
++
+ /// If path is not absolute and FileSystemOptions set the working
+ /// directory, the path is modified to be relative to the given
+ /// working directory.
+diff -ur llvm-project-apple-stable-20191106/clang/lib/Basic/FileManager.cpp llvm-project-apple-stable-20191106+arm64e/clang/lib/Basic/FileManager.cpp
+--- llvm-project-apple-stable-20191106/clang/lib/Basic/FileManager.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/clang/lib/Basic/FileManager.cpp 2019-12-15 00:26:55.000000000 -1000
+@@ -522,6 +522,21 @@
+ return std::error_code();
+ }
+
++void FileManager::invalidateCache(const FileEntry *Entry) {
++ assert(Entry && "Cannot invalidate a NULL FileEntry");
++
++ SeenFileEntries.erase(Entry->getName());
++
++ // FileEntry invalidation should not block future optimizations in the file
++ // caches. Possible alternatives are cache truncation (invalidate last N) or
++ // invalidation of the whole cache.
++ //
++ // FIXME: This is broken. We sometimes have the same FileEntry* shared
++ // between multiple SeenFileEntries, so this can leave dangling pointers.
++ UniqueRealFiles.erase(Entry->getUniqueID());
++}
++
++
+ void FileManager::GetUniqueIDMapping(
+ SmallVectorImpl<const FileEntry *> &UIDToFiles) const {
+ UIDToFiles.clear();
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/CMakeLists.txt 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/CMakeLists.txt 2019-12-12 08:33:27.000000000 -1000
+@@ -1,6 +1,6 @@
+-if(NOT APPLE)
+- message(FATAL_ERROR "Unsupported configuration.")
+-endif()
++#if(NOT APPLE)
++# message(FATAL_ERROR "Unsupported configuration.")
++#endif()
+
+ set(TAPI_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+ set(TAPI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
+@@ -38,11 +38,11 @@
+ if(DEFINED ENV{RC_SUPPORTED_ARCHS})
+ string(REPLACE " " ";" TAPI_SUPPORTED_ARCHS $ENV{RC_SUPPORTED_ARCHS})
+ elseif(NOT DEFINED TAPI_SUPPORTED_ARCHS)
+- set(TAPI_SUPPORTED_ARCHS i386 x86_64 x86_64h armv4t armv6 armv5 armv7 armv7s armv7k armv6m armv7m armv7em arm64)
++ set(TAPI_SUPPORTED_ARCHS i386 x86_64 x86_64h armv4t armv6 armv5 armv7 armv7s armv7k armv6m armv7m armv7em arm64 arm64e)
+ endif()
+ message(STATUS "Supported Architectures: ${TAPI_SUPPORTED_ARCHS}")
+
+-set(KNOWN_ARCHS i386 x86_64 x86_64h armv4t armv6 armv5 armv7 armv7s armv7k armv6m armv7m armv7em arm64)
++set(KNOWN_ARCHS i386 x86_64 x86_64h armv4t armv6 armv5 armv7 armv7s armv7k armv6m armv7m armv7em arm64 arm64e)
+
+ set (CONFIG_FILE ${CMAKE_CURRENT_BINARY_DIR}/include/tapi/Core/ArchitectureConfig.h)
+ file(WRITE ${CONFIG_FILE} "#ifndef TAPI_CORE_ARCHITECTURE_CONFIG_H\n")
+@@ -171,6 +171,13 @@
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ )
+
++if (LLVM_EXTERNAL_CLANG_SOURCE_DIR)
++ include_directories(${LLVM_EXTERNAL_CLANG_SOURCE_DIR}/include)
++else ()
++ include_directories(${CMAKE_SOURCE_DIR}/tools/clang/include)
++endif ()
++include_directories("${CMAKE_CURRENT_BINARY_DIR}/../../tools/clang/include")
++
+ option(TAPI_INCLUDE_TESTS "Generate build targets for the TAPI unit tests."
+ ${LLVM_INCLUDE_TESTS})
+ option(TAPI_INCLUDE_DOCS "Generate build targets for the TAPI docs."
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/Architecture.def llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/Architecture.def
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/Architecture.def 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/Architecture.def 2019-12-12 09:55:31.000000000 -1000
+@@ -70,3 +70,7 @@
+ ARCHINFO(arm64, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64_ALL)
+ #endif
+
++#ifdef SUPPORT_ARCH_ARM64E
++ARCHINFO(arm64e, MachO::CPU_TYPE_ARM64, MachO::CPU_SUBTYPE_ARM64E)
++#endif
++
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/ArchitectureSupport.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/ArchitectureSupport.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/ArchitectureSupport.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/ArchitectureSupport.h 2019-12-12 08:36:32.000000000 -1000
+@@ -21,7 +21,7 @@
+ #include "tapi/LinkerInterfaceFile.h"
+ #include "tapi/PackedVersion32.h"
+ #include "tapi/tapi.h"
+-#include "clang/Basic/VersionTuple.h"
++#include "llvm/Support/VersionTuple.h"
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <utility>
+@@ -35,7 +35,7 @@
+ constexpr PackedVersion(uint32_t version) : _version(version) {}
+ PackedVersion(unsigned major, unsigned minor, unsigned subminor)
+ : _version((major << 16) | ((minor & 0xff) << 8) | (subminor & 0xff)) {}
+- PackedVersion(clang::VersionTuple version) {
++ PackedVersion(llvm::VersionTuple version) {
+ _version = version.getMajor() << 16;
+ if (auto minor = version.getMinor())
+ _version |= (*minor & 0xff) << 8;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/FileManager.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/FileManager.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/FileManager.h 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/FileManager.h 2019-12-12 08:55:23.000000000 -1000
+@@ -47,14 +47,17 @@
+ FileManager(const clang::FileSystemOptions &fileSystemOpts,
+ llvm::IntrusiveRefCntPtr<FileSystemStatCacheFactory>
+ cacheFactory = nullptr,
+- llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem> fs = nullptr);
++ llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> fs = nullptr);
+
+ /// \brief Check if a particular path exists.
+ bool exists(StringRef path);
+
+ /// \brief Check if a particular path is a directory.
+ bool isDirectory(StringRef path, bool CacheFailure = true) {
+- return getDirectory(path, CacheFailure) != nullptr;
++ if (auto DirEntry = getDirectory(path, CacheFailure))
++ return true;
++ else
++ return false;
+ }
+
+ /// \brief Check if a particular path is a symlink using directory_iterator.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/HeaderFile.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/HeaderFile.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/HeaderFile.h 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/HeaderFile.h 2019-05-30 08:01:05.000000000 -1000
+@@ -19,6 +19,7 @@
+ #include "tapi/Defines.h"
+ #include "llvm/ADT/StringRef.h"
+ #include <string>
++#include <vector>
+
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/Platform.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/Platform.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/Platform.h 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/Platform.h 2019-05-30 08:01:05.000000000 -1000
+@@ -34,6 +34,8 @@
+ watchOS,
+ watchOSSimulator,
+ bridgeOS,
++ iOSMac,
++ zippered
+ };
+
+ Platform mapToSim(Platform platform, bool wantSim);
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/YAML.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/YAML.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Core/YAML.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Core/YAML.h 2019-12-12 11:23:59.000000000 -1000
+@@ -22,6 +22,7 @@
+ #include "tapi/Core/Platform.h"
+ #include "tapi/Core/YAMLReaderWriter.h"
+ #include "clang/Frontend/FrontendOptions.h"
++#include "clang/Basic/LangStandard.h"
+ #include "llvm/ADT/StringSwitch.h"
+ #include "llvm/Support/YAMLTraits.h"
+
+@@ -90,9 +91,8 @@
+ static QuotingType mustQuote(StringRef);
+ };
+
+-using clang::InputKind;
+-template <> struct ScalarEnumerationTraits<InputKind::Language> {
+- static void enumeration(IO &io, InputKind::Language &kind);
++template <> struct ScalarEnumerationTraits<clang::Language> {
++ static void enumeration(IO &io, clang::Language &kind);
+ };
+
+ } // end namespace yaml.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Diagnostics/DiagnosticTAPIKinds.td llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Diagnostics/DiagnosticTAPIKinds.td
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Diagnostics/DiagnosticTAPIKinds.td 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Diagnostics/DiagnosticTAPIKinds.td 2019-12-12 11:13:08.000000000 -1000
+@@ -35,6 +35,15 @@
+ string CategoryName = Name;
+ }
+
++// Textual substitutions which may be performed on the text of diagnostics
++class TextSubstitution<string Text> {
++ string Substitution = Text;
++ // TODO: These are only here to allow substitutions to be declared inline with
++ // diagnostics
++ string Component = "";
++ string CategoryName = "";
++}
++
+ // Diagnostic Groups.
+ class DiagGroup<string Name, list<DiagGroup> subgroups = []> {
+ string GroupName = Name;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/Configuration.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/Configuration.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/Configuration.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/Configuration.h 2019-12-12 11:22:25.000000000 -1000
+@@ -33,7 +33,7 @@
+ class Context;
+
+ struct CommandLineConfiguration {
+- clang::InputKind::Language language = clang::InputKind::Unknown;
++ clang::Language language = clang::Language::Unknown;
+ std::string std;
+ std::string isysroot;
+ std::string publicUmbrellaHeaderPath;
+@@ -68,7 +68,7 @@
+ Context &context);
+
+ StringRef getSysRoot() const;
+- clang::InputKind::Language getLanguage(StringRef path) const;
++ clang::Language getLanguage(StringRef path) const;
+ const std::vector<Macro> &getMacros(StringRef path) const;
+ const PathSeq &getIncludePaths(StringRef path) const;
+ const PathSeq &getFrameworkPaths(StringRef path) const;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/ConfigurationFile.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/ConfigurationFile.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/ConfigurationFile.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/ConfigurationFile.h 2019-12-12 11:21:11.000000000 -1000
+@@ -38,8 +38,8 @@
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+ using Macro = std::pair<std::string, bool>;
+-static const clang::InputKind::Language defaultLanguage =
+- clang::InputKind::ObjC;
++static const clang::Language defaultLanguage =
++ clang::Language::ObjC;
+
+ namespace configuration {
+ namespace v1 {
+@@ -54,7 +54,7 @@
+ std::string name;
+ std::string path;
+ std::string installName;
+- clang::InputKind::Language language;
++ clang::Language language;
+ PathSeq includePaths;
+ PathSeq frameworkPaths;
+ std::vector<Macro> macros;
+@@ -65,7 +65,7 @@
+ struct DylibConfiguration {
+ std::string name;
+ std::string installName;
+- clang::InputKind::Language language;
++ clang::Language language;
+ PathSeq includePaths;
+ PathSeq binaries;
+ std::vector<Macro> macros;
+@@ -77,7 +77,7 @@
+ Platform platform;
+ PackedVersion version;
+ std::string isysroot;
+- clang::InputKind::Language language;
++ clang::Language language;
+ PathSeq includePaths;
+ PathSeq frameworkPaths;
+ std::vector<Macro> macros;
+@@ -107,7 +107,7 @@
+ Platform platform;
+ PackedVersion version;
+ std::string isysroot;
+- clang::InputKind::Language language;
++ clang::Language language;
+ PathSeq includePaths;
+ PathSeq frameworkPaths;
+ std::vector<Macro> macros;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/Options.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/Options.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/Options.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/Options.h 2019-12-12 11:15:29.000000000 -1000
+@@ -169,7 +169,7 @@
+ std::vector<llvm::Triple> targets;
+
+ /// \brief Specify the language to use for parsing.
+- clang::InputKind::Language language = clang::InputKind::ObjC;
++ clang::Language language = clang::Language::ObjC;
+
+ /// \brief Language standard to use for parsing.
+ std::string language_std;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/SnapshotFileSystem.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/SnapshotFileSystem.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/SnapshotFileSystem.h 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/SnapshotFileSystem.h 2019-12-12 11:17:50.000000000 -1000
+@@ -16,23 +16,23 @@
+
+ #include "tapi/Core/LLVM.h"
+ #include "tapi/Defines.h"
+-#include "clang/Basic/VirtualFileSystem.h"
+ #include "llvm/ADT/IntrusiveRefCntPtr.h"
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/ADT/Twine.h"
+ #include "llvm/Support/Debug.h"
+ #include "llvm/Support/ErrorOr.h"
+ #include "llvm/Support/Path.h"
++#include "llvm/Support/VirtualFileSystem.h"
+ #include <string>
+
+-using clang::vfs::directory_iterator;
+-using clang::vfs::File;
+-using clang::vfs::Status;
++using llvm::vfs::directory_iterator;
++using llvm::vfs::File;
++using llvm::vfs::Status;
+
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+ /// \brief The snapshot virtual file system.
+-class SnapshotFileSystem final : public clang::vfs::FileSystem {
++class SnapshotFileSystem final : public llvm::vfs::FileSystem {
+ private:
+ enum class EntryKind { Directory, File };
+
+@@ -54,7 +54,7 @@
+ public:
+ DirectoryEntry(StringRef name)
+ : Entry(EntryKind::Directory, name),
+- status(name, clang::vfs::getNextVirtualUniqueID(),
++ status(name, llvm::vfs::getNextVirtualUniqueID(),
+ llvm::sys::TimePoint<>(), 0, 0, 0,
+ llvm::sys::fs::file_type::directory_file,
+ llvm::sys::fs::all_all) {}
+@@ -108,15 +108,15 @@
+
+ public:
+ SnapshotFileSystem(IntrusiveRefCntPtr<FileSystem> externalFS =
+- clang::vfs::getRealFileSystem())
+- : root(llvm::make_unique<DirectoryEntry>("/")),
++ llvm::vfs::getRealFileSystem())
++ : root(std::make_unique<DirectoryEntry>("/")),
+ externalFS(std::move(externalFS)) {}
+
+ /// \brief Get the status of the entry at \p Path, if one exists.
+ llvm::ErrorOr<Status> status(const Twine &path) override;
+
+ /// \brief Get a \p File object for the file at \p Path, if one exists.
+- llvm::ErrorOr<std::unique_ptr<clang::vfs::File>>
++ llvm::ErrorOr<std::unique_ptr<llvm::vfs::File>>
+ openFileForRead(const Twine &path) override;
+
+ /// \brief Get a directory_iterator for \p Dir.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/StatRecorder.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/StatRecorder.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Driver/StatRecorder.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Driver/StatRecorder.h 2019-12-14 23:52:42.000000000 -1000
+@@ -18,6 +18,8 @@
+ #include "tapi/Driver/Snapshot.h"
+ #include "tapi/Driver/SnapshotFileSystem.h"
+ #include "clang/Basic/FileSystemStatCache.h"
++#include "clang/Sema/Lookup.h"
++#include "llvm/Support/VirtualFileSystem.h"
+
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+@@ -28,21 +30,21 @@
+ public:
+ StatRecorder() = default;
+
+- LookupResult getStat(StringRef path, clang::FileData &data, bool isFile,
+- std::unique_ptr<clang::vfs::File> *file,
+- clang::vfs::FileSystem &fs) override {
+- auto result = statChained(path, data, isFile, file, fs);
++ std::error_code getStat(StringRef path, llvm::vfs::Status &status, bool isFile,
++ std::unique_ptr<llvm::vfs::File> *file,
++ llvm::vfs::FileSystem &fs) override {
++ auto err = get(path, status, isFile, file, nullptr, fs);
+
+ // Don't record non existing files and directories.
+- if (result == CacheMissing)
+- return result;
++ if (err)
++ return err;
+
+- if (data.IsDirectory)
++ if (status.isDirectory())
+ TAPI_INTERNAL::globalSnapshot->recordDirectory(path);
+ else
+ TAPI_INTERNAL::globalSnapshot->recordFile(path);
+
+- return result;
++ return std::error_code();
+ }
+ };
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Frontend/Frontend.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Frontend/Frontend.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Frontend/Frontend.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Frontend/Frontend.h 2019-12-12 10:11:55.000000000 -1000
+@@ -28,9 +28,9 @@
+ struct FrontendJob {
+ std::string workingDirectory;
+ IntrusiveRefCntPtr<FileSystemStatCacheFactory> cacheFactory;
+- IntrusiveRefCntPtr<clang::vfs::FileSystem> vfs;
++ IntrusiveRefCntPtr<llvm::vfs::FileSystem> vfs;
+ llvm::Triple target;
+- clang::InputKind::Language language = clang::InputKind::Unknown;
++ clang::Language language = clang::Language::Unknown;
+ bool useRTTI = true;
+ bool enableModules = false;
+ bool validateSystemHeaders = false;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Frontend/FrontendContext.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Frontend/FrontendContext.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/Frontend/FrontendContext.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/Frontend/FrontendContext.h 2019-12-12 10:08:58.000000000 -1000
+@@ -39,7 +39,7 @@
+ FrontendContext(
+ StringRef workingDirectory = StringRef(),
+ IntrusiveRefCntPtr<FileSystemStatCacheFactory> cacheFactory = nullptr,
+- IntrusiveRefCntPtr<clang::vfs::FileSystem> vfs = nullptr);
++ IntrusiveRefCntPtr<llvm::vfs::FileSystem> vfs = nullptr);
+
+ void visit(APIVisitor &visitor) { api.visit(visitor); }
+ };
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/LinkerInterfaceFile.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/LinkerInterfaceFile.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/include/tapi/LinkerInterfaceFile.h 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/include/tapi/LinkerInterfaceFile.h 2019-05-30 08:01:05.000000000 -1000
+@@ -64,6 +64,8 @@
+ /// \since 1.2
+ bridgeOS = 5,
+
++ iOSMac = 6,
++ zippered = 10
+ };
+
+ ///
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/CMakeLists.txt 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/CMakeLists.txt 2019-12-11 23:53:54.000000000 -1000
+@@ -40,3 +40,20 @@
+ LINK_LIBS
+ clangBasic
+ )
++add_dependencies(tapiCore clang-resource-headers)
++if(Clang_DIR)
++ set(clang_lib_dir ${Clang_DIR}/../..)
++elseif(LLVM_DIR)
++ set(clang_lib_dir ${LLVM_DIR}/../..)
++elseif(LLVM_LIBRARY_DIRS)
++ set(clang_lib_dir ${LLVM_LIBRARY_DIRS})
++elseif(LLVM_BUILD_LIBRARY_DIR)
++ set(clang_lib_dir ${LLVM_BUILD_LIBRARY_DIR})
++elseif(LLVM_BINARY_DIR)
++ set(clang_lib_dir ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX})
++endif()
++set(clang_version ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
++set(clang_resource_headers_dir ${clang_lib_dir}/clang/${clang_version}/include)
++if(NOT EXISTS ${clang_resource_headers_dir})
++ message(WARNING "Expected directory for clang-resource headers not found: ${clang_resource_headers_dir}")
++endif()
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/FileManager.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/FileManager.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/FileManager.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/FileManager.cpp 2019-12-12 08:46:41.000000000 -1000
+@@ -15,7 +15,7 @@
+ #include "tapi/Core/FileManager.h"
+ #include "tapi/Defines.h"
+ #include "clang/Basic/FileSystemStatCache.h"
+-#include "clang/Basic/VirtualFileSystem.h"
++#include "llvm/Support/VirtualFileSystem.h"
+ #include "llvm/ADT/IntrusiveRefCntPtr.h"
+ #include "llvm/ADT/StringRef.h"
+
+@@ -38,7 +38,7 @@
+ }
+
+ bool FileManager::exists(StringRef path) {
+- clang::vfs::Status result;
++ vfs::Status result;
+ if (getNoncachedStatValue(path, result))
+ return false;
+ return result.exists();
+@@ -51,9 +51,9 @@
+ }
+
+ void FileManager::installStatRecorder() {
+- clearStatCaches();
++ clearStatCache();
+ if (cacheFactory != nullptr)
+- addStatCache(std::unique_ptr<FileSystemStatCache>(cacheFactory->create()));
++ setStatCache(std::unique_ptr<FileSystemStatCache>(cacheFactory->create()));
+ }
+
+ TAPI_NAMESPACE_INTERNAL_END
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/InterfaceFileManager.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/InterfaceFileManager.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/InterfaceFileManager.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/InterfaceFileManager.cpp 2019-12-12 09:05:14.000000000 -1000
+@@ -30,12 +30,11 @@
+
+ Expected<InterfaceFileBase *>
+ InterfaceFileManager::readFile(const std::string &path) {
+- auto *file = _fm.getFile(path);
+- if (file == nullptr)
+- return errorCodeToError(
+- std::make_error_code(std::errc::no_such_file_or_directory));
++ auto fileOrErr = _fm.getFile(path);
++ if (!fileOrErr)
++ return errorCodeToError(fileOrErr.getError());
+
+- auto bufferOrErr = _fm.getBufferForFile(file);
++ auto bufferOrErr = _fm.getBufferForFile(fileOrErr.get());
+ if (!bufferOrErr)
+ return errorCodeToError(bufferOrErr.getError());
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/MachODylibReader.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/MachODylibReader.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/MachODylibReader.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/MachODylibReader.cpp 2019-12-12 09:12:22.000000000 -1000
+@@ -25,19 +25,6 @@
+ using namespace llvm;
+ using namespace llvm::object;
+
+-// Define missing platform enums.
+-namespace llvm {
+-namespace MachO {
+-// clang-format off
+- enum MissingPlatformType {
+- PLATFORM_IOSSIMULATOR = 7,
+- PLATFORM_TVOSSIMULATOR = 8,
+- PLATFORM_WATCHOSSIMULATOR = 9,
+- };
+-// clang-format on
+-} // end namespace MachO.
+-} // end namespace llvm.
+-
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+ Expected<FileType>
+@@ -266,12 +253,17 @@
+ }
+
+ for (auto &section : object->sections()) {
+- StringRef sectionName;
+- section.getName(sectionName);
++ Expected<StringRef> sectionNameOrErr = section.getName();
++ if (!sectionNameOrErr) continue;
++ StringRef sectionName = sectionNameOrErr.get();
++
+ if (sectionName != "__objc_imageinfo" && sectionName != "__image_info")
+ continue;
+- StringRef content;
+- section.getContents(content);
++ Expected<StringRef> contentOrErr = section.getContents();
++ if (!contentOrErr) continue;
++
++ StringRef content = *contentOrErr;
++
+ if ((content.size() >= 8) && (content[0] == 0)) {
+ uint32_t flags;
+ if (object->isLittleEndian()) {
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Path.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Path.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Path.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Path.cpp 2019-12-12 09:15:41.000000000 -1000
+@@ -17,7 +17,7 @@
+ #include "tapi/Core/LLVM.h"
+ #include "tapi/Core/Utils.h"
+ #include "tapi/Defines.h"
+-#include "clang/Basic/VirtualFileSystem.h"
++#include "llvm/Support/VirtualFileSystem.h"
+ #include "llvm/ADT/SmallString.h"
+ #include "llvm/ADT/Twine.h"
+ #include "llvm/Support/Error.h"
+@@ -54,8 +54,8 @@
+ const std::function<bool(StringRef)> &func) {
+ PathSeq files;
+ std::error_code ec;
+- auto &fs = *fm.getVirtualFileSystem();
+- for (clang::vfs::recursive_directory_iterator i(fs, path, ec), ie; i != ie;
++ auto &fs = fm.getVirtualFileSystem();
++ for (llvm::vfs::recursive_directory_iterator i(fs, path, ec), ie; i != ie;
+ i.increment(ec)) {
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+@@ -67,7 +67,7 @@
+ if (ec)
+ return errorCodeToError(ec);
+
+- auto path = i->getName();
++ auto path = i->path();
+ if (func(path))
+ files.emplace_back(path);
+ }
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Platform.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Platform.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Platform.cpp 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Platform.cpp 2019-05-30 08:01:05.000000000 -1000
+@@ -93,6 +93,10 @@
+ return "tvOSSimulator";
+ case Platform::bridgeOS:
+ return "bridgeOS";
++ case Platform::iOSMac:
++ return "iOSMac";
++ case Platform::zippered:
++ return "zippered";
+ }
+ }
+
+@@ -116,6 +120,10 @@
+ return "tvos" + version + "-simulator";
+ case Platform::bridgeOS:
+ return "bridgeos" + version;
++ case Platform::iOSMac:
++ return "iOSMac" + version;
++ case Platform::zippered:
++ return "zippered" + version;
+ }
+ }
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Registry.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Registry.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/Registry.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/Registry.cpp 2019-12-12 09:16:35.000000000 -1000
+@@ -149,7 +149,7 @@
+ }
+
+ void Registry::addYAMLReaders() {
+- auto reader = make_unique<YAMLReader>();
++ auto reader = std::make_unique<YAMLReader>();
+ reader->add(
+ std::unique_ptr<DocumentHandler>(new stub::v1::YAMLDocumentHandler));
+ reader->add(
+@@ -160,7 +160,7 @@
+ }
+
+ void Registry::addYAMLWriters() {
+- auto writer = make_unique<YAMLWriter>();
++ auto writer = std::make_unique<YAMLWriter>();
+ writer->add(
+ std::unique_ptr<DocumentHandler>(new stub::v1::YAMLDocumentHandler));
+ writer->add(
+@@ -174,6 +174,6 @@
+ add(std::unique_ptr<Writer>(new ReexportFileWriter));
+ }
+
+-void Registry::addDiagnosticReader() { add(make_unique<DiagnosticReader>()); }
++void Registry::addDiagnosticReader() { add(std::make_unique<DiagnosticReader>()); }
+
+ TAPI_NAMESPACE_INTERNAL_END
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/YAML.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/YAML.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/YAML.cpp 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/YAML.cpp 2019-12-12 09:29:16.000000000 -1000
+@@ -55,6 +55,9 @@
+ io.enumCase(platform, "tvos", Platform::tvOS);
+ io.enumCase(platform, "tvos", Platform::tvOSSimulator);
+ io.enumCase(platform, "bridgeos", Platform::bridgeOS);
++
++ io.enumCase(platform, "iosmac", Platform::zippered);
++ io.enumCase(platform, "zippered", Platform::zippered);
+ }
+
+ using TAPI_INTERNAL::Architecture;
+@@ -191,16 +194,16 @@
+ return QuotingType::Single;
+ }
+
+-using clang::InputKind;
+-void ScalarEnumerationTraits<InputKind::Language>::enumeration(
+- IO &io, InputKind::Language &kind) {
+- io.enumCase(kind, "c", InputKind::C);
+- io.enumCase(kind, "cxx", InputKind::CXX);
+- io.enumCase(kind, "objective-c", InputKind::ObjC);
+- io.enumCase(kind, "objc", InputKind::ObjC); // to keep old snapshots working.
+- io.enumCase(kind, "objective-cxx", InputKind::ObjCXX);
++using namespace clang;
++void ScalarEnumerationTraits<Language>::enumeration(
++ IO &io, Language &kind) {
++ io.enumCase(kind, "c", Language::C);
++ io.enumCase(kind, "cxx", Language::CXX);
++ io.enumCase(kind, "objective-c", Language::ObjC);
++ io.enumCase(kind, "objc", Language::ObjC); // to keep old snapshots working.
++ io.enumCase(kind, "objective-cxx", Language::ObjCXX);
+ io.enumCase(kind, "objcxx",
+- InputKind::ObjCXX); // to keep old snapshots working.
++ Language::ObjCXX); // to keep old snapshots working.
+ }
+
+ } // end namespace yaml.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Diagnostics/Diagnostics.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Diagnostics/Diagnostics.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Diagnostics/Diagnostics.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Diagnostics/Diagnostics.cpp 2019-12-15 23:58:25.000000000 -1000
+@@ -140,7 +140,7 @@
+ raw_ostream *os = &llvm::errs();
+ if (output != "-") {
+ // Create the output stream.
+- auto fileOS = llvm::make_unique<llvm::raw_fd_ostream>(
++ auto fileOS = std::make_unique<llvm::raw_fd_ostream>(
+ output, ec, llvm::sys::fs::F_Append | llvm::sys::fs::F_Text);
+ if (ec) {
+ report(diag::err_cannot_open_file) << output << ec.message();
+@@ -153,7 +153,7 @@
+ diagOpts->DiagnosticLogFile = output.str();
+
+ // Chain in the diagnostic client which will log the diagnostics.
+- auto Logger = llvm::make_unique<clang::LogDiagnosticPrinter>(
++ auto Logger = std::make_unique<clang::LogDiagnosticPrinter>(
+ *os, diagOpts.get(), std::move(streamOwner));
+ assert(diag->ownsClient());
+ diag->setClient(new clang::ChainedDiagnosticConsumer(diag->takeClient(),
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Configuration.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Configuration.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Configuration.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Configuration.cpp 2019-12-12 11:23:09.000000000 -1000
+@@ -152,8 +152,8 @@
+ return file.isysroot;
+ }
+
+-clang::InputKind::Language Configuration::getLanguage(StringRef path) const {
+- if (commandLine.language != clang::InputKind::Unknown)
++clang::Language Configuration::getLanguage(StringRef path) const {
++ if (commandLine.language != clang::Language::Unknown)
+ return commandLine.language;
+
+ auto it = pathToConfig.find(getCanonicalPath(path));
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/ConfigurationFile.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/ConfigurationFile.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/ConfigurationFile.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/ConfigurationFile.cpp 2019-12-12 11:25:06.000000000 -1000
+@@ -120,7 +120,7 @@
+ Platform platform;
+ PackedVersion version;
+ std::string isysroot;
+- clang::InputKind::Language language;
++ clang::Language language;
+ PathSeq includePaths;
+ PathSeq frameworkPaths;
+ std::vector<Macro> macros;
+@@ -135,7 +135,7 @@
+ io.mapRequired("sdk-platform", keys->platform);
+ io.mapRequired("sdk-version", keys->version);
+ io.mapRequired("sdk-root", keys->isysroot);
+- io.mapOptional("language", keys->language, clang::InputKind::ObjC);
++ io.mapOptional("language", keys->language, clang::Language::ObjC);
+ io.mapOptional("include-paths", keys->includePaths);
+ io.mapOptional("framework-paths", keys->frameworkPaths);
+ io.mapOptional("macros", keys->macros);
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/DirectoryScanner.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/DirectoryScanner.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/DirectoryScanner.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/DirectoryScanner.cpp 2019-12-12 11:34:02.000000000 -1000
+@@ -21,9 +21,9 @@
+ #include "tapi/Core/Utils.h"
+ #include "tapi/Diagnostics/Diagnostics.h"
+ #include "clang/Basic/Diagnostic.h"
+-#include "clang/Basic/VirtualFileSystem.h"
+ #include "llvm/Support/Path.h"
+ #include "llvm/Support/raw_ostream.h"
++#include "llvm/Support/VirtualFileSystem.h"
+
+ using namespace llvm;
+ using namespace clang;
+@@ -53,11 +53,10 @@
+ sys::path::append(path, subDirectory);
+ return _fm.getDirectory(path, /*CacheFailure=*/false);
+ };
+- const DirectoryEntry *directoryEntryPublic = getDirectory("usr/include");
+- const DirectoryEntry *directoryEntryPrivate =
+- getDirectory("usr/local/include");
++ auto directoryEntryPublicOrError = getDirectory("usr/include");
++ auto directoryEntryPrivateOrError = getDirectory("usr/local/include");
+
+- if (!directoryEntryPublic && !directoryEntryPrivate) {
++ if (!directoryEntryPublicOrError && !directoryEntryPrivateOrError) {
+ errs() << "error: Cannot find public or private sub directories: "
+ << directory << "\n";
+ }
+@@ -66,13 +65,13 @@
+ auto &dylib = frameworks.back();
+ dylib.isDynamicLibrary = true;
+
+- if (directoryEntryPublic) {
+- if (!scanHeaders(dylib, directoryEntryPublic->getName(),
++ if (directoryEntryPublicOrError) {
++ if (!scanHeaders(dylib, directoryEntryPublicOrError.get()->getName(),
+ HeaderType::Public))
+ return false;
+ }
+- if (directoryEntryPrivate) {
+- if (!scanHeaders(dylib, directoryEntryPrivate->getName(),
++ if (directoryEntryPrivateOrError) {
++ if (!scanHeaders(dylib, directoryEntryPrivateOrError.get()->getName(),
+ HeaderType::Private))
+ return false;
+ }
+@@ -114,10 +113,10 @@
+ bool DirectoryScanner::scanFrameworksDirectory(
+ std::vector<Framework> &frameworks, StringRef directory) const {
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::directory_iterator i = fs.dir_begin(directory, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -158,10 +157,10 @@
+ // there is a Versions directory, then we have symlinks and directly proceed
+ // to the Versiosn folder.
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::directory_iterator i = fs.dir_begin(framework.getPath(), ec), ie;
+ i != ie; i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -232,10 +231,10 @@
+ bool DirectoryScanner::scanHeaders(Framework &framework, StringRef path,
+ HeaderType type) const {
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::recursive_directory_iterator i(fs, path, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto headerPath = i->getName();
++ auto headerPath = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -265,10 +264,10 @@
+
+ bool DirectoryScanner::scanModules(Framework &framework, StringRef path) const {
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::recursive_directory_iterator i(fs, path, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -293,10 +292,10 @@
+ bool DirectoryScanner::scanFrameworkVersionsDirectory(Framework &framework,
+ StringRef path) const {
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::directory_iterator i = fs.dir_begin(path, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -327,10 +326,10 @@
+ bool DirectoryScanner::scanLibraryDirectory(Framework &framework,
+ StringRef path) const {
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (vfs::recursive_directory_iterator i(fs, path, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+@@ -456,10 +455,10 @@
+
+ // Scan the bundles and extensions in /System/Library.
+ std::error_code ec;
+- auto &fs = *_fm.getVirtualFileSystem();
++ auto &fs = _fm.getVirtualFileSystem();
+ for (auto i = fs.dir_begin(getDirectory("System/Library"), ec);
+ i != vfs::directory_iterator(); i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/DriverUtils.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/DriverUtils.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/DriverUtils.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/DriverUtils.cpp 2019-12-12 11:38:49.000000000 -1000
+@@ -15,9 +15,9 @@
+ #include "tapi/Core/FileManager.h"
+ #include "tapi/Core/Utils.h"
+ #include "tapi/Diagnostics/Diagnostics.h"
+-#include "clang/Basic/VirtualFileSystem.h"
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/Support/Path.h"
++#include "llvm/Support/VirtualFileSystem.h"
+
+ using namespace llvm;
+ using namespace clang;
+@@ -28,10 +28,10 @@
+ DiagnosticsEngine &diag, StringRef path,
+ HeaderType type) {
+ std::error_code ec;
+- auto &fs = *fm.getVirtualFileSystem();
++ auto &fs = fm.getVirtualFileSystem();
+ for (vfs::directory_iterator i = fs.dir_begin(path, ec), ie; i != ie;
+ i.increment(ec)) {
+- auto path = i->getName();
++ auto path = i->path();
+
+ // Skip files that not exist. This usually happens for broken symlinks.
+ if (ec == std::errc::no_such_file_or_directory) {
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/HeaderGlob.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/HeaderGlob.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/HeaderGlob.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/HeaderGlob.cpp 2019-12-12 11:39:08.000000000 -1000
+@@ -77,7 +77,7 @@
+ auto regex = Regex(regexString);
+ std::string error;
+ if (regex.isValid(error))
+- return make_unique<HeaderGlob>(globString, std::move(regex), type);
++ return std::make_unique<HeaderGlob>(globString, std::move(regex), type);
+
+ return make_error<StringError>(error, inconvertibleErrorCode());
+ }
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/InstallAPIDriver.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/InstallAPIDriver.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/InstallAPIDriver.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/InstallAPIDriver.cpp 2019-12-15 00:11:29.000000000 -1000
+@@ -357,10 +357,11 @@
+ /*STDOUT=*/llvm::None,
+ /*STDERR=*/StringRef(stderrFile)};
+
+- bool failed = sys::ExecuteAndWait(clangBinary.get(), clangArgs,
+- /*env=*/nullptr, redirects);
++ std::string *ErrMsg=nullptr;
++ bool *ExecutionFailed;
++ sys::ExecuteAndWait(clangBinary.get(), llvm::toStringRefArray(clangArgs), /*env=*/NoneType::None, redirects, 0, 0, ErrMsg, ExecutionFailed);
+
+- if (failed) {
++ if (ExecutionFailed) {
+ auto bufferOr = MemoryBuffer::getFile(stderrFile);
+ if (auto ec = bufferOr.getError())
+ return make_error<StringError>("unable to read file", ec);
+@@ -498,7 +499,7 @@
+ FrontendJob job;
+ job.workingDirectory = globalSnapshot->getWorkingDirectory();
+ job.cacheFactory = newFileSystemStatCacheFactory<StatRecorder>();
+- job.vfs = fm.getVirtualFileSystem();
++ job.vfs = &fm.getVirtualFileSystem();
+ job.language = opts.frontendOptions.language;
+ job.language_std = opts.frontendOptions.language_std;
+ job.useRTTI = opts.frontendOptions.useRTTI;
+@@ -522,11 +523,12 @@
+ return false;
+ }
+
+- const FileEntry *jsonFile = nullptr;
++ const clang::FileEntry *jsonFile = nullptr;
++ //const FileEntry *jsonFile = nullptr;
+ for (const auto &path : opts.driverOptions.inputs) {
+ if (sys::path::extension(path) == ".json") {
+- if (auto *file = fm.getFile(path)) {
+- jsonFile = file;
++ if (auto file = fm.getFile(path)) {
++ jsonFile = file.get();
+ break;
+ }
+ }
+@@ -545,7 +547,7 @@
+ for (const auto &path : opts.driverOptions.inputs) {
+ if (fm.isDirectory(path, /*CacheFailure=*/false)) {
+ SmallString<PATH_MAX> normalizedPath(path);
+- fm.getVirtualFileSystem()->makeAbsolute(normalizedPath);
++ fm.getVirtualFileSystem().makeAbsolute(normalizedPath);
+ sys::path::remove_dots(normalizedPath, /*remove_dot_dot=*/true);
+ if (!scanner.scan(normalizedPath, frameworks))
+ return false;
+@@ -578,7 +580,7 @@
+
+ frameworkName = sys::path::stem(framework->getName());
+ for (const auto &header : framework->_headerFiles) {
+- auto *file = fm.getFile(header.fullPath);
++ auto file = fm.getFile(header.fullPath);
+ if (!file) {
+ if (header.type == HeaderType::Public)
+ diag.report(diag::err_no_such_public_header_file) << header.fullPath;
+@@ -598,7 +600,7 @@
+ }
+ } else {
+ Registry registry;
+- auto reader = make_unique<YAMLReader>();
++ auto reader = std::make_unique<YAMLReader>();
+ reader->add(std::unique_ptr<DocumentHandler>(
+ new json_file::v1::YAMLDocumentHandler));
+ registry.add(std::move(reader));
+@@ -665,8 +667,8 @@
+ excludeHeaderGlobs.emplace_back(std::move(glob.get()));
+ else {
+ consumeError(glob.takeError());
+- if (auto file = fm.getFile(str))
+- excludeHeaderFiles.emplace(file);
++ if (auto fileOrErr = fm.getFile(str))
++ excludeHeaderFiles.emplace(fileOrErr.get());
+ else {
+ diag.report(diagID) << str;
+ return false;
+@@ -692,9 +694,13 @@
+
+ if (!excludeHeaderFiles.empty()) {
+ for (auto &header : headerFiles) {
+- const auto *file = fm.getFile(header.fullPath);
+- if (excludeHeaderFiles.count(file))
+- header.isExcluded = true;
++ const auto fileOrError = fm.getFile(header.fullPath);
++ if (fileOrError) {
++ const auto file = fileOrError.get();
++
++ if (excludeHeaderFiles.count(file))
++ header.isExcluded = true;
++ }
+ }
+ }
+
+@@ -806,13 +812,13 @@
+ }
+ }
+
+- auto headerSymbols = make_unique<XPISet>();
++ auto headerSymbols = std::make_unique<XPISet>();
+ for (auto &result : frontendResults) {
+ API2XPIConverter converter(headerSymbols.get(), result.target);
+ result.visit(converter);
+ }
+
+- auto scanFile = make_unique<ExtendedInterfaceFile>(std::move(headerSymbols));
++ auto scanFile = std::make_unique<ExtendedInterfaceFile>(std::move(headerSymbols));
+
+ if (opts.tapiOptions.printAfter == "xpi")
+ scanFile->printSymbols(ArchitectureSet::All());
+@@ -911,7 +917,7 @@
+ return false;
+ }
+
+- auto interface = make_unique<InterfaceFile>(std::move(*scanFile.get()));
++ auto interface = std::make_unique<InterfaceFile>(std::move(*scanFile.get()));
+ auto result =
+ manager.writeFile(interface.get(), opts.driverOptions.outputPath);
+ if (result) {
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Options.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Options.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Options.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Options.cpp 2019-12-15 00:12:16.000000000 -1000
+@@ -18,13 +18,13 @@
+ #include "tapi/Driver/StatRecorder.h"
+ #include "tapi/LinkerInterfaceFile.h"
+ #include "clang/Basic/Version.inc"
+-#include "clang/Basic/VirtualFileSystem.h"
+ #include "clang/Config/config.h"
+ #include "llvm/ADT/ArrayRef.h"
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/Option/ArgList.h"
+ #include "llvm/Option/OptSpecifier.h"
+ #include "llvm/Support/raw_ostream.h"
++#include "llvm/Support/VirtualFileSystem.h"
+ #include <string>
+ #include <utility>
+
+@@ -706,14 +706,14 @@
+ // Handle language option.
+ if (auto *arg = args.getLastArg(OPT_x)) {
+ frontendOptions.language =
+- StringSwitch<clang::InputKind::Language>(arg->getValue())
+- .Case("c", clang::InputKind::C)
+- .Case("c++", clang::InputKind::CXX)
+- .Case("objective-c", clang::InputKind::ObjC)
+- .Case("objective-c++", clang::InputKind::ObjCXX)
+- .Default(clang::InputKind::Unknown);
++ StringSwitch<clang::Language>(arg->getValue())
++ .Case("c", clang::Language::C)
++ .Case("c++", clang::Language::CXX)
++ .Case("objective-c", clang::Language::ObjC)
++ .Case("objective-c++", clang::Language::ObjCXX)
++ .Default(clang::Language::Unknown);
+
+- if (frontendOptions.language == clang::InputKind::Unknown) {
++ if (frontendOptions.language == clang::Language::Unknown) {
+ diag.report(clang::diag::err_drv_invalid_value)
+ << arg->getAsString(args) << arg->getValue();
+ return false;
+@@ -723,9 +723,9 @@
+ // Handle ObjC/ObjC++ switch.
+ for (auto *arg : args.filtered(OPT_ObjC, OPT_ObjCXX)) {
+ if (arg->getOption().matches(OPT_ObjC))
+- frontendOptions.language = clang::InputKind::ObjC;
++ frontendOptions.language = clang::Language::ObjC;
+ else
+- frontendOptions.language = clang::InputKind::ObjCXX;
++ frontendOptions.language = clang::Language::ObjCXX;
+ }
+
+ // Handle language std.
+@@ -983,7 +983,7 @@
+ SmallString<PATH_MAX> srcPath(header);
+
+ // Normalize path.
+- if (fm.getVirtualFileSystem()->makeAbsolute(externalPath))
++ if (fm.getVirtualFileSystem().makeAbsolute(externalPath))
+ return;
+ sys::path::remove_dots(externalPath, /*remove_dot_dot=*/true);
+ sys::path::replace_path_prefix(srcPath, clangResourcePath,
+@@ -1052,7 +1052,7 @@
+ globalSnapshot->requestSnapshot();
+
+ globalSnapshot->setWorkingDirectory(
+- fm->getVirtualFileSystem()->getCurrentWorkingDirectory().get());
++ fm->getVirtualFileSystem().getCurrentWorkingDirectory().get());
+ }
+
+ // This has to happen after processing the snapshot options, but before all
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/ReexportDriver.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/ReexportDriver.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/ReexportDriver.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/ReexportDriver.cpp 2019-12-15 00:12:54.000000000 -1000
+@@ -95,13 +95,13 @@
+ frontendResults.emplace_back(std::move(result.getValue()));
+ }
+
+- auto headerSymbols = make_unique<XPISet>();
++ auto headerSymbols = std::make_unique<XPISet>();
+ for (auto &result : frontendResults) {
+ API2XPIConverter converter(headerSymbols.get(), result.target);
+ result.visit(converter);
+ }
+
+- auto scanFile = make_unique<ExtendedInterfaceFile>(std::move(headerSymbols));
++ auto scanFile = std::make_unique<ExtendedInterfaceFile>(std::move(headerSymbols));
+ scanFile->setFileType(FileType::ReexportFile);
+ scanFile->setArchitectures(
+ mapToArchitectureSet(opts.frontendOptions.targets));
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Snapshot.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Snapshot.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/Snapshot.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/Snapshot.cpp 2019-12-15 22:10:42.000000000 -1000
+@@ -22,7 +22,6 @@
+
+ using namespace llvm;
+ using namespace TAPI_INTERNAL;
+-using clang::InputKind;
+
+ using Mapping = std::pair<std::string, uint64_t>;
+ using Reexports = std::pair<std::string, ArchitectureSet>;
+@@ -125,7 +124,7 @@
+ static void mapping(IO &io, DriverOptions &opts) {
+ io.mapOptional("print-version", opts.printVersion, false);
+ io.mapOptional("print-help", opts.printHelp, false);
+- io.mapOptional("inputs", opts.inputs, {});
++ io.mapOptional("inputs", opts.inputs, (PathSeq){});
+ io.mapOptional("output-path", opts.outputPath, std::string());
+ }
+ };
+@@ -147,11 +146,11 @@
+ io.mapOptional("compatibility-version", opts.compatibilityVersion,
+ PackedVersion());
+ io.mapOptional("is-dynamic-library", opts.isDynamicLibrary, false);
+- io.mapOptional("allowable-clients", opts.allowableClients, {});
+- io.mapOptional("reexported-libraries", opts.reexportInstallNames, {});
+- io.mapOptional("reexported-libraries2", opts.reexportedLibraries, {});
+- io.mapOptional("reexported-library-paths", opts.reexportedLibraryPaths, {});
+- io.mapOptional("reexported-frameworks", opts.reexportedFrameworks, {});
++ io.mapOptional("allowable-clients", opts.allowableClients, (__typeof__(opts.allowableClients)){});
++ io.mapOptional("reexported-libraries", opts.reexportInstallNames, (__typeof__(opts.reexportInstallNames)){});
++ io.mapOptional("reexported-libraries2", opts.reexportedLibraries, (__typeof__(opts.reexportedLibraries)){});
++ io.mapOptional("reexported-library-paths", opts.reexportedLibraryPaths, (__typeof__(opts.reexportedLibraryPaths)){});
++ io.mapOptional("reexported-frameworks", opts.reexportedFrameworks, (__typeof__(opts.reexportedFrameworks)){});
+ io.mapOptional("is-application-extension-safe",
+ opts.isApplicationExtensionSafe, false);
+ }
+@@ -164,17 +163,17 @@
+ Snapshot::MappingContext &ctx) {
+ io.mapOptional("platform", ctx.platform, Platform::unknown);
+ io.mapOptional("os-version", ctx.osVersion, std::string());
+- io.mapOptional("targets", opts.targets, {});
+- io.mapOptional("language", opts.language, InputKind::ObjC);
++ io.mapOptional("targets", opts.targets, (__typeof__(opts.targets)){});
++ io.mapOptional("language", opts.language, clang::Language::ObjC);
+ io.mapOptional("language-std", opts.language_std, std::string());
+ io.mapOptional("isysroot", opts.isysroot, std::string());
+ io.mapOptional("umbrella", opts.umbrella, std::string());
+- io.mapOptional("system-framework-paths", opts.systemFrameworkPaths, {});
+- io.mapOptional("system-include-paths", opts.systemIncludePaths, {});
+- io.mapOptional("framework-paths", opts.frameworkPaths, {});
+- io.mapOptional("library-paths", opts.libraryPaths, {});
+- io.mapOptional("include-paths", opts.includePaths, {});
+- io.mapOptional("macros", opts.macros, {});
++ io.mapOptional("system-framework-paths", opts.systemFrameworkPaths, (__typeof__(opts.systemFrameworkPaths)){});
++ io.mapOptional("system-include-paths", opts.systemIncludePaths, (__typeof__(opts.systemIncludePaths)){});
++ io.mapOptional("framework-paths", opts.frameworkPaths, (__typeof__(opts.frameworkPaths)){});
++ io.mapOptional("library-paths", opts.libraryPaths, (__typeof__(opts.libraryPaths)){});
++ io.mapOptional("include-paths", opts.includePaths, (__typeof__(opts.includePaths)){});
++ io.mapOptional("macros", opts.macros, (__typeof__(opts.macros)){});
+ io.mapOptional("use-rtti", opts.useRTTI, true);
+ io.mapOptional("visibility", opts.visibility, std::string());
+ io.mapOptional("enable-modules", opts.enableModules, false);
+@@ -183,7 +182,7 @@
+ false);
+ io.mapOptional("use-objc-arc", opts.useObjectiveCARC, false);
+ io.mapOptional("use-objc-weak", opts.useObjectiveCWeakARC, false);
+- io.mapOptional("clang-extra-args", opts.clangExtraArgs, {});
++ io.mapOptional("clang-extra-args", opts.clangExtraArgs, (__typeof__(opts.clangExtraArgs)){});
+ io.mapOptional("clang-resource-path", opts.clangResourcePath,
+ std::string());
+ }
+@@ -205,10 +204,10 @@
+ std::string());
+ io.mapOptional("private-umbrella-header-path",
+ opts.privateUmbrellaHeaderPath, std::string());
+- io.mapOptional("extra-public-headers", opts.extraPublicHeaders, {});
+- io.mapOptional("extra-private-headers", opts.extraPrivateHeaders, {});
+- io.mapOptional("exclude-public-headers", opts.excludePublicHeaders, {});
+- io.mapOptional("exclude-private-headers", opts.excludePrivateHeaders, {});
++ io.mapOptional("extra-public-headers", opts.extraPublicHeaders, (__typeof__(opts.extraPublicHeaders)){});
++ io.mapOptional("extra-private-headers", opts.extraPrivateHeaders, (__typeof__(opts.extraPrivateHeaders)){});
++ io.mapOptional("exclude-public-headers", opts.excludePublicHeaders, (__typeof__(opts.excludePublicHeaders)){});
++ io.mapOptional("exclude-private-headers", opts.excludePrivateHeaders, (__typeof__(opts.excludePrivateHeaders)){});
+ io.mapOptional("verify-against", opts.verifyAgainst, std::string());
+ io.mapOptional("verification-mode", opts.verificationMode,
+ VerificationMode::ErrorsOnly);
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/SnapshotFileSystem.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/SnapshotFileSystem.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/SnapshotFileSystem.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/SnapshotFileSystem.cpp 2019-12-15 23:44:31.000000000 -1000
+@@ -79,7 +79,7 @@
+ return status;
+ } // directory
+ auto *directory = cast<DirectoryEntry>(entry);
+- return Status::copyWithNewName(directory->getStatus(), path.str());
++ return Status::copyWithNewName(directory->getStatus(), path);
+ }
+
+ ErrorOr<Status> SnapshotFileSystem::status(const Twine &path) {
+@@ -125,7 +125,7 @@
+ };
+ } // end anonymous namespace
+
+-ErrorOr<std::unique_ptr<clang::vfs::File>>
++ErrorOr<std::unique_ptr<llvm::vfs::File>>
+ SnapshotFileSystem::openFileForRead(const Twine &path) {
+ auto result = lookupPath(path);
+ if (auto ec = result.getError())
+@@ -145,10 +145,10 @@
+
+ auto status = getFileStatus(path, *externalStatus);
+ return std::unique_ptr<File>(
+- make_unique<FileWithFixedStatus>(std::move(*result2), status));
++ std::make_unique<FileWithFixedStatus>(std::move(*result2), status));
+ }
+
+-class SnapshotDirIterImpl : public clang::vfs::detail::DirIterImpl {
++class SnapshotDirIterImpl : public llvm::vfs::detail::DirIterImpl {
+ std::string dir;
+ SnapshotFileSystem &fs;
+ SnapshotFileSystem::DirectoryEntry::iterator current, end;
+@@ -169,13 +169,29 @@
+ if ((ec = result.getError()))
+ return;
+
+- CurrentEntry = *result;
++ sys::fs::file_type Type;
++ switch ((*current)->getKind()) {
++ case SnapshotFileSystem::EntryKind::Directory:
++ Type = sys::fs::file_type::directory_file;
++ break;
++ case SnapshotFileSystem::EntryKind::File:
++ Type = sys::fs::file_type::regular_file;
++ break;
++ }
++
++ CurrentEntry = llvm::vfs::directory_entry(path.str(), Type);
+ }
+
+ std::error_code increment() override {
++ sys::fs::file_type Type;
+ if (++current == end) {
+- CurrentEntry = Status();
+- return {};
++ if (Status().isDirectory())
++ Type = sys::fs::file_type::directory_file;
++ else
++ Type = sys::fs::file_type::regular_file;
++
++ CurrentEntry = llvm::vfs::directory_entry(Status().getName().str(), Type);
++ return {};
+ }
+
+ SmallString<PATH_MAX> path(dir);
+@@ -184,7 +200,16 @@
+ if (auto ec = result.getError())
+ return ec;
+
+- CurrentEntry = *result;
++ switch ((*current)->getKind()) {
++ case SnapshotFileSystem::EntryKind::Directory:
++ Type = sys::fs::file_type::directory_file;
++ break;
++ case SnapshotFileSystem::EntryKind::File:
++ Type = sys::fs::file_type::regular_file;
++ break;
++ }
++
++ CurrentEntry = llvm::vfs::directory_entry(path.str(), Type);
+ return {};
+ }
+ };
+@@ -236,7 +261,7 @@
+ if (auto ec = directory.getError())
+ return ec;
+ return cast<FileEntry>(directory.get()->addContent(
+- make_unique<FileEntry>(filename, externalPath)));
++ std::make_unique<FileEntry>(filename, externalPath)));
+ }
+
+ ErrorOr<SnapshotFileSystem::DirectoryEntry *>
+@@ -252,7 +277,7 @@
+ return cast<DirectoryEntry>(entry.get());
+ }
+ return cast<DirectoryEntry>(
+- current->addContent(make_unique<DirectoryEntry>(name)));
++ current->addContent(std::make_unique<DirectoryEntry>(name)));
+ }
+
+ ErrorOr<SnapshotFileSystem::DirectoryEntry *>
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/StubDriver.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/StubDriver.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Driver/StubDriver.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Driver/StubDriver.cpp 2019-12-15 00:18:30.000000000 -1000
+@@ -142,7 +142,7 @@
+ std::shared_ptr<InterfaceFile> reexportedDylib;
+ auto *file2 = file.get().release();
+ if (auto *extended = dyn_cast<ExtendedInterfaceFile>(file2))
+- reexportedDylib = make_unique<InterfaceFile>(std::move(*extended));
++ reexportedDylib = std::make_unique<InterfaceFile>(std::move(*extended));
+ else
+ reexportedDylib =
+ std::unique_ptr<InterfaceFile>(cast<InterfaceFile>(file2));
+@@ -232,11 +232,13 @@
+ }
+
+ static bool stubifyDynamicLibrary(Context &ctx) {
+- const auto *inputFile = ctx.fm.getFile(ctx.inputPath);
+- if (!inputFile) {
+- ctx.diag.report(clang::diag::err_drv_no_such_file) << ctx.inputPath;
++ const auto inputFileOrErr = ctx.fm.getFile(ctx.inputPath);
++ if (auto ec = inputFileOrErr.getError()) {
++ ctx.diag.report(clang::diag::err_drv_no_such_file)
++ << ctx.inputPath << ec.message();;
+ return false;
+ }
++ const auto *inputFile = inputFileOrErr.get();
+ auto bufferOrErr = ctx.fm.getBufferForFile(inputFile);
+ if (auto ec = bufferOrErr.getError()) {
+ ctx.diag.report(diag::err_cannot_read_file)
+@@ -264,7 +266,7 @@
+ std::unique_ptr<InterfaceFile> interface;
+ auto *file2 = file.get().release();
+ if (auto *extended = dyn_cast<ExtendedInterfaceFile>(file2))
+- interface = make_unique<InterfaceFile>(std::move(*extended));
++ interface = std::make_unique<InterfaceFile>(std::move(*extended));
+ else
+ interface = std::unique_ptr<InterfaceFile>(cast<InterfaceFile>(file2));
+
+@@ -422,9 +424,10 @@
+ }
+
+ // We only have to look at files.
+- auto *file = ctx.fm.getFile(path);
+- if (!file)
++ auto fileOrErr = ctx.fm.getFile(path);
++ if (!fileOrErr)
+ continue;
++ auto *file = fileOrErr.get();
+
+ if (ctx.deletePrivateFrameworks &&
+ isPrivatePath(path.drop_front(ctx.inputPath.size()))) {
+@@ -458,7 +461,7 @@
+ std::unique_ptr<InterfaceFile> interface;
+ auto *file3 = file2.get().release();
+ if (auto *extended = dyn_cast<ExtendedInterfaceFile>(file3))
+- interface = make_unique<InterfaceFile>(std::move(*extended));
++ interface = std::make_unique<InterfaceFile>(std::move(*extended));
+ else
+ interface = std::unique_ptr<InterfaceFile>(cast<InterfaceFile>(file3));
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/APIVisitor.h llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/APIVisitor.h
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/APIVisitor.h 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/APIVisitor.h 2019-12-12 10:08:30.000000000 -1000
+@@ -96,7 +96,7 @@
+ context.ast = &compiler.getASTContext();
+ context.sourceMgr = &compiler.getSourceManager();
+ context.pp = compiler.getPreprocessorPtr();
+- return llvm::make_unique<APIVisitor>(context);
++ return std::make_unique<APIVisitor>(context);
+ }
+
+ FrontendContext &context;
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/Frontend.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/Frontend.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/Frontend.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/Frontend.cpp 2019-12-12 10:54:15.000000000 -1000
+@@ -35,32 +35,32 @@
+
+ TAPI_NAMESPACE_INTERNAL_BEGIN
+
+-static StringRef getLanguageOptions(clang::InputKind::Language lang) {
++static StringRef getLanguageOptions(clang::Language lang) {
+ switch (lang) {
+ default:
+ return "";
+- case clang::InputKind::C:
++ case clang::Language::C:
+ return "-xc";
+- case clang::InputKind::CXX:
++ case clang::Language::CXX:
+ return "-xc++";
+- case clang::InputKind::ObjC:
++ case clang::Language::ObjC:
+ return "-xobjective-c";
+- case clang::InputKind::ObjCXX:
++ case clang::Language::ObjCXX:
+ return "-xobjective-c++";
+ }
+ }
+
+-static StringRef getFileExtension(clang::InputKind::Language lang) {
++static StringRef getFileExtension(clang::Language lang) {
+ switch (lang) {
+ default:
+ llvm_unreachable("Unexpected language option.");
+- case clang::InputKind::C:
++ case clang::Language::C:
+ return ".c";
+- case clang::InputKind::CXX:
++ case clang::Language::CXX:
+ return ".cpp";
+- case clang::InputKind::ObjC:
++ case clang::Language::ObjC:
+ return ".m";
+- case clang::InputKind::ObjCXX:
++ case clang::Language::ObjCXX:
+ return ".mm";
+ }
+ }
+@@ -72,7 +72,7 @@
+ }
+
+ static void addHeaderInclude(StringRef headerName,
+- clang::InputKind::Language lang,
++ clang::Language lang,
+ SmallVectorImpl<char> &includes) {
+ SmallString<PATH_MAX> name;
+ if (!(headerName.startswith("\"") && headerName.endswith("\"")) &&
+@@ -83,7 +83,7 @@
+ } else
+ name += headerName;
+
+- if (lang == clang::InputKind::C || lang == clang::InputKind::CXX)
++ if (lang == clang::Language::C || lang == clang::Language::CXX)
+ includes += "#include ";
+ else
+ includes += "#import ";
+@@ -118,9 +118,7 @@
+ const opt::ArgStringList &cc1Args) {
+ assert(!cc1Args.empty() && "Must at least contain the program name!");
+ CompilerInvocation *invocation = new CompilerInvocation;
+- CompilerInvocation::CreateFromArgs(*invocation, cc1Args.data() + 1,
+- cc1Args.data() + cc1Args.size(),
+- *diagnostics);
++ CompilerInvocation::CreateFromArgs(*invocation, cc1Args, *diagnostics);
+ invocation->getFrontendOpts().DisableFree = false;
+ invocation->getCodeGenOpts().DisableFree = false;
+ return invocation;
+@@ -128,10 +126,10 @@
+
+ static bool runClang(FrontendContext &context, ArrayRef<std::string> options,
+ std::unique_ptr<llvm::MemoryBuffer> input) {
+- context.compiler = make_unique<CompilerInstance>();
++ context.compiler = std::make_unique<CompilerInstance>();
+ IntrusiveRefCntPtr<DiagnosticIDs> diagID(new DiagnosticIDs());
+ IntrusiveRefCntPtr<DiagnosticOptions> diagOpts(new DiagnosticOptions());
+- std::unique_ptr<llvm::opt::OptTable> opts = driver::createDriverOptTable();
++ const llvm::opt::OptTable *opts = &driver::getDriverOptTable();
+
+ std::vector<const char *> argv;
+ for (const std::string &str : options)
+@@ -146,9 +144,10 @@
+ DiagnosticsEngine diagnosticsEngine(diagID, &*diagOpts, &diagnosticPrinter,
+ false);
+
++ IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS(&(context.fileManager->getVirtualFileSystem()));
+ const std::unique_ptr<clang::driver::Driver> driver(new clang::driver::Driver(
+ binaryName, llvm::sys::getDefaultTargetTriple(), diagnosticsEngine,
+- context.fileManager->getVirtualFileSystem()));
++ VFS));
+ driver->setTitle("tapi");
+ // Since the input might only be virtual, don't check whether it exists.
+ driver->setCheckInputsExist(false);
+@@ -178,7 +177,7 @@
+ // Create a compiler instance to handle the actual work.
+ context.compiler->setInvocation(std::move(invocation));
+ context.compiler->setFileManager(&*(context.fileManager));
+- auto action = make_unique<APIVisitorAction>(context);
++ auto action = std::make_unique<APIVisitorAction>(context);
+
+ // Create the compiler's actual diagnostics engine.
+ context.compiler->createDiagnostics();
+@@ -210,8 +209,11 @@
+ : header.includeName,
+ job.language, headerContents);
+
+- const auto *file = context.fileManager->getFile(header.fullPath);
+- context.files.emplace(file, header.type);
++ auto fileOrError = context.fileManager->getFile(header.fullPath);
++ if (fileOrError) {
++ const auto *file = fileOrError.get();
++ context.files.emplace(file, header.type);
++ }
+ }
+
+ inputFilePath =
+@@ -219,8 +221,11 @@
+ input = llvm::MemoryBuffer::getMemBufferCopy(headerContents, inputFilePath);
+ } else {
+ inputFilePath = inputFilename;
+- const auto *file = context.fileManager->getFile(inputFilename);
+- context.files.emplace(file, HeaderType::Public);
++ auto fileOrErr = context.fileManager->getFile(inputFilename);
++ if (fileOrErr) {
++ const auto *file = fileOrErr.get();
++ context.files.emplace(file, HeaderType::Public);
++ }
+ }
+
+ std::vector<std::string> args;
+@@ -300,8 +305,8 @@
+ }
+
+ // For c++ and objective-c++, add default stdlib to be libc++.
+- if (job.language == clang::InputKind::CXX ||
+- job.language == clang::InputKind::ObjCXX)
++ if (job.language == clang::Language::CXX ||
++ job.language == clang::Language::ObjCXX)
+ args.emplace_back("-stdlib=libc++");
+
+ // Add extra clang arguments.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/FrontendContext.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/FrontendContext.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/FrontendContext.cpp 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/FrontendContext.cpp 2019-12-12 10:55:00.000000000 -1000
+@@ -19,7 +19,7 @@
+ FrontendContext::FrontendContext(
+ StringRef workingDirectory,
+ IntrusiveRefCntPtr<FileSystemStatCacheFactory> cacheFactory,
+- IntrusiveRefCntPtr<clang::vfs::FileSystem> vfs) {
++ IntrusiveRefCntPtr<llvm::vfs::FileSystem> vfs) {
+ fileManager = new FileManager(clang::FileSystemOptions{workingDirectory},
+ cacheFactory, vfs);
+ }
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/CMakeLists.txt 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/CMakeLists.txt 2019-12-12 10:57:11.000000000 -1000
+@@ -1,4 +1,4 @@
+ add_subdirectory(libtapi)
+ add_subdirectory(tapi)
+-add_subdirectory(tapi-run)
++#add_subdirectory(tapi-run)
+ add_subdirectory(tapi-frontend)
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/CMakeLists.txt 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/CMakeLists.txt 2019-05-30 08:01:05.000000000 -1000
+@@ -20,10 +20,12 @@
+ OUTPUT_NAME "tapi"
+ )
+
++if(APPLE)
++
+ set(DYLIB_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
+ set_property(TARGET libtapi APPEND_STRING
+ PROPERTY
+- LINK_FLAGS " -current_version ${DYLIB_VERSION} -compatibility_version 1 -allowable_client ld"
++ LINK_FLAGS " -current_version ${DYLIB_VERSION} -compatibility_version 1 " #-allowable_client ld"
+ )
+
+ if(LINKER_SUPPORTS_NO_INITS)
+@@ -32,3 +34,6 @@
+ LINK_FLAGS " -Wl,-no_inits"
+ )
+ endif()
++
++endif()
++
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/LinkerInterfaceFile.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/LinkerInterfaceFile.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/LinkerInterfaceFile.cpp 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/LinkerInterfaceFile.cpp 2019-12-12 09:56:14.000000000 -1000
+@@ -298,6 +298,10 @@
+ return Platform::tvOS;
+ case tapi::internal::Platform::bridgeOS:
+ return Platform::bridgeOS;
++ case tapi::internal::Platform::iOSMac:
++ return Platform::iOSMac;
++ case tapi::internal::Platform::zippered:
++ return Platform::zippered;
+ }
+ }
+
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/libtapi.cpp llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/libtapi.cpp
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/libtapi/libtapi.cpp 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/libtapi/libtapi.cpp 2019-05-30 08:01:05.000000000 -1000
+@@ -47,12 +47,16 @@
+
+ namespace sys {
+
++#ifdef __APPLE__
++
+ bool RemoveFileOnSignal(StringRef Filename, std::string *ErrMsg) { abort(); }
+
+ void DontRemoveFileOnSignal(StringRef Filename) { abort(); }
+
+ void AddSignalHandler(void (*)(void *), void *) { abort(); }
+
++#endif
++
+ } // end namespace sys.
+
+ } // end namespace llvm.
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/tapi/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/tapi/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/tools/tapi/CMakeLists.txt 2019-12-16 00:04:41.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/tools/tapi/CMakeLists.txt 2019-12-12 11:05:56.000000000 -1000
+@@ -15,9 +15,9 @@
+ tapi.cpp
+ )
+
+-target_link_libraries(tapi
++target_link_libraries(tapi PRIVATE
+ tapiDriver
+ )
+
+ add_dependencies(tapi tapi-clang-headers)
+
diff --git a/data/_llvm10/libtapi-dynamic.diff-breaks b/data/_llvm10/libtapi-dynamic.diff-breaks
new file mode 100644
index 000000000..5b5037f6b
--- /dev/null
+++ b/data/_llvm10/libtapi-dynamic.diff-breaks
@@ -0,0 +1,91 @@
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Core/CMakeLists.txt 2019-12-16 13:43:35.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Core/CMakeLists.txt 2019-12-16 13:21:43.000000000 -1000
+@@ -3,6 +3,45 @@
+ BinaryFormat
+ )
+
++if(CLANG_LINK_CLANG_DYLIB)
++add_tapi_library(tapiCore
++ Architecture.cpp
++ ArchitectureSet.cpp
++ ArchitectureSupport.cpp
++ API.cpp
++ APIPrinter.cpp
++ APIVisitor.cpp
++ AvailabilityInfo.cpp
++ FakeSymbols.cpp
++ FileManager.cpp
++ FileSystem.cpp
++ Framework.cpp
++ ExtendedInterfaceFile.cpp
++ HeaderFile.cpp
++ InterfaceFile.cpp
++ InterfaceFileBase.cpp
++ InterfaceFileManager.cpp
++ JSONFile.cpp
++ MachODylibReader.cpp
++ Path.cpp
++ Platform.cpp
++ ReexportFileWriter.cpp
++ Registry.cpp
++ Symbol.cpp
++ TapiError.cpp
++ TextStub_v1.cpp
++ TextStub_v2.cpp
++ TextStub_v3.cpp
++ Utils.cpp
++ XPI.cpp
++ XPISet.cpp
++ YAML.cpp
++ YAMLReaderWriter.cpp
++
++ LINK_LIBS
++ clang-cpp
++ )
++else()
+ add_tapi_library(tapiCore
+ Architecture.cpp
+ ArchitectureSet.cpp
+@@ -40,6 +79,8 @@
+ LINK_LIBS
+ clangBasic
+ )
++endif()
++
+ add_dependencies(tapiCore clang-resource-headers)
+ if(Clang_DIR)
+ set(clang_lib_dir ${Clang_DIR}/../..)
+diff -ur llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/CMakeLists.txt llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/CMakeLists.txt
+--- llvm-project-apple-stable-20191106/llvm/projects/libtapi/lib/Frontend/CMakeLists.txt 2019-03-22 10:58:37.000000000 -1000
++++ llvm-project-apple-stable-20191106+arm64e/llvm/projects/libtapi/lib/Frontend/CMakeLists.txt 2019-12-16 13:20:44.000000000 -1000
+@@ -3,6 +3,7 @@
+ Core
+ )
+
++if(CLANG_LINK_CLANG_DYLIB)
+ add_tapi_library(tapiFrontend
+ APIVisitor.cpp
+ Frontend.cpp
+@@ -12,6 +13,20 @@
+ ClangDriverOptions
+
+ LINK_LIBS
+- clangFrontend
+ tapiDiagnostics
++ clang-cpp
++ )
++else()
++add_tapi_library(tapiFrontend
++ APIVisitor.cpp
++ Frontend.cpp
++ FrontendContext.cpp
++
++ DEPENDS
++ ClangDriverOptions
++
++ LINK_LIBS
++ tapiDiagnostics
++ clangFrontend
+ )
++endif()
diff --git a/data/_llvm10/lldbwut.diff b/data/_llvm10/lldbwut.diff
new file mode 100644
index 000000000..940e413ff
--- /dev/null
+++ b/data/_llvm10/lldbwut.diff
@@ -0,0 +1,105 @@
+diff -ur llvm-project-apple-stable-20191106/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp llvm-project-apple-stable-20191106+iOS/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
+--- llvm-project-apple-stable-20191106/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp 2019-12-05 22:51:42.000000000 -1000
+@@ -330,6 +330,7 @@
+
+ const bool isInstance = instance;
+ const bool isVariadic = false;
++ const bool isPropertyAccessor = false;
+ const bool isSynthesized = false;
+ const bool isImplicitlyDeclared = true;
+ const bool isDefined = false;
+@@ -376,7 +377,7 @@
+
+ clang::ObjCMethodDecl *ret = clang::ObjCMethodDecl::Create(
+ ast_ctx, clang::SourceLocation(), clang::SourceLocation(), sel,
+- ret_type, nullptr, interface_decl, isInstance, isVariadic,
++ ret_type, nullptr, interface_decl, isInstance, isVariadic, isPropertyAccessor,
+ isSynthesized, isImplicitlyDeclared, isDefined, impControl,
+ HasRelatedResultType);
+
+diff -ur llvm-project-apple-stable-20191106/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp llvm-project-apple-stable-20191106+iOS/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+--- llvm-project-apple-stable-20191106/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp 2019-12-05 23:09:53.000000000 -1000
+@@ -2538,8 +2538,7 @@
+
+ // Next we need to determine the correct path for the dyld shared cache.
+
+- ArchSpec header_arch;
+- GetArchitecture(header_arch);
++ ArchSpec header_arch = GetArchitecture();
+ char dsc_path[PATH_MAX];
+ char dsc_path_development[PATH_MAX];
+
+@@ -3494,7 +3493,7 @@
+ N_FUN_addr_to_sym_idx.equal_range(nlist.n_value);
+ if (range.first != range.second) {
+ bool found_it = false;
+- for (const auto pos = range.first;
++ for (ValueToSymbolIndexMap::const_iterator pos = range.first;
+ pos != range.second; ++pos) {
+ if (sym[sym_idx].GetMangled().GetName(
+ lldb::eLanguageTypeUnknown,
+@@ -3539,7 +3538,7 @@
+ nlist.n_value);
+ if (range.first != range.second) {
+ bool found_it = false;
+- for (const auto pos = range.first;
++ for (ValueToSymbolIndexMap::const_iterator pos = range.first;
+ pos != range.second; ++pos) {
+ if (sym[sym_idx].GetMangled().GetName(
+ lldb::eLanguageTypeUnknown,
+diff -ur llvm-project-apple-stable-20191106/lldb/source/Symbol/ClangASTContext.cpp llvm-project-apple-stable-20191106+iOS/lldb/source/Symbol/ClangASTContext.cpp
+--- llvm-project-apple-stable-20191106/lldb/source/Symbol/ClangASTContext.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/lldb/source/Symbol/ClangASTContext.cpp 2019-12-05 23:15:15.000000000 -1000
+@@ -8489,6 +8489,7 @@
+ ? class_interface_decl->lookupInstanceMethod(getter_sel)
+ : class_interface_decl->lookupClassMethod(getter_sel))) {
+ const bool isVariadic = false;
++ const bool isPropertyAccessor = false;
+ const bool isSynthesized = false;
+ const bool isImplicitlyDeclared = true;
+ const bool isDefined = false;
+@@ -8499,7 +8500,7 @@
+ clang::ObjCMethodDecl *getter = clang::ObjCMethodDecl::Create(
+ *clang_ast, clang::SourceLocation(), clang::SourceLocation(),
+ getter_sel, ClangUtil::GetQualType(property_clang_type_to_access),
+- nullptr, class_interface_decl, isInstance, isVariadic,
++ nullptr, class_interface_decl, isInstance, isVariadic, isPropertyAccessor,
+ isSynthesized, isImplicitlyDeclared, isDefined, impControl,
+ HasRelatedResultType);
+
+@@ -8521,6 +8522,7 @@
+ : class_interface_decl->lookupClassMethod(setter_sel))) {
+ clang::QualType result_type = clang_ast->VoidTy;
+ const bool isVariadic = false;
++ const bool isPropertyAccessor = false;
+ const bool isSynthesized = false;
+ const bool isImplicitlyDeclared = true;
+ const bool isDefined = false;
+@@ -8531,7 +8533,7 @@
+ clang::ObjCMethodDecl *setter = clang::ObjCMethodDecl::Create(
+ *clang_ast, clang::SourceLocation(), clang::SourceLocation(),
+ setter_sel, result_type, nullptr, class_interface_decl,
+- isInstance, isVariadic, isSynthesized, isImplicitlyDeclared,
++ isInstance, isVariadic, isPropertyAccessor, isSynthesized, isImplicitlyDeclared,
+ isDefined, impControl, HasRelatedResultType);
+
+ if (setter && metadata)
+@@ -8634,6 +8636,7 @@
+ if (!method_function_prototype)
+ return nullptr;
+
++ bool isPropertyAccessor = false;
+ bool is_synthesized = false;
+ bool is_defined = false;
+ clang::ObjCMethodDecl::ImplementationControl imp_control =
+@@ -8653,7 +8656,7 @@
+ nullptr, // TypeSourceInfo *ResultTInfo,
+ ClangASTContext::GetASTContext(ast)->GetDeclContextForType(
+ ClangUtil::GetQualType(type)),
+- name[0] == '-', is_variadic, is_synthesized,
++ name[0] == '-', is_variadic, isPropertyAccessor, is_synthesized,
+ true, // is_implicitly_declared; we force this to true because we don't
+ // have source locations
+ is_defined, imp_control, false /*has_related_result_type*/);
diff --git a/data/_llvm10/make.sh b/data/_llvm10/make.sh
new file mode 100644
index 000000000..f5802bb81
--- /dev/null
+++ b/data/_llvm10/make.sh
@@ -0,0 +1,80 @@
+LLVM_VERSION=$(sed -rne "s,^([0-9]+).*,\1,p" < "${PKG_DATA}"/_metadata/version)
+LLVM_VERSION_FULL=$(sed -rne "s,^([0-9.]+)(~|-)(.*),\1,p" < "${PKG_DATA}"/_metadata/version)
+if [ "$1" != "compile" ]; then
+pkg:extract
+mv tapi* libtapi
+mv libtapi llvm*/llvm/projects/
+cd */
+pkg:patch
+else
+ cd */
+fi
+if [ "$1" != "compile" ]; then
+mv llvm/projects/libtapi ../
+rm -rf native
+mkdir native
+cd native
+MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | sed -e 's/\.[0-9]*$//')" CC="$(xcrun -f clang)" CXX="$(xcrun -f clang++)" cmake -j16 -DCMAKE_INSTALL_NAME_DIR="/usr/local/lib" -DCMAKE_INSTALL_LIBDIR="local/lib" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_ENABLE_PROJECTS="clang;lldb" -DCMAKE_BUILD_TYPE=RELEASE -DLLVM_INCLUDE_TESTS=OFF ../llvm
+make -j16 llvm-tblgen clang-tblgen lldb-tblgen
+cd ..
+mv ../libtapi llvm/projects/
+mkdir build
+fi
+pwd
+cd build
+unset MIGCC
+export MIGCC
+
+unset MACOSX_DEPLOYMENT_TARGET
+TARGET_TRIPLE=""
+case "${PKG_ARCH}" in
+ "iphoneos-"*)
+ TARGET_TRIPLE="arm64-apple-ios7.0"
+ ;;
+ "appletvos-"*)
+ TARGET_TRIPLE="arm64-apple-tvos9.0"
+ ;;
+ "watchos-"*)
+ TARGET_TRIPLE="arm64-apple-watchos2.0"
+ ;;
+ *)
+ echo "Unsupported arch ${PKG_ARCH} - edit make.sh"
+ exit -1
+ ;;
+esac
+
+if [ "$1" != "compile" ]; then
+cat >iphoneos_toolchain.cmake <<EOF
+set(CMAKE_SYSTEM_NAME Darwin)
+# Tell CMake we're cross-compiling
+set(CMAKE_CROSSCOMPILING true)
+#include(CMakeForceCompiler)
+# Prefix detection only works with compiler id "GNU"
+# CMake will look for prefixed g++, cpp, ld, etc. automatically
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+set(triple ${PKG_TARG})
+set(CMAKE_FIND_ROOT_PATH $(echo ${PKG_PATH} | sed -e s/:/' '/g))
+set(CMAKE_LIBRARY_PATH $(echo ${LIBRARY_PATH} | sed -e s/:/' '/g))
+set(CMAKE_INCLUDE_PATH $(echo ${INCLUDE_PATH} | sed -e s/:/' '/g))
+set(CMAKE_C_COMPILER ${PKG_TARG}-gcc)
+set(CMAKE_CXX_COMPILER ${PKG_TARG}-g++)
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+EOF
+#set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG 1)
+
+#cmake -j16 -DCMAKE_TOOLCHAIN_FILE=iphoneos_toolchain.cmake -DCMAKE_INSTALL_NAME_DIR="/usr/local/lib" -DCMAKE_INSTALL_LIBDIR="local/lib" -DCMAKE_INSTALL_RPATH="/usr/" -DCMAKE_OSX_SYSROOT="${PKG_ROOT}" -DCMAKE_INSTALL_PREFIX="/usr/" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_SYSTEM_NAME=Darwin -DLLVM_TABLEGEN="$(pwd)/../native/bin/llvm-tblgen" -DCLANG_TABLEGEN="$(pwd)/../native/bin/clang-tblgen" -DLLDB_TABLEGEN="${PWD}/../native/bin/lldb-tblgen" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLIBCXX_OVERRIDE_DARWIN_INSTALL=ON -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET_TRIPLE}" -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;lldb" -DLLDB_FRAMEWORK_INSTALL_DIR="/Library/Frameworks" ../llvm
+fi
+cmake -j16 -DCMAKE_TOOLCHAIN_FILE=iphoneos_toolchain.cmake -DCMAKE_OSX_SYSROOT="${PKG_ROOT}" -DCLANG_VERSION="${LLVM_VERSION_FULL}" -DCMAKE_INSTALL_NAME_DIR="/usr/lib/llvm-${LLVM_VERSION}/lib" -DCMAKE_INSTALL_RPATH="/usr/lib/llvm-${LLVM_VERSION}" -DCMAKE_INSTALL_PREFIX="/usr/lib/llvm-${LLVM_VERSION}" -DLLVM_INCLUDE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Darwin -DLLVM_TABLEGEN="${PWD}/../native/bin/llvm-tblgen" -DCLANG_TABLEGEN="${PWD}/../native/bin/clang-tblgen" -DLLDB_TABLEGEN="${PWD}/../native/bin/lldb-tblgen" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLIBCXX_OVERRIDE_DARWIN_INSTALL=ON -DLLVM_DEFAULT_TARGET_TRIPLE="${TARGET_TRIPLE}" -DCLANG_LINK_CLANG_DYLIB=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;lldb;tapi" -DCLANG_TABLEGEN_EXE="${PWD}/../native/bin/clang-tblgen" -DLLVM_VERSION_SUFFIX="" ../llvm
+# Need to fix CMakeLists.txt but this makes it build the clang deps before tapi
+make -j16 clang
+make -j16
+pkg:install
+pkg: ln -s lib/llvm-10/include /usr/include
+pkg: ldid -S"${PKG_DATA}/debugserver.xml" /usr/lib/llvm-10/bin/debugserver
+#pkg: mkdir -p /usr/local/lib
+#mv ${PKG_DEST}/usr/lib/*.dylib ${PKG_DEST}/usr/local/lib
+#pkg: find /usr/lib -name '*.a' -exec rm {} +
+#pkg: mkdir -p /usr/share/SDKs
+cd ..
diff --git a/data/_llvm10/mutex-availability.diff b/data/_llvm10/mutex-availability.diff
new file mode 100644
index 000000000..f3fb57074
--- /dev/null
+++ b/data/_llvm10/mutex-availability.diff
@@ -0,0 +1,34 @@
+diff -ur llvm-project-apple-stable-20191106/llvm/include/llvm/Support/RWMutex.h llvm-project-apple-stable-20191106+iOS/llvm/include/llvm/Support/RWMutex.h
+--- llvm-project-apple-stable-20191106/llvm/include/llvm/Support/RWMutex.h 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/llvm/include/llvm/Support/RWMutex.h 2019-12-04 13:58:07.000000000 -1000
+@@ -19,12 +19,29 @@
+ #include <mutex>
+ #include <shared_mutex>
+
++#if defined(__APPLE__)
+ // std::shared_timed_mutex is only availble on macOS 10.12 and later.
+-#if defined(__APPLE__) && defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
++#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
+ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200
+ #define LLVM_USE_RW_MUTEX_IMPL
+ #endif
++// std::shared_timed_mutex is only availble on iOS 10 and later.
++#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
++#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 100000
++#define LLVM_USE_RW_MUTEX_IMPL
++#endif
++// std::shared_timed_mutex is only availble on tvOS 10 and later.
++#elif defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__)
++#if __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 100000
++#define LLVM_USE_RW_MUTEX_IMPL
++#endif
++// std::shared_timed_mutex is only availble on watchOS 3 and later.
++#elif defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__)
++#if __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 30000
++#define LLVM_USE_RW_MUTEX_IMPL
++#endif
+ #endif
++#endif // __APPLE__
+
+ namespace llvm {
+ namespace sys {
diff --git a/data/_llvm10/sdkpath.diff b/data/_llvm10/sdkpath.diff
new file mode 100644
index 000000000..083e59079
--- /dev/null
+++ b/data/_llvm10/sdkpath.diff
@@ -0,0 +1,109 @@
+diff -ur llvm-project-apple-stable-20191106/clang/lib/Driver/ToolChains/Darwin.cpp llvm-project-apple-stable-20191106+iOS/clang/lib/Driver/ToolChains/Darwin.cpp
+--- llvm-project-apple-stable-20191106/clang/lib/Driver/ToolChains/Darwin.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/clang/lib/Driver/ToolChains/Darwin.cpp 2019-12-05 11:22:40.000000000 -1000
+@@ -1655,10 +1655,8 @@
+ << Triple.getOSName();
+ break;
+ case llvm::Triple::IOS:
+- Triple.getiOSVersion(Major, Minor, Micro);
+- break;
+ case llvm::Triple::TvOS:
+- Triple.getOSVersion(Major, Minor, Micro);
++ Triple.getiOSVersion(Major, Minor, Micro);
+ break;
+ case llvm::Triple::WatchOS:
+ Triple.getWatchOSVersion(Major, Minor, Micro);
+@@ -1682,9 +1680,12 @@
+
+ StringRef MachOArchName = Toolchain.getMachOArchName(Args);
+ if (MachOArchName == "armv7" || MachOArchName == "armv7s" ||
+- MachOArchName == "arm64" || MachOArchName == "arm64e")
+- OSTy = llvm::Triple::IOS;
+- else if (MachOArchName == "armv7k")
++ MachOArchName == "arm64" || MachOArchName == "arm64e") {
++ if (Triple.getOS() == llvm::Triple::TvOS)
++ OSTy = llvm::Triple::TvOS;
++ else
++ OSTy = llvm::Triple::IOS;
++ } else if (MachOArchName == "armv7k")
+ OSTy = llvm::Triple::WatchOS;
+ else if (MachOArchName != "armv6m" && MachOArchName != "armv7m" &&
+ MachOArchName != "armv7em")
+@@ -1879,6 +1880,27 @@
+ Environment = Simulator;
+
+ setTarget(Platform, Environment, Major, Minor, Micro);
++ if (!Args.getLastArg(options::OPT_isysroot)) {
++ llvm::Triple DefaultTriple(LLVM_DEFAULT_TARGET_TRIPLE);
++ switch (Platform) {
++ case DarwinPlatformKind::MacOS:
++ if (DefaultTriple.getOS() != llvm::Triple::MacOSX)
++ Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/MacOSX.sdk"));
++ break;
++ case DarwinPlatformKind::IPhoneOS:
++ if (DefaultTriple.getOS() != llvm::Triple::IOS)
++ Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/iPhoneOS.sdk"));
++ break;
++ case DarwinPlatformKind::TvOS:
++ if (DefaultTriple.getOS() != llvm::Triple::TvOS)
++ Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/AppleTVOS.sdk"));
++ break;
++ case DarwinPlatformKind::WatchOS:
++ if (DefaultTriple.getOS() != llvm::Triple::WatchOS)
++ Args.append(Args.MakeSeparateArg(nullptr, Opts.getOption(options::OPT_isysroot), "/usr/share/SDKs/WatchOS.sdk"));
++ break;
++ }
++ }
+
+ if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
+ StringRef SDK = getSDKName(A->getValue());
+@@ -1944,6 +1966,21 @@
+ SmallString<128> P(Sysroot);
+ llvm::sys::path::append(P, "usr", "include");
+ addExternCSystemInclude(DriverArgs, CC1Args, P.str());
++ if (Sysroot == "/") {
++ switch (getTriple().getOS()) {
++ case llvm::Triple::IOS:
++ addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/iPhoneOS.sdk/usr/include");
++ break;
++ case llvm::Triple::TvOS:
++ addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/AppleTVOS.sdk/usr/include");
++ break;
++ case llvm::Triple::WatchOS:
++ addExternCSystemInclude(DriverArgs, CC1Args, "/usr/share/SDKs/WatchOS.sdk/usr/include");
++ break;
++ default:
++ break;
++ }
++ }
+ }
+ }
+
+diff -ur llvm-project-apple-stable-20191106/clang/lib/Frontend/InitHeaderSearch.cpp llvm-project-apple-stable-20191106+iOS/clang/lib/Frontend/InitHeaderSearch.cpp
+--- llvm-project-apple-stable-20191106/clang/lib/Frontend/InitHeaderSearch.cpp 2019-12-03 19:28:47.000000000 -1000
++++ llvm-project-apple-stable-20191106+iOS/clang/lib/Frontend/InitHeaderSearch.cpp 2019-12-05 11:10:22.000000000 -1000
+@@ -445,6 +445,24 @@
+ if (triple.isOSDarwin()) {
+ if (HSOpts.UseStandardSystemIncludes) {
+ // Add the default framework include paths on Darwin.
++ if (!HasSysroot) {
++ switch (triple.getOS()) {
++ case llvm::Triple::IOS:
++ AddPath("/usr/share/SDKs/iPhoneOS.sdk/System/Library/Frameworks", System, true);
++ AddPath("/usr/share/SDKs/iPhoneOS.sdk/Library/Frameworks", System, true);
++ break;
++ case llvm::Triple::TvOS:
++ AddPath("/usr/share/SDKs/AppleTVOS.sdk/System/Library/Frameworks", System, true);
++ AddPath("/usr/share/SDKs/AppleTVOS.sdk/Library/Frameworks", System, true);
++ break;
++ case llvm::Triple::WatchOS:
++ AddPath("/usr/share/SDKs/WatchOS.sdk/System/Library/Frameworks", System, true);
++ AddPath("/usr/share/SDKs/WatchOS.sdk/Library/Frameworks", System, true);
++ break;
++ default:
++ break;
++ }
++ }
+ AddPath("/System/Library/Frameworks", System, true);
+ AddPath("/Library/Frameworks", System, true);
+ }
diff --git a/data/_llvm10/tapi-1000.10.8.tar.gz b/data/_llvm10/tapi-1000.10.8.tar.gz
new file mode 100644
index 000000000..521106d7f
--- /dev/null
+++ b/data/_llvm10/tapi-1000.10.8.tar.gz
Binary files differ