Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Sep 2019 17:32:57 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r351708 - in projects/clang900-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/builtins contrib/compiler-rt/lib/interception contrib/compiler-rt/lib/msan contrib/compiler-r...
Message-ID:  <201909021732.x82HWvST012604@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Mon Sep  2 17:32:57 2019
New Revision: 351708
URL: https://svnweb.freebsd.org/changeset/base/351708

Log:
  Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb, and openmp
  release_90 branch r369369, and update version numbers.

Modified:
  projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc
  projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c
  projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc
  projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc
  projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
  projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
  projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc
  projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h
  projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
  projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h
  projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
  projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h
  projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
  projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h
  projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def
  projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h
  projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h
  projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h
  projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  projects/clang900-import/contrib/llvm/lib/MC/MCContext.cpp
  projects/clang900-import/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
  projects/clang900-import/contrib/llvm/lib/Object/RelocationResolver.cpp
  projects/clang900-import/contrib/llvm/lib/Support/AArch64TargetParser.cpp
  projects/clang900-import/contrib/llvm/lib/Support/Unix/Path.inc
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64.td
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  projects/clang900-import/contrib/llvm/lib/Target/AArch64/SVEInstrFormats.td
  projects/clang900-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td
  projects/clang900-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/BPF/BPFAbstractMemberAccess.cpp
  projects/clang900-import/contrib/llvm/lib/Target/BPF/BTFDebug.cpp
  projects/clang900-import/contrib/llvm/lib/Target/BPF/BTFDebug.h
  projects/clang900-import/contrib/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
  projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h
  projects/clang900-import/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Target/X86/X86.td
  projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
  projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang900-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
  projects/clang900-import/contrib/llvm/lib/Transforms/Scalar/DivRemPairs.cpp
  projects/clang900-import/contrib/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def
  projects/clang900-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ItaniumCXXABI.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/AST/MicrosoftCXXABI.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/AArch64.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/OSTargets.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/SPIR.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Version.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/emmintrin.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c-base.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h
  projects/clang900-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaStmtAsm.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  projects/clang900-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp
  projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp
  projects/clang900-import/contrib/llvm/tools/lld/COFF/Writer.cpp
  projects/clang900-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
  projects/clang900-import/contrib/llvm/tools/lld/docs/ReleaseNotes.rst
  projects/clang900-import/contrib/llvm/tools/lldb/source/Core/IOHandler.cpp
  projects/clang900-import/lib/clang/include/clang/Config/config.h
  projects/clang900-import/lib/clang/include/lld/Common/Version.inc
  projects/clang900-import/lib/clang/include/llvm/Config/config.h
  projects/clang900-import/lib/clang/include/llvm/Config/llvm-config.h
  projects/clang900-import/lib/clang/include/llvm/Support/VCSRevision.h
Directory Properties:
  projects/clang900-import/contrib/compiler-rt/   (props changed)
  projects/clang900-import/contrib/libc++/   (props changed)
  projects/clang900-import/contrib/libunwind/   (props changed)
  projects/clang900-import/contrib/llvm/   (props changed)
  projects/clang900-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang900-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang900-import/contrib/llvm/tools/lldb/   (props changed)
  projects/clang900-import/contrib/openmp/   (props changed)

Modified: projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -39,8 +39,8 @@ void AsanOnDeadlySignal(int signo, void *siginfo, void
 
 // ---------------------- TSD ---------------- {{{1
 
-#if SANITIZER_NETBSD || SANITIZER_FREEBSD
-// Thread Static Data cannot be used in early init on NetBSD and FreeBSD.
+#if SANITIZER_NETBSD && !ASAN_DYNAMIC
+// Thread Static Data cannot be used in early static ASan init on NetBSD.
 // Reuse the Asan TSD API for compatibility with existing code
 // with an alternative implementation.
 

Modified: projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c	Mon Sep  2 17:32:57 2019	(r351708)
@@ -543,7 +543,7 @@ static void getAvailableFeatures(unsigned ECX, unsigne
     setFeature(FEATURE_BMI);
   if (HasLeaf7 && ((EBX >> 5) & 1) && HasAVX)
     setFeature(FEATURE_AVX2);
-  if (HasLeaf7 && ((EBX >> 9) & 1))
+  if (HasLeaf7 && ((EBX >> 8) & 1))
     setFeature(FEATURE_BMI2);
   if (HasLeaf7 && ((EBX >> 16) & 1) && HasAVX512Save)
     setFeature(FEATURE_AVX512F);

Modified: projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -33,7 +33,7 @@ static int StrCmp(const char *s1, const char *s2) {
 }
 #endif
 
-static void *GetFuncAddr(const char *name, uptr wrapper_addr) {
+static void *GetFuncAddr(const char *name) {
 #if SANITIZER_NETBSD
   // FIXME: Find a better way to handle renames
   if (StrCmp(name, "sigaction"))
@@ -47,18 +47,13 @@ static void *GetFuncAddr(const char *name, uptr wrappe
     // want the address of the real definition, though, so look it up using
     // RTLD_DEFAULT.
     addr = dlsym(RTLD_DEFAULT, name);
-
-    // In case `name' is not loaded, dlsym ends up finding the actual wrapper.
-    // We don't want to intercept the wrapper and have it point to itself.
-    if ((uptr)addr == wrapper_addr)
-      addr = nullptr;
   }
   return addr;
 }
 
 bool InterceptFunction(const char *name, uptr *ptr_to_real, uptr func,
                        uptr wrapper) {
-  void *addr = GetFuncAddr(name, wrapper);
+  void *addr = GetFuncAddr(name);
   *ptr_to_real = (uptr)addr;
   return addr && (func == wrapper);
 }

Modified: projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -174,8 +174,8 @@ void InstallAtExitHandler() {
 
 // ---------------------- TSD ---------------- {{{1
 
-#if SANITIZER_NETBSD || SANITIZER_FREEBSD
-// Thread Static Data cannot be used in early init on NetBSD and FreeBSD.
+#if SANITIZER_NETBSD
+// Thread Static Data cannot be used in early init on NetBSD.
 // Reuse the MSan TSD API for compatibility with existing code
 // with an alternative implementation.
 

Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -24,7 +24,7 @@ struct ioctl_desc {
   const char *name;
 };
 
-const unsigned ioctl_table_max = 1200;
+const unsigned ioctl_table_max = 1236;
 static ioctl_desc ioctl_table[ioctl_table_max];
 static unsigned ioctl_table_size = 0;
 
@@ -645,7 +645,7 @@ static void ioctl_table_fill() {
   _(SPKRTUNE, NONE, 0);
   _(SPKRGETVOL, WRITE, sizeof(unsigned int));
   _(SPKRSETVOL, READ, sizeof(unsigned int));
-#if 0 /* WIP */
+#if defined(__x86_64__)
   /* Entries from file: dev/nvmm/nvmm_ioctl.h */
   _(NVMM_IOC_CAPABILITY, WRITE, struct_nvmm_ioc_capability_sz);
   _(NVMM_IOC_MACHINE_CREATE, READWRITE, struct_nvmm_ioc_machine_create_sz);
@@ -661,7 +661,11 @@ static void ioctl_table_fill() {
   _(NVMM_IOC_GPA_UNMAP, READ, struct_nvmm_ioc_gpa_unmap_sz);
   _(NVMM_IOC_HVA_MAP, READ, struct_nvmm_ioc_hva_map_sz);
   _(NVMM_IOC_HVA_UNMAP, READ, struct_nvmm_ioc_hva_unmap_sz);
+  _(NVMM_IOC_CTL, READ, struct_nvmm_ioc_ctl_sz);
 #endif
+  /* Entries from file: dev/spi/spi_io.h */
+  _(SPI_IOCTL_CONFIGURE, READ, struct_spi_ioctl_configure_sz);
+  _(SPI_IOCTL_TRANSFER, READ, struct_spi_ioctl_transfer_sz);
   /* Entries from file: fs/autofs/autofs_ioctl.h */
   _(AUTOFSREQUEST, WRITE, struct_autofs_daemon_request_sz);
   _(AUTOFSDONE, READ, struct_autofs_daemon_done_sz);
@@ -895,6 +899,9 @@ static void ioctl_table_fill() {
   _(AUDIO_GETBUFINFO, WRITE, struct_audio_info_sz);
   _(AUDIO_SETCHAN, READ, sizeof(int));
   _(AUDIO_GETCHAN, WRITE, sizeof(int));
+  _(AUDIO_QUERYFORMAT, READWRITE, struct_audio_format_query_sz);
+  _(AUDIO_GETFORMAT, WRITE, struct_audio_info_sz);
+  _(AUDIO_SETFORMAT, READ, struct_audio_info_sz);
   _(AUDIO_MIXER_READ, READWRITE, struct_mixer_ctrl_sz);
   _(AUDIO_MIXER_WRITE, READWRITE, struct_mixer_ctrl_sz);
   _(AUDIO_MIXER_DEVINFO, READWRITE, struct_mixer_devinfo_sz);
@@ -985,6 +992,7 @@ static void ioctl_table_fill() {
   _(DIOCMWEDGES, WRITE, sizeof(int));
   _(DIOCGSECTORSIZE, WRITE, sizeof(unsigned int));
   _(DIOCGMEDIASIZE, WRITE, sizeof(uptr));
+  _(DIOCRMWEDGES, WRITE, sizeof(int));
   /* Entries from file: sys/drvctlio.h */
   _(DRVDETACHDEV, READ, struct_devdetachargs_sz);
   _(DRVRESCANBUS, READ, struct_devrescanargs_sz);
@@ -1206,6 +1214,8 @@ static void ioctl_table_fill() {
   _(SIOCGETHERCAP, READWRITE, struct_eccapreq_sz);
   _(SIOCGIFINDEX, READWRITE, struct_ifreq_sz);
   _(SIOCSETHERCAP, READ, struct_eccapreq_sz);
+  _(SIOCSIFDESCR, READ, struct_ifreq_sz);
+  _(SIOCGIFDESCR, READWRITE, struct_ifreq_sz);
   _(SIOCGUMBINFO, READWRITE, struct_ifreq_sz);
   _(SIOCSUMBPARAM, READ, struct_ifreq_sz);
   _(SIOCGUMBPARAM, READWRITE, struct_ifreq_sz);
@@ -1335,6 +1345,21 @@ static void ioctl_table_fill() {
   _(WDOGIOC_TICKLE, NONE, 0);
   _(WDOGIOC_GTICKLER, WRITE, sizeof(int));
   _(WDOGIOC_GWDOGS, READWRITE, struct_wdog_conf_sz);
+  /* Entries from file: sys/kcov.h */
+  _(KCOV_IOC_SETBUFSIZE, READ, sizeof(u64));
+  _(KCOV_IOC_ENABLE, READ, sizeof(int));
+  _(KCOV_IOC_DISABLE, NONE, 0);
+  /* Entries from file: sys/ipmi.h */
+  _(IPMICTL_RECEIVE_MSG_TRUNC, READWRITE, struct_ipmi_recv_sz);
+  _(IPMICTL_RECEIVE_MSG, READWRITE, struct_ipmi_recv_sz);
+  _(IPMICTL_SEND_COMMAND, READ, struct_ipmi_req_sz);
+  _(IPMICTL_REGISTER_FOR_CMD, READ, struct_ipmi_cmdspec_sz);
+  _(IPMICTL_UNREGISTER_FOR_CMD, READ, struct_ipmi_cmdspec_sz);
+  _(IPMICTL_SET_GETS_EVENTS_CMD, READ, sizeof(int));
+  _(IPMICTL_SET_MY_ADDRESS_CMD, READ, sizeof(unsigned int));
+  _(IPMICTL_GET_MY_ADDRESS_CMD, WRITE, sizeof(unsigned int));
+  _(IPMICTL_SET_MY_LUN_CMD, READ, sizeof(unsigned int));
+  _(IPMICTL_GET_MY_LUN_CMD, WRITE, sizeof(unsigned int));
   /* Entries from file: soundcard.h */
   _(SNDCTL_DSP_RESET, NONE, 0);
   _(SNDCTL_DSP_SYNC, NONE, 0);

Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -779,7 +779,11 @@ int internal_sysctl(const int *name, unsigned int name
 #if SANITIZER_FREEBSD
 int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
                           const void *newp, uptr newlen) {
-  return sysctlbyname(sname, oldp, (size_t *)oldlenp, newp, (size_t)newlen);
+  static decltype(sysctlbyname) *real = nullptr;
+  if (!real)
+    real = (decltype(sysctlbyname) *)dlsym(RTLD_NEXT, "sysctlbyname");
+  CHECK(real);
+  return real(sname, oldp, (size_t *)oldlenp, newp, (size_t)newlen);
 }
 #endif
 #endif

Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -62,6 +62,8 @@
 #include <sys/event.h>
 #include <sys/filio.h>
 #include <sys/ipc.h>
+#include <sys/ipmi.h>
+#include <sys/kcov.h>
 #include <sys/mman.h>
 #include <sys/module.h>
 #include <sys/mount.h>
@@ -123,9 +125,6 @@
 #include <dev/isa/isvio.h>
 #include <dev/isa/wtreg.h>
 #include <dev/iscsi/iscsi_ioctl.h>
-#if 0
-#include <dev/nvmm/nvmm_ioctl.h>
-#endif
 #include <dev/ofw/openfirmio.h>
 #include <dev/pci/amrio.h>
 #include <dev/pci/mlyreg.h>
@@ -168,6 +167,7 @@
 #include <dev/raidframe/raidframeio.h>
 #include <dev/sbus/mbppio.h>
 #include <dev/scsipi/ses.h>
+#include <dev/spi/spi_io.h>
 #include <dev/spkrio.h>
 #include <dev/sun/disklabel.h>
 #include <dev/sun/fbio.h>
@@ -221,6 +221,10 @@
 #include <regex.h>
 #include <fstab.h>
 #include <stringlist.h>
+
+#if defined(__x86_64__)
+#include <nvmm.h>
+#endif
 // clang-format on
 
 // Include these after system headers to avoid name clashes and ambiguities.
@@ -686,6 +690,26 @@ unsigned struct_usb_config_desc_sz = sizeof(usb_config
 unsigned struct_usb_ctl_report_desc_sz = sizeof(usb_ctl_report_desc);
 unsigned struct_usb_ctl_report_sz = sizeof(usb_ctl_report);
 unsigned struct_usb_ctl_request_sz = sizeof(usb_ctl_request);
+#if defined(__x86_64__)
+unsigned struct_nvmm_ioc_capability_sz = sizeof(nvmm_ioc_capability);
+unsigned struct_nvmm_ioc_machine_create_sz = sizeof(nvmm_ioc_machine_create);
+unsigned struct_nvmm_ioc_machine_destroy_sz = sizeof(nvmm_ioc_machine_destroy);
+unsigned struct_nvmm_ioc_machine_configure_sz =
+    sizeof(nvmm_ioc_machine_configure);
+unsigned struct_nvmm_ioc_vcpu_create_sz = sizeof(nvmm_ioc_vcpu_create);
+unsigned struct_nvmm_ioc_vcpu_destroy_sz = sizeof(nvmm_ioc_vcpu_destroy);
+unsigned struct_nvmm_ioc_vcpu_setstate_sz = sizeof(nvmm_ioc_vcpu_destroy);
+unsigned struct_nvmm_ioc_vcpu_getstate_sz = sizeof(nvmm_ioc_vcpu_getstate);
+unsigned struct_nvmm_ioc_vcpu_inject_sz = sizeof(nvmm_ioc_vcpu_inject);
+unsigned struct_nvmm_ioc_vcpu_run_sz = sizeof(nvmm_ioc_vcpu_run);
+unsigned struct_nvmm_ioc_gpa_map_sz = sizeof(nvmm_ioc_gpa_map);
+unsigned struct_nvmm_ioc_gpa_unmap_sz = sizeof(nvmm_ioc_gpa_unmap);
+unsigned struct_nvmm_ioc_hva_map_sz = sizeof(nvmm_ioc_hva_map);
+unsigned struct_nvmm_ioc_hva_unmap_sz = sizeof(nvmm_ioc_hva_unmap);
+unsigned struct_nvmm_ioc_ctl_sz = sizeof(nvmm_ioc_ctl);
+#endif
+unsigned struct_spi_ioctl_configure_sz = sizeof(spi_ioctl_configure);
+unsigned struct_spi_ioctl_transfer_sz = sizeof(spi_ioctl_transfer);
 unsigned struct_autofs_daemon_request_sz = sizeof(autofs_daemon_request);
 unsigned struct_autofs_daemon_done_sz = sizeof(autofs_daemon_done);
 unsigned struct_sctp_connectx_addrs_sz = sizeof(sctp_connectx_addrs);
@@ -728,6 +752,9 @@ unsigned struct_vnd_user_sz = sizeof(vnd_user);
 unsigned struct_vt_stat_sz = sizeof(vt_stat);
 unsigned struct_wdog_conf_sz = sizeof(wdog_conf);
 unsigned struct_wdog_mode_sz = sizeof(wdog_mode);
+unsigned struct_ipmi_recv_sz = sizeof(ipmi_recv);
+unsigned struct_ipmi_req_sz = sizeof(ipmi_req);
+unsigned struct_ipmi_cmdspec_sz = sizeof(ipmi_cmdspec);
 unsigned struct_wfq_conf_sz = sizeof(wfq_conf);
 unsigned struct_wfq_getqid_sz = sizeof(wfq_getqid);
 unsigned struct_wfq_getstats_sz = sizeof(wfq_getstats);
@@ -813,6 +840,7 @@ unsigned struct_iscsi_wait_event_parameters_sz =
 unsigned struct_isp_stats_sz = sizeof(isp_stats_t);
 unsigned struct_lsenable_sz = sizeof(struct lsenable);
 unsigned struct_lsdisable_sz = sizeof(struct lsdisable);
+unsigned struct_audio_format_query_sz = sizeof(audio_format_query);
 unsigned struct_mixer_ctrl_sz = sizeof(struct mixer_ctrl);
 unsigned struct_mixer_devinfo_sz = sizeof(struct mixer_devinfo);
 unsigned struct_mpu_command_rec_sz = sizeof(mpu_command_rec);
@@ -1423,7 +1451,7 @@ unsigned IOCTL_SPKRTONE = SPKRTONE;
 unsigned IOCTL_SPKRTUNE = SPKRTUNE;
 unsigned IOCTL_SPKRGETVOL = SPKRGETVOL;
 unsigned IOCTL_SPKRSETVOL = SPKRSETVOL;
-#if 0 /* interfaces are WIP */
+#if defined(__x86_64__)
 unsigned IOCTL_NVMM_IOC_CAPABILITY = NVMM_IOC_CAPABILITY;
 unsigned IOCTL_NVMM_IOC_MACHINE_CREATE = NVMM_IOC_MACHINE_CREATE;
 unsigned IOCTL_NVMM_IOC_MACHINE_DESTROY = NVMM_IOC_MACHINE_DESTROY;
@@ -1438,7 +1466,10 @@ unsigned IOCTL_NVMM_IOC_GPA_MAP = NVMM_IOC_GPA_MAP;
 unsigned IOCTL_NVMM_IOC_GPA_UNMAP = NVMM_IOC_GPA_UNMAP;
 unsigned IOCTL_NVMM_IOC_HVA_MAP = NVMM_IOC_HVA_MAP;
 unsigned IOCTL_NVMM_IOC_HVA_UNMAP = NVMM_IOC_HVA_UNMAP;
+unsigned IOCTL_NVMM_IOC_CTL = NVMM_IOC_CTL;
 #endif
+unsigned IOCTL_SPI_IOCTL_CONFIGURE = SPI_IOCTL_CONFIGURE;
+unsigned IOCTL_SPI_IOCTL_TRANSFER = SPI_IOCTL_TRANSFER;
 unsigned IOCTL_AUTOFSREQUEST = AUTOFSREQUEST;
 unsigned IOCTL_AUTOFSDONE = AUTOFSDONE;
 unsigned IOCTL_BIOCGBLEN = BIOCGBLEN;
@@ -1656,6 +1687,9 @@ unsigned IOCTL_AUDIO_GETPROPS = AUDIO_GETPROPS;
 unsigned IOCTL_AUDIO_GETBUFINFO = AUDIO_GETBUFINFO;
 unsigned IOCTL_AUDIO_SETCHAN = AUDIO_SETCHAN;
 unsigned IOCTL_AUDIO_GETCHAN = AUDIO_GETCHAN;
+unsigned IOCTL_AUDIO_QUERYFORMAT = AUDIO_QUERYFORMAT;
+unsigned IOCTL_AUDIO_GETFORMAT = AUDIO_GETFORMAT;
+unsigned IOCTL_AUDIO_SETFORMAT = AUDIO_SETFORMAT;
 unsigned IOCTL_AUDIO_MIXER_READ = AUDIO_MIXER_READ;
 unsigned IOCTL_AUDIO_MIXER_WRITE = AUDIO_MIXER_WRITE;
 unsigned IOCTL_AUDIO_MIXER_DEVINFO = AUDIO_MIXER_DEVINFO;
@@ -1741,6 +1775,7 @@ unsigned IOCTL_DIOCTUR = DIOCTUR;
 unsigned IOCTL_DIOCMWEDGES = DIOCMWEDGES;
 unsigned IOCTL_DIOCGSECTORSIZE = DIOCGSECTORSIZE;
 unsigned IOCTL_DIOCGMEDIASIZE = DIOCGMEDIASIZE;
+unsigned IOCTL_DIOCRMWEDGES = DIOCRMWEDGES;
 unsigned IOCTL_DRVDETACHDEV = DRVDETACHDEV;
 unsigned IOCTL_DRVRESCANBUS = DRVRESCANBUS;
 unsigned IOCTL_DRVCTLCOMMAND = DRVCTLCOMMAND;
@@ -1945,6 +1980,8 @@ unsigned IOCTL_SIOCSLINKSTR = SIOCSLINKSTR;
 unsigned IOCTL_SIOCGETHERCAP = SIOCGETHERCAP;
 unsigned IOCTL_SIOCGIFINDEX = SIOCGIFINDEX;
 unsigned IOCTL_SIOCSETHERCAP = SIOCSETHERCAP;
+unsigned IOCTL_SIOCSIFDESCR = SIOCSIFDESCR;
+unsigned IOCTL_SIOCGIFDESCR = SIOCGIFDESCR;
 unsigned IOCTL_SIOCGUMBINFO = SIOCGUMBINFO;
 unsigned IOCTL_SIOCSUMBPARAM = SIOCSUMBPARAM;
 unsigned IOCTL_SIOCGUMBPARAM = SIOCGUMBPARAM;
@@ -2069,6 +2106,19 @@ unsigned IOCTL_WDOGIOC_WHICH = WDOGIOC_WHICH;
 unsigned IOCTL_WDOGIOC_TICKLE = WDOGIOC_TICKLE;
 unsigned IOCTL_WDOGIOC_GTICKLER = WDOGIOC_GTICKLER;
 unsigned IOCTL_WDOGIOC_GWDOGS = WDOGIOC_GWDOGS;
+unsigned IOCTL_KCOV_IOC_SETBUFSIZE = KCOV_IOC_SETBUFSIZE;
+unsigned IOCTL_KCOV_IOC_ENABLE = KCOV_IOC_ENABLE;
+unsigned IOCTL_KCOV_IOC_DISABLE = KCOV_IOC_DISABLE;
+unsigned IOCTL_IPMICTL_RECEIVE_MSG_TRUNC = IPMICTL_RECEIVE_MSG_TRUNC;
+unsigned IOCTL_IPMICTL_RECEIVE_MSG = IPMICTL_RECEIVE_MSG;
+unsigned IOCTL_IPMICTL_SEND_COMMAND = IPMICTL_SEND_COMMAND;
+unsigned IOCTL_IPMICTL_REGISTER_FOR_CMD = IPMICTL_REGISTER_FOR_CMD;
+unsigned IOCTL_IPMICTL_UNREGISTER_FOR_CMD = IPMICTL_UNREGISTER_FOR_CMD;
+unsigned IOCTL_IPMICTL_SET_GETS_EVENTS_CMD = IPMICTL_SET_GETS_EVENTS_CMD;
+unsigned IOCTL_IPMICTL_SET_MY_ADDRESS_CMD = IPMICTL_SET_MY_ADDRESS_CMD;
+unsigned IOCTL_IPMICTL_GET_MY_ADDRESS_CMD = IPMICTL_GET_MY_ADDRESS_CMD;
+unsigned IOCTL_IPMICTL_SET_MY_LUN_CMD = IPMICTL_SET_MY_LUN_CMD;
+unsigned IOCTL_IPMICTL_GET_MY_LUN_CMD = IPMICTL_GET_MY_LUN_CMD;
 unsigned IOCTL_SNDCTL_DSP_RESET = SNDCTL_DSP_RESET;
 unsigned IOCTL_SNDCTL_DSP_SYNC = SNDCTL_DSP_SYNC;
 unsigned IOCTL_SNDCTL_DSP_SPEED = SNDCTL_DSP_SPEED;

Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -849,6 +849,25 @@ extern unsigned struct_usb_config_desc_sz;
 extern unsigned struct_usb_ctl_report_desc_sz;
 extern unsigned struct_usb_ctl_report_sz;
 extern unsigned struct_usb_ctl_request_sz;
+#if defined(__x86_64__)
+extern unsigned struct_nvmm_ioc_capability_sz;
+extern unsigned struct_nvmm_ioc_machine_create_sz;
+extern unsigned struct_nvmm_ioc_machine_destroy_sz;
+extern unsigned struct_nvmm_ioc_machine_configure_sz;
+extern unsigned struct_nvmm_ioc_vcpu_create_sz;
+extern unsigned struct_nvmm_ioc_vcpu_destroy_sz;
+extern unsigned struct_nvmm_ioc_vcpu_setstate_sz;
+extern unsigned struct_nvmm_ioc_vcpu_getstate_sz;
+extern unsigned struct_nvmm_ioc_vcpu_inject_sz;
+extern unsigned struct_nvmm_ioc_vcpu_run_sz;
+extern unsigned struct_nvmm_ioc_gpa_map_sz;
+extern unsigned struct_nvmm_ioc_gpa_unmap_sz;
+extern unsigned struct_nvmm_ioc_hva_map_sz;
+extern unsigned struct_nvmm_ioc_hva_unmap_sz;
+extern unsigned struct_nvmm_ioc_ctl_sz;
+#endif
+extern unsigned struct_spi_ioctl_configure_sz;
+extern unsigned struct_spi_ioctl_transfer_sz;
 extern unsigned struct_autofs_daemon_request_sz;
 extern unsigned struct_autofs_daemon_done_sz;
 extern unsigned struct_sctp_connectx_addrs_sz;
@@ -891,6 +910,9 @@ extern unsigned struct_vnd_user_sz;
 extern unsigned struct_vt_stat_sz;
 extern unsigned struct_wdog_conf_sz;
 extern unsigned struct_wdog_mode_sz;
+extern unsigned struct_ipmi_recv_sz;
+extern unsigned struct_ipmi_req_sz;
+extern unsigned struct_ipmi_cmdspec_sz;
 extern unsigned struct_wfq_conf_sz;
 extern unsigned struct_wfq_getqid_sz;
 extern unsigned struct_wfq_getstats_sz;
@@ -969,6 +991,7 @@ extern unsigned struct_iscsi_wait_event_parameters_sz;
 extern unsigned struct_isp_stats_sz;
 extern unsigned struct_lsenable_sz;
 extern unsigned struct_lsdisable_sz;
+extern unsigned struct_audio_format_query_sz;
 extern unsigned struct_mixer_ctrl_sz;
 extern unsigned struct_mixer_devinfo_sz;
 extern unsigned struct_mpu_command_rec_sz;
@@ -1575,7 +1598,7 @@ extern unsigned IOCTL_SPKRTONE;
 extern unsigned IOCTL_SPKRTUNE;
 extern unsigned IOCTL_SPKRGETVOL;
 extern unsigned IOCTL_SPKRSETVOL;
-#if 0 /* interfaces are WIP */
+#if defined(__x86_64__)
 extern unsigned IOCTL_NVMM_IOC_CAPABILITY;
 extern unsigned IOCTL_NVMM_IOC_MACHINE_CREATE;
 extern unsigned IOCTL_NVMM_IOC_MACHINE_DESTROY;
@@ -1590,6 +1613,7 @@ extern unsigned IOCTL_NVMM_IOC_GPA_MAP;
 extern unsigned IOCTL_NVMM_IOC_GPA_UNMAP;
 extern unsigned IOCTL_NVMM_IOC_HVA_MAP;
 extern unsigned IOCTL_NVMM_IOC_HVA_UNMAP;
+extern unsigned IOCTL_NVMM_IOC_CTL;
 #endif
 extern unsigned IOCTL_AUTOFSREQUEST;
 extern unsigned IOCTL_AUTOFSDONE;
@@ -1808,6 +1832,9 @@ extern unsigned IOCTL_AUDIO_GETPROPS;
 extern unsigned IOCTL_AUDIO_GETBUFINFO;
 extern unsigned IOCTL_AUDIO_SETCHAN;
 extern unsigned IOCTL_AUDIO_GETCHAN;
+extern unsigned IOCTL_AUDIO_QUERYFORMAT;
+extern unsigned IOCTL_AUDIO_GETFORMAT;
+extern unsigned IOCTL_AUDIO_SETFORMAT;
 extern unsigned IOCTL_AUDIO_MIXER_READ;
 extern unsigned IOCTL_AUDIO_MIXER_WRITE;
 extern unsigned IOCTL_AUDIO_MIXER_DEVINFO;
@@ -1893,6 +1920,7 @@ extern unsigned IOCTL_DIOCTUR;
 extern unsigned IOCTL_DIOCMWEDGES;
 extern unsigned IOCTL_DIOCGSECTORSIZE;
 extern unsigned IOCTL_DIOCGMEDIASIZE;
+extern unsigned IOCTL_DIOCRMWEDGES;
 extern unsigned IOCTL_DRVDETACHDEV;
 extern unsigned IOCTL_DRVRESCANBUS;
 extern unsigned IOCTL_DRVCTLCOMMAND;
@@ -1994,6 +2022,8 @@ extern unsigned IOCTL_SEQUENCER_TMR_TEMPO;
 extern unsigned IOCTL_SEQUENCER_TMR_SOURCE;
 extern unsigned IOCTL_SEQUENCER_TMR_METRONOME;
 extern unsigned IOCTL_SEQUENCER_TMR_SELECT;
+extern unsigned IOCTL_SPI_IOCTL_CONFIGURE;
+extern unsigned IOCTL_SPI_IOCTL_TRANSFER;
 extern unsigned IOCTL_MTIOCTOP;
 extern unsigned IOCTL_MTIOCGET;
 extern unsigned IOCTL_MTIOCIEOT;
@@ -2097,6 +2127,8 @@ extern unsigned IOCTL_SIOCSLINKSTR;
 extern unsigned IOCTL_SIOCGETHERCAP;
 extern unsigned IOCTL_SIOCGIFINDEX;
 extern unsigned IOCTL_SIOCSETHERCAP;
+extern unsigned IOCTL_SIOCSIFDESCR;
+extern unsigned IOCTL_SIOCGIFDESCR;
 extern unsigned IOCTL_SIOCGUMBINFO;
 extern unsigned IOCTL_SIOCSUMBPARAM;
 extern unsigned IOCTL_SIOCGUMBPARAM;
@@ -2221,6 +2253,19 @@ extern unsigned IOCTL_WDOGIOC_WHICH;
 extern unsigned IOCTL_WDOGIOC_TICKLE;
 extern unsigned IOCTL_WDOGIOC_GTICKLER;
 extern unsigned IOCTL_WDOGIOC_GWDOGS;
+extern unsigned IOCTL_KCOV_IOC_SETBUFSIZE;
+extern unsigned IOCTL_KCOV_IOC_ENABLE;
+extern unsigned IOCTL_KCOV_IOC_DISABLE;
+extern unsigned IOCTL_IPMICTL_RECEIVE_MSG_TRUNC;
+extern unsigned IOCTL_IPMICTL_RECEIVE_MSG;
+extern unsigned IOCTL_IPMICTL_SEND_COMMAND;
+extern unsigned IOCTL_IPMICTL_REGISTER_FOR_CMD;
+extern unsigned IOCTL_IPMICTL_UNREGISTER_FOR_CMD;
+extern unsigned IOCTL_IPMICTL_SET_GETS_EVENTS_CMD;
+extern unsigned IOCTL_IPMICTL_SET_MY_ADDRESS_CMD;
+extern unsigned IOCTL_IPMICTL_GET_MY_ADDRESS_CMD;
+extern unsigned IOCTL_IPMICTL_SET_MY_LUN_CMD;
+extern unsigned IOCTL_IPMICTL_GET_MY_LUN_CMD;
 extern unsigned IOCTL_SNDCTL_DSP_RESET;
 extern unsigned IOCTL_SNDCTL_DSP_SYNC;
 extern unsigned IOCTL_SNDCTL_DSP_SPEED;

Modified: projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc
==============================================================================
--- projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc	Mon Sep  2 17:32:57 2019	(r351708)
@@ -149,6 +149,7 @@ static void BackgroundThread(void *arg) {
   // We don't use ScopedIgnoreInterceptors, because we want ignores to be
   // enabled even when the thread function exits (e.g. during pthread thread
   // shutdown code).
+  cur_thread_init();
   cur_thread()->ignore_interceptors++;
   const u64 kMs2Ns = 1000 * 1000;
 

Modified: projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -949,7 +949,7 @@ template <typename DerivedT> class AAResultBase {
 
   /// A pointer to the AAResults object that this AAResult is
   /// aggregated within. May be null if not aggregated.
-  AAResults *AAR;
+  AAResults *AAR = nullptr;
 
   /// Helper to dispatch calls back through the derived type.
   DerivedT &derived() { return static_cast<DerivedT &>(*this); }

Modified: projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -269,8 +269,14 @@ class SelectionDAG {
 
   using CallSiteInfo = MachineFunction::CallSiteInfo;
   using CallSiteInfoImpl = MachineFunction::CallSiteInfoImpl;
-  DenseMap<const SDNode *, CallSiteInfo> SDCallSiteInfo;
 
+  struct CallSiteDbgInfo {
+    CallSiteInfo CSInfo;
+    MDNode *HeapAllocSite = nullptr;
+  };
+
+  DenseMap<const SDNode *, CallSiteDbgInfo> SDCallSiteDbgInfo;
+
   uint16_t NextPersistentId = 0;
 
 public:
@@ -1664,14 +1670,26 @@ class SelectionDAG {
   }
 
   void addCallSiteInfo(const SDNode *CallNode, CallSiteInfoImpl &&CallInfo) {
-    SDCallSiteInfo[CallNode] = std::move(CallInfo);
+    SDCallSiteDbgInfo[CallNode].CSInfo = std::move(CallInfo);
   }
 
   CallSiteInfo getSDCallSiteInfo(const SDNode *CallNode) {
-    auto I = SDCallSiteInfo.find(CallNode);
-    if (I != SDCallSiteInfo.end())
-      return std::move(I->second);
+    auto I = SDCallSiteDbgInfo.find(CallNode);
+    if (I != SDCallSiteDbgInfo.end())
+      return std::move(I->second).CSInfo;
     return CallSiteInfo();
+  }
+
+  void addHeapAllocSite(const SDNode *Node, MDNode *MD) {
+    SDCallSiteDbgInfo[Node].HeapAllocSite = MD;
+  }
+
+  /// Return the HeapAllocSite type associated with the SDNode, if it exists.
+  MDNode *getHeapAllocSite(const SDNode *Node) {
+    auto It = SDCallSiteDbgInfo.find(Node);
+    if (It == SDCallSiteDbgInfo.end())
+      return nullptr;
+    return It->second.HeapAllocSite;
   }
 
 private:

Modified: projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -3665,6 +3665,7 @@ class TargetLowering : public TargetLoweringBase { (pu
     C_Register,            // Constraint represents specific register(s).
     C_RegisterClass,       // Constraint represents any of register(s) in class.
     C_Memory,              // Memory constraint.
+    C_Immediate,           // Requires an immediate.
     C_Other,               // Something else.
     C_Unknown              // Unsupported constraint.
   };

Modified: projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -16,6 +16,7 @@
 
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ExecutionEngine/JITSymbol.h"
+#include "llvm/ExecutionEngine/OrcV1Deprecation.h"
 #include <memory>
 
 namespace llvm {

Modified: projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -112,6 +112,9 @@ namespace llvm {
     /// number of section symbols with the same name).
     StringMap<bool, BumpPtrAllocator &> UsedNames;
 
+    /// Keeps track of labels that are used in inline assembly.
+    SymbolTable InlineAsmUsedLabelNames;
+
     /// The next ID to dole out to an unnamed assembler temporary symbol with
     /// a given prefix.
     StringMap<unsigned> NextID;
@@ -376,6 +379,16 @@ namespace llvm {
     /// still want any modifications to the table itself to use the MCContext
     /// APIs.
     const SymbolTable &getSymbols() const { return Symbols; }
+
+    /// isInlineAsmLabel - Return true if the name is a label referenced in
+    /// inline assembly.
+    MCSymbol *getInlineAsmLabel(StringRef Name) const {
+      return InlineAsmUsedLabelNames.lookup(Name);
+    }
+
+    /// registerInlineAsmLabel - Records that the name is a label referenced in
+    /// inline assembly.
+    void registerInlineAsmLabel(MCSymbol *Sym);
 
     /// @}
 

Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def	Mon Sep  2 17:32:57 2019	(r351708)
@@ -50,35 +50,35 @@ AARCH64_ARCH("armv8.5-a", ARMV8_5A, "8.5-A", "v8.5a",
 #define AARCH64_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE)
 #endif
 // FIXME: This would be nicer were it tablegen
-AARCH64_ARCH_EXT_NAME("invalid",   AArch64::AEK_INVALID,  nullptr,  nullptr)
-AARCH64_ARCH_EXT_NAME("none",      AArch64::AEK_NONE,     nullptr,  nullptr)
-AARCH64_ARCH_EXT_NAME("crc",       AArch64::AEK_CRC,      "+crc",   "-crc")
-AARCH64_ARCH_EXT_NAME("lse",       AArch64::AEK_LSE,      "+lse",   "-lse")
-AARCH64_ARCH_EXT_NAME("rdm",       AArch64::AEK_RDM,      "+rdm",   "-rdm")
-AARCH64_ARCH_EXT_NAME("crypto",    AArch64::AEK_CRYPTO,   "+crypto","-crypto")
-AARCH64_ARCH_EXT_NAME("sm4",       AArch64::AEK_SM4,      "+sm4",   "-sm4")
-AARCH64_ARCH_EXT_NAME("sha3",      AArch64::AEK_SHA3,     "+sha3",  "-sha3")
-AARCH64_ARCH_EXT_NAME("sha2",      AArch64::AEK_SHA2,     "+sha2",  "-sha2")
-AARCH64_ARCH_EXT_NAME("aes",       AArch64::AEK_AES,      "+aes",   "-aes")
-AARCH64_ARCH_EXT_NAME("dotprod",   AArch64::AEK_DOTPROD,  "+dotprod","-dotprod")
-AARCH64_ARCH_EXT_NAME("fp",        AArch64::AEK_FP,       "+fp-armv8",  "-fp-armv8")
-AARCH64_ARCH_EXT_NAME("simd",      AArch64::AEK_SIMD,     "+neon",  "-neon")
-AARCH64_ARCH_EXT_NAME("fp16",      AArch64::AEK_FP16,     "+fullfp16",  "-fullfp16")
-AARCH64_ARCH_EXT_NAME("fp16fml",   AArch64::AEK_FP16FML,  "+fp16fml", "-fp16fml")
-AARCH64_ARCH_EXT_NAME("profile",   AArch64::AEK_PROFILE,  "+spe",  "-spe")
-AARCH64_ARCH_EXT_NAME("ras",       AArch64::AEK_RAS,      "+ras",  "-ras")
-AARCH64_ARCH_EXT_NAME("sve",       AArch64::AEK_SVE,      "+sve",  "-sve")
-AARCH64_ARCH_EXT_NAME("sve2",      AArch64::AEK_SVE2,     "+sve2", "-sve2")
-AARCH64_ARCH_EXT_NAME("sve2-aes",  AArch64::AEK_SVE2AES,  "+sve2-aes", "-sve2-aes")
-AARCH64_ARCH_EXT_NAME("sve2-sm4",  AArch64::AEK_SVE2SM4,  "+sve2-sm4", "-sve2-sm4")
-AARCH64_ARCH_EXT_NAME("sve2-sha3", AArch64::AEK_SVE2SHA3, "+sve2-sha3", "-sve2-sha3")
-AARCH64_ARCH_EXT_NAME("bitperm",   AArch64::AEK_BITPERM,  "+bitperm", "-bitperm")
-AARCH64_ARCH_EXT_NAME("rcpc",      AArch64::AEK_RCPC,     "+rcpc", "-rcpc")
-AARCH64_ARCH_EXT_NAME("rng",       AArch64::AEK_RAND,     "+rand",  "-rand")
-AARCH64_ARCH_EXT_NAME("memtag",    AArch64::AEK_MTE,      "+mte",   "-mte")
-AARCH64_ARCH_EXT_NAME("ssbs",      AArch64::AEK_SSBS,     "+ssbs",  "-ssbs")
-AARCH64_ARCH_EXT_NAME("sb",        AArch64::AEK_SB,       "+sb",    "-sb")
-AARCH64_ARCH_EXT_NAME("predres",   AArch64::AEK_PREDRES,  "+predres", "-predres")
+AARCH64_ARCH_EXT_NAME("invalid",      AArch64::AEK_INVALID,     nullptr,  nullptr)
+AARCH64_ARCH_EXT_NAME("none",         AArch64::AEK_NONE,        nullptr,  nullptr)
+AARCH64_ARCH_EXT_NAME("crc",          AArch64::AEK_CRC,         "+crc",   "-crc")
+AARCH64_ARCH_EXT_NAME("lse",          AArch64::AEK_LSE,         "+lse",   "-lse")
+AARCH64_ARCH_EXT_NAME("rdm",          AArch64::AEK_RDM,         "+rdm",   "-rdm")
+AARCH64_ARCH_EXT_NAME("crypto",       AArch64::AEK_CRYPTO,      "+crypto","-crypto")
+AARCH64_ARCH_EXT_NAME("sm4",          AArch64::AEK_SM4,         "+sm4",   "-sm4")
+AARCH64_ARCH_EXT_NAME("sha3",         AArch64::AEK_SHA3,        "+sha3",  "-sha3")
+AARCH64_ARCH_EXT_NAME("sha2",         AArch64::AEK_SHA2,        "+sha2",  "-sha2")
+AARCH64_ARCH_EXT_NAME("aes",          AArch64::AEK_AES,         "+aes",   "-aes")
+AARCH64_ARCH_EXT_NAME("dotprod",      AArch64::AEK_DOTPROD,     "+dotprod","-dotprod")
+AARCH64_ARCH_EXT_NAME("fp",           AArch64::AEK_FP,          "+fp-armv8",  "-fp-armv8")
+AARCH64_ARCH_EXT_NAME("simd",         AArch64::AEK_SIMD,        "+neon",  "-neon")
+AARCH64_ARCH_EXT_NAME("fp16",         AArch64::AEK_FP16,        "+fullfp16",  "-fullfp16")
+AARCH64_ARCH_EXT_NAME("fp16fml",      AArch64::AEK_FP16FML,     "+fp16fml", "-fp16fml")
+AARCH64_ARCH_EXT_NAME("profile",      AArch64::AEK_PROFILE,     "+spe",  "-spe")
+AARCH64_ARCH_EXT_NAME("ras",          AArch64::AEK_RAS,         "+ras",  "-ras")
+AARCH64_ARCH_EXT_NAME("sve",          AArch64::AEK_SVE,         "+sve",  "-sve")
+AARCH64_ARCH_EXT_NAME("sve2",         AArch64::AEK_SVE2,        "+sve2", "-sve2")
+AARCH64_ARCH_EXT_NAME("sve2-aes",     AArch64::AEK_SVE2AES,     "+sve2-aes", "-sve2-aes")
+AARCH64_ARCH_EXT_NAME("sve2-sm4",     AArch64::AEK_SVE2SM4,     "+sve2-sm4", "-sve2-sm4")
+AARCH64_ARCH_EXT_NAME("sve2-sha3",    AArch64::AEK_SVE2SHA3,    "+sve2-sha3", "-sve2-sha3")
+AARCH64_ARCH_EXT_NAME("sve2-bitperm", AArch64::AEK_SVE2BITPERM, "+sve2-bitperm", "-sve2-bitperm")
+AARCH64_ARCH_EXT_NAME("rcpc",         AArch64::AEK_RCPC,        "+rcpc", "-rcpc")
+AARCH64_ARCH_EXT_NAME("rng",          AArch64::AEK_RAND,        "+rand",  "-rand")
+AARCH64_ARCH_EXT_NAME("memtag",       AArch64::AEK_MTE,         "+mte",   "-mte")
+AARCH64_ARCH_EXT_NAME("ssbs",         AArch64::AEK_SSBS,        "+ssbs",  "-ssbs")
+AARCH64_ARCH_EXT_NAME("sb",           AArch64::AEK_SB,          "+sb",    "-sb")
+AARCH64_ARCH_EXT_NAME("predres",      AArch64::AEK_PREDRES,     "+predres", "-predres")
 #undef AARCH64_ARCH_EXT_NAME
 
 #ifndef AARCH64_CPU_NAME

Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -53,7 +53,7 @@ enum ArchExtKind : unsigned {
   AEK_SVE2AES =     1 << 24,
   AEK_SVE2SM4 =     1 << 25,
   AEK_SVE2SHA3 =    1 << 26,
-  AEK_BITPERM =     1 << 27,
+  AEK_SVE2BITPERM = 1 << 27,
 };
 
 enum class ArchKind {

Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -39,19 +39,13 @@ enum ArchExtKind : unsigned {
   AEK_DSP =         1 << 10,
   AEK_FP16 =        1 << 11,
   AEK_RAS =         1 << 12,
-  AEK_SVE =         1 << 13,
-  AEK_DOTPROD =     1 << 14,
-  AEK_SHA2    =     1 << 15,
-  AEK_AES     =     1 << 16,
-  AEK_FP16FML =     1 << 17,
-  AEK_SB      =     1 << 18,
-  AEK_SVE2 =        1 << 19,
-  AEK_SVE2AES =     1 << 20,
-  AEK_SVE2SM4 =     1 << 21,
-  AEK_SVE2SHA3 =    1 << 22,
-  AEK_BITPERM =     1 << 23,
-  AEK_FP_DP   =     1 << 24,
-  AEK_LOB     =     1 << 25,
+  AEK_DOTPROD =     1 << 13,
+  AEK_SHA2    =     1 << 14,
+  AEK_AES     =     1 << 15,
+  AEK_FP16FML =     1 << 16,
+  AEK_SB      =     1 << 17,
+  AEK_FP_DP   =     1 << 18,
+  AEK_LOB     =     1 << 19,
   // Unsupported extensions.
   AEK_OS = 0x8000000,
   AEK_IWMMXT = 0x10000000,

Modified: projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h
==============================================================================
--- projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h	Mon Sep  2 17:32:57 2019	(r351708)
@@ -19,6 +19,7 @@
 
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/DenseMapInfo.h"
+#include "llvm/IR/ValueHandle.h"
 #include <cstdint>
 
 namespace llvm {
@@ -28,8 +29,8 @@ class Value;
 
 struct DivRemMapKey {
   bool SignedOp;
-  Value *Dividend;
-  Value *Divisor;
+  AssertingVH<Value> Dividend;
+  AssertingVH<Value> Divisor;
 
   DivRemMapKey(bool InSignedOp, Value *InDividend, Value *InDivisor)
       : SignedOp(InSignedOp), Dividend(InDividend), Divisor(InDivisor) {}
@@ -50,8 +51,10 @@ template <> struct DenseMapInfo<DivRemMapKey> {
   }
 
   static unsigned getHashValue(const DivRemMapKey &Val) {
-    return (unsigned)(reinterpret_cast<uintptr_t>(Val.Dividend) ^
-                      reinterpret_cast<uintptr_t>(Val.Divisor)) ^
+    return (unsigned)(reinterpret_cast<uintptr_t>(
+                          static_cast<Value *>(Val.Dividend)) ^
+                      reinterpret_cast<uintptr_t>(
+                          static_cast<Value *>(Val.Divisor))) ^
            (unsigned)Val.SignedOp;
   }
 };

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -432,6 +432,7 @@ static void EmitGCCInlineAsmStr(const char *AsmStr, co
               const BlockAddress *BA = MI->getOperand(OpNo).getBlockAddress();
               MCSymbol *Sym = AP->GetBlockAddressSymbol(BA);
               Sym->print(OS, AP->MAI);
+              MMI->getContext().registerInlineAsmLabel(Sym);
             } else if (MI->getOperand(OpNo).isMBB()) {
               const MCSymbol *Sym = MI->getOperand(OpNo).getMBB()->getSymbol();
               Sym->print(OS, AP->MAI);

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -1682,10 +1682,11 @@ static bool OptimizeExtractBits(BinaryOperator *ShiftI
     TheUse = InsertedShift;
   }
 
-  // If we removed all uses, nuke the shift.
+  // If we removed all uses, or there are none, nuke the shift.
   if (ShiftI->use_empty()) {
     salvageDebugInfo(*ShiftI);
     ShiftI->eraseFromParent();
+    MadeChange = true;
   }
 
   return MadeChange;

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -691,9 +691,17 @@ void LiveDebugValues::insertTransferDebugPair(
            "No register supplied when handling a restore of a debug value");
     MachineFunction *MF = MI.getMF();
     DIBuilder DIB(*const_cast<Function &>(MF->getFunction()).getParent());
+
+    const DIExpression *NewExpr;
+    if (auto Fragment = DebugInstr->getDebugExpression()->getFragmentInfo())
+      NewExpr = *DIExpression::createFragmentExpression(DIB.createExpression(),
+        Fragment->OffsetInBits, Fragment->SizeInBits);
+    else
+      NewExpr = DIB.createExpression();
+
     NewDebugInstr =
         BuildMI(*MF, DebugInstr->getDebugLoc(), DebugInstr->getDesc(), false,
-                NewReg, DebugInstr->getDebugVariable(), DIB.createExpression());
+                NewReg, DebugInstr->getDebugVariable(), NewExpr);
     VarLoc VL(*NewDebugInstr, LS);
     ProcessVarLoc(VL, NewDebugInstr);
     LLVM_DEBUG(dbgs() << "Creating DBG_VALUE inst for register restore: ";
@@ -848,9 +856,14 @@ void LiveDebugValues::transferSpillOrRestoreInst(Machi
                       << "\n");
   }
   // Check if the register or spill location is the location of a debug value.
+  // FIXME: Don't create a spill transfer if there is a complex expression,
+  // because we currently cannot recover the original expression on restore.
   for (unsigned ID : OpenRanges.getVarLocs()) {
+    const MachineInstr *DebugInstr = &VarLocIDs[ID].MI;
+
     if (TKind == TransferKind::TransferSpill &&
-        VarLocIDs[ID].isDescribedByReg() == Reg) {
+        VarLocIDs[ID].isDescribedByReg() == Reg &&
+        !DebugInstr->getDebugExpression()->isComplex()) {
       LLVM_DEBUG(dbgs() << "Spilling Register " << printReg(Reg, TRI) << '('
                         << VarLocIDs[ID].Var.getVar()->getName() << ")\n");
     } else if (TKind == TransferKind::TransferRestore &&

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -21,6 +21,7 @@
 #include "llvm/Analysis/AliasAnalysis.h"
 #include "llvm/Analysis/CFG.h"
 #include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
 #include "llvm/CodeGen/MachineDominators.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineFunctionPass.h"
@@ -66,6 +67,7 @@ namespace {
     AliasAnalysis *AA;
     MachineDominatorTree *DT;
     MachineRegisterInfo *MRI;
+    MachineBlockFrequencyInfo *MBFI;
 
   public:
     static char ID; // Pass identification
@@ -83,6 +85,8 @@ namespace {
       AU.addPreservedID(MachineLoopInfoID);
       AU.addRequired<MachineDominatorTree>();
       AU.addPreserved<MachineDominatorTree>();
+      AU.addRequired<MachineBlockFrequencyInfo>();
+      AU.addPreserved<MachineBlockFrequencyInfo>();
     }
 
     void releaseMemory() override {
@@ -133,6 +137,11 @@ namespace {
     bool isPRECandidate(MachineInstr *MI);
     bool ProcessBlockPRE(MachineDominatorTree *MDT, MachineBasicBlock *MBB);
     bool PerformSimplePRE(MachineDominatorTree *DT);
+    /// Heuristics to see if it's beneficial to move common computations of MBB
+    /// and MBB1 to CandidateBB.
+    bool isBeneficalToHoistInto(MachineBasicBlock *CandidateBB,
+                                MachineBasicBlock *MBB,
+                                MachineBasicBlock *MBB1);
   };
 
 } // end anonymous namespace
@@ -802,6 +811,9 @@ bool MachineCSE::ProcessBlockPRE(MachineDominatorTree 
     if (!CMBB->isLegalToHoistInto())
       continue;
 
+    if (!isBeneficalToHoistInto(CMBB, MBB, MBB1))
+      continue;
+
     // Two instrs are partial redundant if their basic blocks are reachable
     // from one to another but one doesn't dominate another.
     if (CMBB != MBB1) {
@@ -854,6 +866,18 @@ bool MachineCSE::PerformSimplePRE(MachineDominatorTree
   return Changed;
 }
 
+bool MachineCSE::isBeneficalToHoistInto(MachineBasicBlock *CandidateBB,
+                                        MachineBasicBlock *MBB,
+                                        MachineBasicBlock *MBB1) {
+  if (CandidateBB->getParent()->getFunction().hasMinSize())
+    return true;
+  assert(DT->dominates(CandidateBB, MBB) && "CandidateBB should dominate MBB");
+  assert(DT->dominates(CandidateBB, MBB1) &&
+         "CandidateBB should dominate MBB1");
+  return MBFI->getBlockFreq(CandidateBB) <=
+         MBFI->getBlockFreq(MBB) + MBFI->getBlockFreq(MBB1);
+}
+
 bool MachineCSE::runOnMachineFunction(MachineFunction &MF) {
   if (skipFunction(MF.getFunction()))
     return false;
@@ -863,6 +887,7 @@ bool MachineCSE::runOnMachineFunction(MachineFunction 
   MRI = &MF.getRegInfo();
   AA = &getAnalysis<AAResultsWrapperPass>().getAAResults();
   DT = &getAnalysis<MachineDominatorTree>();
+  MBFI = &getAnalysis<MachineBlockFrequencyInfo>();
   LookAheadLimit = TII->getMachineCSELookAheadLimit();
   bool ChangedPRE, ChangedCSE;
   ChangedPRE = PerformSimplePRE(DT);

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -121,7 +121,7 @@ ArrayRef<MCSymbol *> MMIAddrLabelMap::getAddrLabelSymb
   BBCallbacks.back().setMap(this);
   Entry.Index = BBCallbacks.size() - 1;
   Entry.Fn = BB->getParent();
-  Entry.Symbols.push_back(Context.createTempSymbol());
+  Entry.Symbols.push_back(Context.createTempSymbol(!BB->hasAddressTaken()));
   return Entry.Symbols;
 }
 

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -909,6 +909,12 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
       // Remember the source order of the inserted instruction.
       if (HasDbg)
         ProcessSourceNode(N, DAG, Emitter, VRBaseMap, Orders, Seen, NewInsn);
+
+      if (MDNode *MD = DAG->getHeapAllocSite(N)) {
+        if (NewInsn && NewInsn->isCall())
+          MF.addCodeViewHeapAllocSite(NewInsn, MD);
+      }
+
       GluedNodes.pop_back();
     }
     auto NewInsn =
@@ -917,6 +923,10 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
     if (HasDbg)
       ProcessSourceNode(SU->getNode(), DAG, Emitter, VRBaseMap, Orders, Seen,
                         NewInsn);
+    if (MDNode *MD = DAG->getHeapAllocSite(SU->getNode())) {
+      if (NewInsn && NewInsn->isCall())
+        MF.addCodeViewHeapAllocSite(NewInsn, MD);
+    }
   }
 
   // Insert all the dbg_values which have not already been inserted in source

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -1084,6 +1084,7 @@ void SelectionDAG::clear() {
   ExternalSymbols.clear();
   TargetExternalSymbols.clear();
   MCSymbols.clear();
+  SDCallSiteDbgInfo.clear();
   std::fill(CondCodeNodes.begin(), CondCodeNodes.end(),
             static_cast<CondCodeSDNode*>(nullptr));
   std::fill(ValueTypeNodes.begin(), ValueTypeNodes.end(),

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -8021,6 +8021,14 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
     // Compute the constraint code and ConstraintType to use.
     TLI.ComputeConstraintToUse(T, SDValue());
 
+    if (T.ConstraintType == TargetLowering::C_Immediate &&
+        OpInfo.CallOperand && !isa<ConstantSDNode>(OpInfo.CallOperand))
+      // We've delayed emitting a diagnostic like the "n" constraint because
+      // inlining could cause an integer showing up.
+      return emitInlineAsmError(
+          CS, "constraint '" + Twine(T.ConstraintCode) + "' expects an "
+                  "integer constant expression");
+
     ExtraInfo.update(T);
   }
 
@@ -8105,7 +8113,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
     switch (OpInfo.Type) {
     case InlineAsm::isOutput:
       if (OpInfo.ConstraintType == TargetLowering::C_Memory ||
-          (OpInfo.ConstraintType == TargetLowering::C_Other &&
+          ((OpInfo.ConstraintType == TargetLowering::C_Immediate ||
+            OpInfo.ConstraintType == TargetLowering::C_Other) &&
            OpInfo.isIndirect)) {
         unsigned ConstraintID =
             TLI.getInlineAsmMemConstraint(OpInfo.ConstraintCode);
@@ -8119,13 +8128,14 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
                                                         MVT::i32));
         AsmNodeOperands.push_back(OpInfo.CallOperand);
         break;
-      } else if ((OpInfo.ConstraintType == TargetLowering::C_Other &&
+      } else if (((OpInfo.ConstraintType == TargetLowering::C_Immediate ||
+                   OpInfo.ConstraintType == TargetLowering::C_Other) &&
                   !OpInfo.isIndirect) ||
                  OpInfo.ConstraintType == TargetLowering::C_Register ||
                  OpInfo.ConstraintType == TargetLowering::C_RegisterClass) {
         // Otherwise, this outputs to a register (directly for C_Register /
-        // C_RegisterClass, and a target-defined fashion for C_Other). Find a
-        // register that we can use.
+        // C_RegisterClass, and a target-defined fashion for
+        // C_Immediate/C_Other). Find a register that we can use.
         if (OpInfo.AssignedRegs.Regs.empty()) {
           emitInlineAsmError(
               CS, "couldn't allocate output register for constraint '" +
@@ -8205,15 +8215,24 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
       }
 
       // Treat indirect 'X' constraint as memory.
-      if (OpInfo.ConstraintType == TargetLowering::C_Other &&
+      if ((OpInfo.ConstraintType == TargetLowering::C_Immediate ||
+           OpInfo.ConstraintType == TargetLowering::C_Other) &&
           OpInfo.isIndirect)
         OpInfo.ConstraintType = TargetLowering::C_Memory;
 
-      if (OpInfo.ConstraintType == TargetLowering::C_Other) {
+      if (OpInfo.ConstraintType == TargetLowering::C_Immediate ||
+          OpInfo.ConstraintType == TargetLowering::C_Other) {
         std::vector<SDValue> Ops;
         TLI.LowerAsmOperandForConstraint(InOperandVal, OpInfo.ConstraintCode,
                                           Ops, DAG);
         if (Ops.empty()) {
+          if (OpInfo.ConstraintType == TargetLowering::C_Immediate)
+            if (isa<ConstantSDNode>(InOperandVal)) {
+              emitInlineAsmError(CS, "value out of range for constraint '" +
+                                 Twine(OpInfo.ConstraintCode) + "'");
+              return;
+            }
+
           emitInlineAsmError(CS, "invalid operand for inline asm constraint '" +
                                      Twine(OpInfo.ConstraintCode) + "'");
           return;
@@ -8250,7 +8269,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
       }
 
       assert((OpInfo.ConstraintType == TargetLowering::C_RegisterClass ||
-              OpInfo.ConstraintType == TargetLowering::C_Register) &&
+              OpInfo.ConstraintType == TargetLowering::C_Register ||
+              OpInfo.ConstraintType == TargetLowering::C_Immediate) &&
              "Unknown constraint type!");
 
       // TODO: Support this.
@@ -8356,6 +8376,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall
         Val = OpInfo.AssignedRegs.getCopyFromRegs(
             DAG, FuncInfo, getCurSDLoc(), Chain, &Flag, CS.getInstruction());
         break;
+      case TargetLowering::C_Immediate:
       case TargetLowering::C_Other:
         Val = TLI.LowerAsmOutputForConstraint(Chain, Flag, getCurSDLoc(),
                                               OpInfo, DAG);

Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
==============================================================================
--- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp	Mon Sep  2 17:30:00 2019	(r351707)
+++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp	Mon Sep  2 17:32:57 2019	(r351708)
@@ -3567,15 +3567,17 @@ TargetLowering::getConstraintType(StringRef Constraint
   if (S == 1) {
     switch (Constraint[0]) {
     default: break;
-    case 'r': return C_RegisterClass;
+    case 'r':
+      return C_RegisterClass;
     case 'm': // memory
     case 'o': // offsetable
     case 'V': // not offsetable
       return C_Memory;
-    case 'i': // Simple Integer or Relocatable Constant
     case 'n': // Simple Integer
     case 'E': // Floating Point Constant
     case 'F': // Floating Point Constant
+      return C_Immediate;
+    case 'i': // Simple Integer or Relocatable Constant
     case 's': // Relocatable Constant
     case 'p': // Address.
     case 'X': // Allow ANY value.
@@ -3950,6 +3952,7 @@ TargetLowering::ParseConstraints(const DataLayout &DL,
 /// Return an integer indicating how general CT is.
 static unsigned getConstraintGenerality(TargetLowering::ConstraintType CT) {
   switch (CT) {
+  case TargetLowering::C_Immediate:
   case TargetLowering::C_Other:
   case TargetLowering::C_Unknown:
     return 0;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909021732.x82HWvST012604>