Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Dec 2019 11:50:45 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r356004 - in head: . contrib/llvm-project/clang/include/clang/CodeGen contrib/llvm-project/clang/lib/Basic/Targets contrib/llvm-project/clang/lib/CodeGen contrib/llvm-project/clang/lib/...
Message-ID:  <201912221150.xBMBojq8058252@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Dec 22 11:50:44 2019
New Revision: 356004
URL: https://svnweb.freebsd.org/changeset/base/356004

Log:
  Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
  9.0.1 final release c1a0a213378a458fbea1a5c77b315c7dce08fd05.
  
  Release notes for llvm, clang, lld and libc++ 9.0.1 will become
  available here:
  
  https://releases.llvm.org/9.0.1/docs/ReleaseNotes.html
  https://releases.llvm.org/9.0.1/tools/clang/docs/ReleaseNotes.html
  https://releases.llvm.org/9.0.1/tools/lld/docs/ReleaseNotes.html
  https://releases.llvm.org/9.0.1/projects/libcxx/docs/ReleaseNotes.html
  
  PR:		240629
  MFC after:	1 month

Added:
  head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp
     - copied unchanged from r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp
  head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h
     - copied unchanged from r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h
Modified:
  head/ObsoleteFiles.inc
  head/UPDATING
  head/contrib/llvm-project/clang/include/clang/CodeGen/CGFunctionInfo.h
  head/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp
  head/contrib/llvm-project/clang/lib/CodeGen/CGExpr.cpp
  head/contrib/llvm-project/clang/lib/CodeGen/MicrosoftCXXABI.cpp
  head/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/ARM.cpp
  head/contrib/llvm-project/clang/lib/Driver/ToolChains/Linux.cpp
  head/contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp
  head/contrib/llvm-project/clang/lib/Sema/SemaType.cpp
  head/contrib/llvm-project/compiler-rt/lib/profile/InstrProfilingUtil.c
  head/contrib/llvm-project/lld/COFF/Driver.cpp
  head/contrib/llvm-project/lld/ELF/Symbols.h
  head/contrib/llvm-project/lld/docs/ReleaseNotes.rst
  head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
  head/contrib/llvm-project/lldb/source/Symbol/Symtab.cpp
  head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineFunction.h
  head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h
  head/contrib/llvm-project/llvm/include/llvm/CodeGen/StackProtector.h
  head/contrib/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
  head/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/GVN.h
  head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
  head/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/MachineInstr.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
  head/contrib/llvm-project/llvm/lib/CodeGen/StackProtector.cpp
  head/contrib/llvm-project/llvm/lib/Object/ELFObjectFile.cpp
  head/contrib/llvm-project/llvm/lib/Support/ARMTargetParser.cpp
  head/contrib/llvm-project/llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
  head/contrib/llvm-project/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
  head/contrib/llvm-project/llvm/lib/Target/ARM/ARM.td
  head/contrib/llvm-project/llvm/lib/Target/ARM/ARMPredicates.td
  head/contrib/llvm-project/llvm/lib/Target/ARM/ARMSubtarget.h
  head/contrib/llvm-project/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  head/contrib/llvm-project/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp
  head/contrib/llvm-project/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  head/contrib/llvm-project/llvm/lib/Target/PowerPC/P9InstrResources.td
  head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCInstr64Bit.td
  head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCInstrInfo.td
  head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVRegisterInfo.h
  head/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyInstrFloat.td
  head/contrib/llvm-project/llvm/lib/Target/X86/X86FrameLowering.cpp
  head/contrib/llvm-project/llvm/lib/Target/X86/X86FrameLowering.h
  head/contrib/llvm-project/llvm/lib/Target/X86/X86InstrInfo.cpp
  head/contrib/llvm-project/llvm/lib/Target/X86/X86MachineFunctionInfo.h
  head/contrib/llvm-project/llvm/lib/Target/X86/X86RegisterInfo.cpp
  head/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
  head/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  head/contrib/llvm-project/llvm/lib/Transforms/Scalar/GVN.cpp
  head/contrib/llvm-project/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
  head/contrib/llvm-project/llvm/lib/Transforms/Scalar/SROA.cpp
  head/contrib/llvm-project/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
  head/contrib/llvm-project/llvm/tools/llvm-objcopy/ObjcopyOpts.td
  head/contrib/llvm-project/llvm/tools/llvm-objcopy/StripOpts.td
  head/contrib/llvm-project/llvm/tools/opt/opt.cpp
  head/etc/mtree/BSD.debug.dist
  head/etc/mtree/BSD.usr.dist
  head/lib/clang/freebsd_cc_version.h
  head/lib/clang/headers/Makefile
  head/lib/clang/include/VCSVersion.inc
  head/lib/clang/include/clang/Basic/Version.inc
  head/lib/clang/include/clang/Config/config.h
  head/lib/clang/include/lld/Common/Version.inc
  head/lib/clang/include/llvm/Config/config.h
  head/lib/clang/include/llvm/Config/llvm-config.h
  head/lib/clang/include/llvm/Support/VCSRevision.h
  head/lib/libclang_rt/Makefile.inc
  head/tools/build/mk/OptionalObsoleteFiles.inc
Directory Properties:
  head/contrib/llvm-project/   (props changed)
  head/contrib/llvm-project/clang/   (props changed)
  head/contrib/llvm-project/compiler-rt/   (props changed)
  head/contrib/llvm-project/lld/   (props changed)
  head/contrib/llvm-project/lldb/   (props changed)
  head/contrib/llvm-project/llvm/   (props changed)

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/ObsoleteFiles.inc	Sun Dec 22 11:50:44 2019	(r356004)
@@ -36,6 +36,242 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20191222: new clang import which bumps version from 9.0.0 to 9.0.1.
+OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/algorithm
+OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/complex
+OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/new
+OLD_DIRS+=usr/lib/clang/9.0.0/include/cuda_wrappers
+OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/__clang_openmp_math.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/__clang_openmp_math_declares.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/cmath
+OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/math.h
+OLD_DIRS+=usr/lib/clang/9.0.0/include/openmp_wrappers
+OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/emmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/mm_malloc.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/mmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/xmmintrin.h
+OLD_DIRS+=usr/lib/clang/9.0.0/include/ppc_wrappers
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/allocator_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/asan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/common_interface_defs.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/coverage_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/dfsan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/hwasan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/linux_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/lsan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/msan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/netbsd_syscall_hooks.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/scudo_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/tsan_interface.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/tsan_interface_atomic.h
+OLD_DIRS+=usr/lib/clang/9.0.0/include/sanitizer
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_builtin_vars.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_cmath.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_complex_builtins.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_device_functions.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_intrinsics.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_libdevice_declares.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_math_forward_declares.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_runtime_wrapper.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__stddef_max_align_t.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__wmmintrin_aes.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/__wmmintrin_pclmul.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/adxintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/altivec.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ammintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/arm64intr.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/arm_acle.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/arm_fp16.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/arm_neon.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/armintr.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx2intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bf16intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bitalgintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bwintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512cdintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512dqintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512erintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512fintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512ifmaintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512ifmavlintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512pfintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmi2intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmiintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmivlintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbf16intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbitalgintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbwintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlcdintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vldqintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvbmi2intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvnniintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vnniintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vp2intersectintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vpopcntdqintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vpopcntdqvlintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/avxintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/bmi2intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/bmiintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/cetintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/cldemoteintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/clflushoptintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/clwbintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/clzerointrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/cpuid.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/emmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/enqcmdintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/f16cintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/fma4intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/fmaintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/fxsrintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/gfniintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/htmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/htmxlintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ia32intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/immintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/invpcidintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/lwpintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/lzcntintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/mm3dnow.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/mm_malloc.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/mmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/module.modulemap
+OLD_FILES+=usr/lib/clang/9.0.0/include/movdirintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/msa.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/mwaitxintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/nmmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/opencl-c-base.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/opencl-c.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/pconfigintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/pkuintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/pmmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/popcntintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/prfchwintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/ptwriteintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/rdseedintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/rtmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/s390intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/sgxintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/shaintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/smmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/tbmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/tmmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/vadefs.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/vaesintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/vecintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/vpclmulqdqintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/waitpkgintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/wbnoinvdintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/wmmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/x86intrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xmmintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xopintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xsavecintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xsaveintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xsaveoptintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xsavesintrin.h
+OLD_FILES+=usr/lib/clang/9.0.0/include/xtestintrin.h
+OLD_DIRS+=usr/lib/clang/9.0.0/include
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.so
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.so
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.so
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.so
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-powerpc.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-powerpc64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-arm.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-armhf.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
+OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-x86_64.a
+OLD_DIRS+=usr/lib/clang/9.0.0/lib/freebsd
+OLD_DIRS+=usr/lib/clang/9.0.0/lib
+OLD_DIRS+=usr/lib/clang/9.0.0
 # 20191214: Removal of sranddev(3)
 OLD_FILES+=usr/share/man/man3/sranddev.3.gz
 # 20191213: remove timeout(9)

Modified: head/UPDATING
==============================================================================
--- head/UPDATING	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/UPDATING	Sun Dec 22 11:50:44 2019	(r356004)
@@ -26,6 +26,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20191222:
+	Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
+	been upgraded to 9.0.1.  Please see the 20141231 entry below for
+	information about prerequisites and upgrading, if you are not already
+	using clang 3.5.0 or higher.
+
 20191212:
 	r355677 has modified the internal interface used between the
 	NFS modules in the kernel. As such, they must all be upgraded

Modified: head/contrib/llvm-project/clang/include/clang/CodeGen/CGFunctionInfo.h
==============================================================================
--- head/contrib/llvm-project/clang/include/clang/CodeGen/CGFunctionInfo.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/include/clang/CodeGen/CGFunctionInfo.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -109,14 +109,12 @@ class ABIArgInfo { (private)
     UnpaddedCoerceAndExpandType = T;
   }
 
-  ABIArgInfo(Kind K)
-      : TheKind(K), PaddingInReg(false), InReg(false) {
-  }
-
 public:
-  ABIArgInfo()
+  ABIArgInfo(Kind K = Direct)
       : TypeData(nullptr), PaddingType(nullptr), DirectOffset(0),
-        TheKind(Direct), PaddingInReg(false), InReg(false) {}
+        TheKind(K), PaddingInReg(false), InAllocaSRet(false),
+        IndirectByVal(false), IndirectRealign(false), SRetAfterThis(false),
+        InReg(false), CanBeFlattened(false), SignExt(false) {}
 
   static ABIArgInfo getDirect(llvm::Type *T = nullptr, unsigned Offset = 0,
                               llvm::Type *Padding = nullptr,

Modified: head/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -427,10 +427,11 @@ bool ARMTargetInfo::handleTargetFeatures(std::vector<s
   for (const auto &Feature : Features) {
     if (Feature == "+soft-float") {
       SoftFloat = true;
-    } else if (Feature == "+vfp2sp" || Feature == "+vfp2") {
+    } else if (Feature == "+vfp2sp" || Feature == "+vfp2d16sp" ||
+               Feature == "+vfp2" || Feature == "+vfp2d16") {
       FPU |= VFP2FPU;
       HW_FP |= HW_FP_SP;
-      if (Feature == "+vfp2")
+      if (Feature == "+vfp2" || Feature == "+vfp2d16")
           HW_FP |= HW_FP_DP;
     } else if (Feature == "+vfp3sp" || Feature == "+vfp3d16sp" ||
                Feature == "+vfp3" || Feature == "+vfp3d16") {

Modified: head/contrib/llvm-project/clang/lib/CodeGen/CGExpr.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/CodeGen/CGExpr.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/CodeGen/CGExpr.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -2540,6 +2540,11 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRe
         // Spill the constant value to a global.
         Addr = CGM.createUnnamedGlobalFrom(*VD, Val,
                                            getContext().getDeclAlign(VD));
+        llvm::Type *VarTy = getTypes().ConvertTypeForMem(VD->getType());
+        auto *PTy = llvm::PointerType::get(
+            VarTy, getContext().getTargetAddressSpace(VD->getType()));
+        if (PTy != Addr.getType())
+          Addr = Builder.CreatePointerBitCastOrAddrSpaceCast(Addr, PTy);
       } else {
         // Should we be using the alignment of the constant pointer we emitted?
         CharUnits Alignment =

Modified: head/contrib/llvm-project/clang/lib/CodeGen/MicrosoftCXXABI.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/CodeGen/MicrosoftCXXABI.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/CodeGen/MicrosoftCXXABI.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -617,6 +617,9 @@ class MicrosoftCXXABI : public CGCXXABI { (private)
   llvm::Function *EmitVirtualMemPtrThunk(const CXXMethodDecl *MD,
                                          const MethodVFTableLocation &ML);
 
+  llvm::Constant *EmitMemberDataPointer(const CXXRecordDecl *RD,
+                                        CharUnits offset);
+
 public:
   llvm::Type *ConvertMemberPointerType(const MemberPointerType *MPT) override;
 
@@ -2700,7 +2703,11 @@ MicrosoftCXXABI::EmitFullMemberPointer(llvm::Constant 
 llvm::Constant *
 MicrosoftCXXABI::EmitMemberDataPointer(const MemberPointerType *MPT,
                                        CharUnits offset) {
-  const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
+  return EmitMemberDataPointer(MPT->getMostRecentCXXRecordDecl(), offset);
+}
+
+llvm::Constant *MicrosoftCXXABI::EmitMemberDataPointer(const CXXRecordDecl *RD,
+                                                       CharUnits offset) {
   if (RD->getMSInheritanceModel() ==
       MSInheritanceAttr::Keyword_virtual_inheritance)
     offset -= getContext().getOffsetOfBaseWithVBPtr(RD);
@@ -2724,8 +2731,17 @@ llvm::Constant *MicrosoftCXXABI::EmitMemberPointer(con
   if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(MPD)) {
     C = EmitMemberFunctionPointer(MD);
   } else {
+    // For a pointer to data member, start off with the offset of the field in
+    // the class in which it was declared, and convert from there if necessary.
+    // For indirect field decls, get the outermost anonymous field and use the
+    // parent class.
     CharUnits FieldOffset = Ctx.toCharUnitsFromBits(Ctx.getFieldOffset(MPD));
-    C = EmitMemberDataPointer(DstTy, FieldOffset);
+    const FieldDecl *FD = dyn_cast<FieldDecl>(MPD);
+    if (!FD)
+      FD = cast<FieldDecl>(*cast<IndirectFieldDecl>(MPD)->chain_begin());
+    const CXXRecordDecl *RD = cast<CXXRecordDecl>(FD->getParent());
+    RD = RD->getMostRecentNonInjectedDecl();
+    C = EmitMemberDataPointer(RD, FieldOffset);
   }
 
   if (!MemberPointerPath.empty()) {

Modified: head/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/ARM.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/ARM.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/ARM.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -460,7 +460,7 @@ fp16_fml_fallthrough:
     //        now just be explicit and disable all known dependent features
     //        as well.
     for (std::string Feature : {
-            "vfp2", "vfp2sp",
+            "vfp2", "vfp2sp", "vfp2d16", "vfp2d16sp",
             "vfp3", "vfp3sp", "vfp3d16", "vfp3d16sp",
             "vfp4", "vfp4sp", "vfp4d16", "vfp4d16sp",
             "fp-armv8", "fp-armv8sp", "fp-armv8d16", "fp-armv8d16sp",

Modified: head/contrib/llvm-project/clang/lib/Driver/ToolChains/Linux.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/Driver/ToolChains/Linux.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/Driver/ToolChains/Linux.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -658,11 +658,11 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &D
   if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
     addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include");
 
-  if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
-    SmallString<128> P(D.ResourceDir);
-    llvm::sys::path::append(P, "include");
-    addSystemInclude(DriverArgs, CC1Args, P);
-  }
+  SmallString<128> ResourceDirInclude(D.ResourceDir);
+  llvm::sys::path::append(ResourceDirInclude, "include");
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
+      (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
+    addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
 
   if (DriverArgs.hasArg(options::OPT_nostdlibinc))
     return;
@@ -860,6 +860,9 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &D
   addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include");
 
   addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
+
+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
+    addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
 }
 
 static std::string DetectLibcxxIncludePath(llvm::vfs::FileSystem &vfs,

Modified: head/contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/Sema/SemaDecl.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -3475,7 +3475,12 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, NamedD
       }
     }
 
-    if (OldQTypeForComparison == NewQType)
+    // If the function types are compatible, merge the declarations. Ignore the
+    // exception specifier because it was already checked above in
+    // CheckEquivalentExceptionSpec, and we don't want follow-on diagnostics
+    // about incompatible types under -fms-compatibility.
+    if (Context.hasSameFunctionTypeIgnoringExceptionSpec(OldQTypeForComparison,
+                                                         NewQType))
       return MergeCompatibleFunctionDecls(New, Old, S, MergeTypeWithOld);
 
     // If the types are imprecise (due to dependent constructs in friends or

Modified: head/contrib/llvm-project/clang/lib/Sema/SemaType.cpp
==============================================================================
--- head/contrib/llvm-project/clang/lib/Sema/SemaType.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/clang/lib/Sema/SemaType.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -6325,7 +6325,8 @@ namespace {
       Pointer,
       BlockPointer,
       Reference,
-      MemberPointer
+      MemberPointer,
+      MacroQualified,
     };
 
     QualType Original;
@@ -6356,6 +6357,9 @@ namespace {
         } else if (isa<AttributedType>(Ty)) {
           T = cast<AttributedType>(Ty)->getEquivalentType();
           Stack.push_back(Attributed);
+        } else if (isa<MacroQualifiedType>(Ty)) {
+          T = cast<MacroQualifiedType>(Ty)->getUnderlyingType();
+          Stack.push_back(MacroQualified);
         } else {
           const Type *DTy = Ty->getUnqualifiedDesugaredType();
           if (Ty == DTy) {
@@ -6411,6 +6415,9 @@ namespace {
         QualType New = wrap(C, cast<ParenType>(Old)->getInnerType(), I);
         return C.getParenType(New);
       }
+
+      case MacroQualified:
+        return wrap(C, cast<MacroQualifiedType>(Old)->getUnderlyingType(), I);
 
       case Pointer: {
         QualType New = wrap(C, cast<PointerType>(Old)->getPointeeType(), I);

Modified: head/contrib/llvm-project/compiler-rt/lib/profile/InstrProfilingUtil.c
==============================================================================
--- head/contrib/llvm-project/compiler-rt/lib/profile/InstrProfilingUtil.c	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/compiler-rt/lib/profile/InstrProfilingUtil.c	Sun Dec 22 11:50:44 2019	(r356004)
@@ -189,8 +189,9 @@ COMPILER_RT_VISIBILITY FILE *lprofOpenFileEx(const cha
   f = fdopen(fd, "r+b");
 #elif defined(_WIN32)
   // FIXME: Use the wide variants to handle Unicode filenames.
-  HANDLE h = CreateFileA(ProfileName, GENERIC_READ | GENERIC_WRITE, 0, 0,
-                         OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
+  HANDLE h = CreateFileA(ProfileName, GENERIC_READ | GENERIC_WRITE,
+                         FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS,
+                         FILE_ATTRIBUTE_NORMAL, 0);
   if (h == INVALID_HANDLE_VALUE)
     return NULL;
 
@@ -199,6 +200,10 @@ COMPILER_RT_VISIBILITY FILE *lprofOpenFileEx(const cha
     CloseHandle(h);
     return NULL;
   }
+
+  if (lprofLockFd(fd) != 0)
+    PROF_WARN("Data may be corrupted during profile merging : %s\n",
+              "Fail to obtain file lock due to system limit.");
 
   f = _fdopen(fd, "r+b");
   if (f == 0) {

Modified: head/contrib/llvm-project/lld/COFF/Driver.cpp
==============================================================================
--- head/contrib/llvm-project/lld/COFF/Driver.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/lld/COFF/Driver.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -1138,7 +1138,7 @@ void LinkerDriver::link(ArrayRef<const char *> argsArr
     }
   }
 
-  if (!args.hasArg(OPT_INPUT)) {
+  if (!args.hasArg(OPT_INPUT, OPT_wholearchive_file)) {
     if (args.hasArg(OPT_deffile))
       config->noEntry = true;
     else
@@ -1626,7 +1626,7 @@ void LinkerDriver::link(ArrayRef<const char *> argsArr
   }
 
   // Handle generation of import library from a def file.
-  if (!args.hasArg(OPT_INPUT)) {
+  if (!args.hasArg(OPT_INPUT, OPT_wholearchive_file)) {
     fixupExports();
     createImportLibrary(/*asLib=*/true);
     return;
@@ -1672,8 +1672,8 @@ void LinkerDriver::link(ArrayRef<const char *> argsArr
 
   // Set default image name if neither /out or /def set it.
   if (config->outputFile.empty()) {
-    config->outputFile =
-        getOutputPath((*args.filtered(OPT_INPUT).begin())->getValue());
+    config->outputFile = getOutputPath(
+        (*args.filtered(OPT_INPUT, OPT_wholearchive_file).begin())->getValue());
   }
 
   // Fail early if an output file is not writable.

Modified: head/contrib/llvm-project/lld/ELF/Symbols.h
==============================================================================
--- head/contrib/llvm-project/lld/ELF/Symbols.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/lld/ELF/Symbols.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -108,27 +108,27 @@ class Symbol { (public)
 
   // Symbol visibility. This is the computed minimum visibility of all
   // observed non-DSO symbols.
-  unsigned visibility : 2;
+  uint8_t visibility : 2;
 
   // True if the symbol was used for linking and thus need to be added to the
   // output file's symbol table. This is true for all symbols except for
   // unreferenced DSO symbols, lazy (archive) symbols, and bitcode symbols that
   // are unreferenced except by other bitcode objects.
-  unsigned isUsedInRegularObj : 1;
+  uint8_t isUsedInRegularObj : 1;
 
   // If this flag is true and the symbol has protected or default visibility, it
   // will appear in .dynsym. This flag is set by interposable DSO symbols in
   // executables, by most symbols in DSOs and executables built with
   // --export-dynamic, and by dynamic lists.
-  unsigned exportDynamic : 1;
+  uint8_t exportDynamic : 1;
 
   // False if LTO shouldn't inline whatever this symbol points to. If a symbol
   // is overwritten after LTO, LTO shouldn't inline the symbol because it
   // doesn't know the final contents of the symbol.
-  unsigned canInline : 1;
+  uint8_t canInline : 1;
 
   // True if this symbol is specified by --trace-symbol option.
-  unsigned traced : 1;
+  uint8_t traced : 1;
 
   inline void replace(const Symbol &New);
 
@@ -236,28 +236,28 @@ class Symbol { (public)
 public:
   // True the symbol should point to its PLT entry.
   // For SharedSymbol only.
-  unsigned needsPltAddr : 1;
+  uint8_t needsPltAddr : 1;
 
   // True if this symbol is in the Iplt sub-section of the Plt and the Igot
   // sub-section of the .got.plt or .got.
-  unsigned isInIplt : 1;
+  uint8_t isInIplt : 1;
 
   // True if this symbol needs a GOT entry and its GOT entry is actually in
   // Igot. This will be true only for certain non-preemptible ifuncs.
-  unsigned gotInIgot : 1;
+  uint8_t gotInIgot : 1;
 
   // True if this symbol is preemptible at load time.
-  unsigned isPreemptible : 1;
+  uint8_t isPreemptible : 1;
 
   // True if an undefined or shared symbol is used from a live section.
-  unsigned used : 1;
+  uint8_t used : 1;
 
   // True if a call to this symbol needs to be followed by a restore of the
   // PPC64 toc pointer.
-  unsigned needsTocRestore : 1;
+  uint8_t needsTocRestore : 1;
 
   // True if this symbol is defined by a linker script.
-  unsigned scriptDefined : 1;
+  uint8_t scriptDefined : 1;
 
   // The partition whose dynamic symbol table contains this symbol's definition.
   uint8_t partition = 1;

Modified: head/contrib/llvm-project/lld/docs/ReleaseNotes.rst
==============================================================================
--- head/contrib/llvm-project/lld/docs/ReleaseNotes.rst	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/lld/docs/ReleaseNotes.rst	Sun Dec 22 11:50:44 2019	(r356004)
@@ -153,7 +153,7 @@ COFF Improvements
 
 * Having more than two ``/natvis:`` now works correctly; it used to not
   work for larger binaries before.
-  (`r327895 <https://reviews.llvm.org/rL327895>`_)
+  (`r359515 <https://reviews.llvm.org/rL359515>`_)
 
 * Undefined symbols are now printed only in demangled form. Pass
   ``/demangle:no`` to see raw symbol names instead.

Copied: head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp (from r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp	Sun Dec 22 11:50:44 2019	(r356004, copy of r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.cpp)
@@ -0,0 +1,88 @@
+#include "PythonReadline.h"
+
+#ifdef LLDB_USE_LIBEDIT_READLINE_COMPAT_MODULE
+
+#include <stdio.h>
+
+#include <editline/readline.h>
+
+// Simple implementation of the Python readline module using libedit.
+// In the event that libedit is excluded from the build, this turns
+// back into a null implementation that blocks the module from pulling
+// in the GNU readline shared lib, which causes linkage confusion when
+// both readline and libedit's readline compatibility symbols collide.
+//
+// Currently it only installs a PyOS_ReadlineFunctionPointer, without
+// implementing any of the readline module methods. This is meant to
+// work around LLVM pr18841 to avoid seg faults in the stock Python
+// readline.so linked against GNU readline.
+//
+// Bug on the cpython side: https://bugs.python.org/issue38634
+
+PyDoc_STRVAR(moduleDocumentation,
+             "Simple readline module implementation based on libedit.");
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef readline_module = {
+    PyModuleDef_HEAD_INIT, // m_base
+    "lldb_editline",       // m_name
+    moduleDocumentation,   // m_doc
+    -1,                    // m_size
+    nullptr,               // m_methods
+    nullptr,               // m_reload
+    nullptr,               // m_traverse
+    nullptr,               // m_clear
+    nullptr,               // m_free
+};
+#else
+static struct PyMethodDef moduleMethods[] = {{nullptr, nullptr, 0, nullptr}};
+#endif
+
+static char *
+#if PY_MAJOR_VERSION >= 3
+simple_readline(FILE *stdin, FILE *stdout, const char *prompt)
+#else
+simple_readline(FILE *stdin, FILE *stdout, char *prompt)
+#endif
+{
+  rl_instream = stdin;
+  rl_outstream = stdout;
+  char *line = readline(prompt);
+  if (!line) {
+#if PY_MAJOR_VERSION >= 3
+    char *ret = (char *)PyMem_RawMalloc(1);
+#else
+    char *ret = (char *)PyMem_Malloc(1);
+#endif
+    if (ret != NULL)
+      *ret = '\0';
+    return ret;
+  }
+  if (*line)
+    add_history(line);
+  int n = strlen(line);
+#if PY_MAJOR_VERSION >= 3
+  char *ret = (char *)PyMem_RawMalloc(n + 2);
+#else
+  char *ret = (char *)PyMem_Malloc(n + 2);
+#endif
+  if (ret) {
+    strncpy(ret, line, n);
+    free(line);
+    ret[n] = '\n';
+    ret[n + 1] = '\0';
+  }
+  return ret;
+}
+
+PyMODINIT_FUNC initlldb_readline(void) {
+  PyOS_ReadlineFunctionPointer = simple_readline;
+
+#if PY_MAJOR_VERSION >= 3
+  return PyModule_Create(&readline_module);
+#else
+  Py_InitModule4("readline", moduleMethods, moduleDocumentation,
+                 static_cast<PyObject *>(NULL), PYTHON_API_VERSION);
+#endif
+}
+#endif

Copied: head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h (from r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h	Sun Dec 22 11:50:44 2019	(r356004, copy of r355987, vendor/llvm-project/release-9.x/lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h)
@@ -0,0 +1,26 @@
+//===-- PythonReadline.h ----------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_PYTHONREADLINE_H
+#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_PYTHONREADLINE_H
+
+#if !defined(LLDB_DISABLE_LIBEDIT) && defined(__linux__)
+// NOTE: Since Python may define some pre-processor definitions which affect the
+// standard headers on some systems, you must include Python.h before any
+// standard headers are included.
+#include "Python.h"
+
+// no need to hack into Python's readline module if libedit isn't used.
+//
+#define LLDB_USE_LIBEDIT_READLINE_COMPAT_MODULE 1
+
+extern "C" PyMODINIT_FUNC initlldb_readline(void);
+
+#endif
+
+#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_PYTHONREADLINE_H

Modified: head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
==============================================================================
--- head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -17,6 +17,7 @@
 
 #include "PythonDataObjects.h"
 #include "PythonExceptionState.h"
+#include "PythonReadline.h"
 #include "ScriptInterpreterPythonImpl.h"
 
 #include "lldb/API/SBFrame.h"
@@ -206,6 +207,22 @@ struct InitializePythonRAII { (public)
     m_stdin_tty_state.Save(STDIN_FILENO, false);
 
     InitializePythonHome();
+
+#ifdef LLDB_USE_LIBEDIT_READLINE_COMPAT_MODULE
+    // Python's readline is incompatible with libedit being linked into lldb.
+    // Provide a patched version local to the embedded interpreter.
+    bool ReadlinePatched = false;
+    for (auto *p = PyImport_Inittab; p->name != NULL; p++) {
+      if (strcmp(p->name, "readline") == 0) {
+        p->initfunc = initlldb_readline;
+        break;
+      }
+    }
+    if (!ReadlinePatched) {
+      PyImport_AppendInittab("readline", initlldb_readline);
+      ReadlinePatched = true;
+    }
+#endif
 
     // Register _lldb as a built-in module.
     PyImport_AppendInittab("_lldb", LLDBSwigPyInit);

Modified: head/contrib/llvm-project/lldb/source/Symbol/Symtab.cpp
==============================================================================
--- head/contrib/llvm-project/lldb/source/Symbol/Symtab.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/lldb/source/Symbol/Symtab.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -896,14 +896,8 @@ void Symtab::InitAddressIndexes() {
       for (size_t i = 0; i < num_entries; i++) {
         FileRangeToIndexMap::Entry *entry =
             m_file_addr_to_index.GetMutableEntryAtIndex(i);
-        if (entry->GetByteSize() > 0)
-          continue;
-        addr_t curr_base_addr = entry->GetRangeBase();
-        // Symbols with non-zero size will show after zero-sized symbols on the
-        // same address. So do not set size of a non-last zero-sized symbol.
-        if (i == num_entries - 1 ||
-            m_file_addr_to_index.GetMutableEntryAtIndex(i + 1)
-                    ->GetRangeBase() != curr_base_addr) {
+        if (entry->GetByteSize() == 0) {
+          addr_t curr_base_addr = entry->GetRangeBase();
           const RangeVector<addr_t, addr_t>::Entry *containing_section =
               section_ranges.FindEntryThatContains(curr_base_addr);
 

Modified: head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineFunction.h
==============================================================================
--- head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineFunction.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineFunction.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -792,6 +792,10 @@ class MachineFunction { (public)
                     MCSymbol *PreInstrSymbol = nullptr,
                     MCSymbol *PostInstrSymbol = nullptr);
 
+  MachineInstr::ExtraInfo *createMIExtraInfoWithMarker(
+      ArrayRef<MachineMemOperand *> MMOs, MCSymbol *PreInstrSymbol,
+      MCSymbol *PostInstrSymbol, MDNode *HeapAllocMarker);
+
   /// Allocate a string and populate it with the given external symbol name.
   const char *createExternalSymbolName(StringRef Name);
 

Modified: head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h
==============================================================================
--- head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -137,19 +137,23 @@ class MachineInstr (private)
   /// This has to be defined eagerly due to the implementation constraints of
   /// `PointerSumType` where it is used.
   class ExtraInfo final
-      : TrailingObjects<ExtraInfo, MachineMemOperand *, MCSymbol *> {
+      : TrailingObjects<ExtraInfo, MachineMemOperand *, MCSymbol *, MDNode *> {
   public:
     static ExtraInfo *create(BumpPtrAllocator &Allocator,
                              ArrayRef<MachineMemOperand *> MMOs,
                              MCSymbol *PreInstrSymbol = nullptr,
-                             MCSymbol *PostInstrSymbol = nullptr) {
+                             MCSymbol *PostInstrSymbol = nullptr,
+                             MDNode *HeapAllocMarker = nullptr) {
       bool HasPreInstrSymbol = PreInstrSymbol != nullptr;
       bool HasPostInstrSymbol = PostInstrSymbol != nullptr;
+      bool HasHeapAllocMarker = HeapAllocMarker != nullptr;
       auto *Result = new (Allocator.Allocate(
-          totalSizeToAlloc<MachineMemOperand *, MCSymbol *>(
-              MMOs.size(), HasPreInstrSymbol + HasPostInstrSymbol),
+          totalSizeToAlloc<MachineMemOperand *, MCSymbol *, MDNode *>(
+              MMOs.size(), HasPreInstrSymbol + HasPostInstrSymbol,
+              HasHeapAllocMarker),
           alignof(ExtraInfo)))
-          ExtraInfo(MMOs.size(), HasPreInstrSymbol, HasPostInstrSymbol);
+          ExtraInfo(MMOs.size(), HasPreInstrSymbol, HasPostInstrSymbol,
+                    HasHeapAllocMarker);
 
       // Copy the actual data into the trailing objects.
       std::copy(MMOs.begin(), MMOs.end(),
@@ -160,6 +164,8 @@ class MachineInstr (private)
       if (HasPostInstrSymbol)
         Result->getTrailingObjects<MCSymbol *>()[HasPreInstrSymbol] =
             PostInstrSymbol;
+      if (HasHeapAllocMarker)
+        Result->getTrailingObjects<MDNode *>()[0] = HeapAllocMarker;
 
       return Result;
     }
@@ -178,6 +184,10 @@ class MachineInstr (private)
                  : nullptr;
     }
 
+    MDNode *getHeapAllocMarker() const {
+      return HasHeapAllocMarker ? getTrailingObjects<MDNode *>()[0] : nullptr;
+    }
+
   private:
     friend TrailingObjects;
 
@@ -189,6 +199,7 @@ class MachineInstr (private)
     const int NumMMOs;
     const bool HasPreInstrSymbol;
     const bool HasPostInstrSymbol;
+    const bool HasHeapAllocMarker;
 
     // Implement the `TrailingObjects` internal API.
     size_t numTrailingObjects(OverloadToken<MachineMemOperand *>) const {
@@ -197,12 +208,17 @@ class MachineInstr (private)
     size_t numTrailingObjects(OverloadToken<MCSymbol *>) const {
       return HasPreInstrSymbol + HasPostInstrSymbol;
     }
+    size_t numTrailingObjects(OverloadToken<MDNode *>) const {
+      return HasHeapAllocMarker;
+    }
 
     // Just a boring constructor to allow us to initialize the sizes. Always use
     // the `create` routine above.
-    ExtraInfo(int NumMMOs, bool HasPreInstrSymbol, bool HasPostInstrSymbol)
+    ExtraInfo(int NumMMOs, bool HasPreInstrSymbol, bool HasPostInstrSymbol,
+              bool HasHeapAllocMarker)
         : NumMMOs(NumMMOs), HasPreInstrSymbol(HasPreInstrSymbol),
-          HasPostInstrSymbol(HasPostInstrSymbol) {}
+          HasPostInstrSymbol(HasPostInstrSymbol),
+          HasHeapAllocMarker(HasHeapAllocMarker) {}
   };
 
   /// Enumeration of the kinds of inline extra info available. It is important
@@ -577,6 +593,16 @@ class MachineInstr (private)
     return nullptr;
   }
 
+  /// Helper to extract a heap alloc marker if one has been added.
+  MDNode *getHeapAllocMarker() const {
+    if (!Info)
+      return nullptr;
+    if (ExtraInfo *EI = Info.get<EIIK_OutOfLine>())
+      return EI->getHeapAllocMarker();
+
+    return nullptr;
+  }
+
   /// API for querying MachineInstr properties. They are the same as MCInstrDesc
   /// queries but they are bundle aware.
 
@@ -1578,6 +1604,12 @@ class MachineInstr (private)
   /// replace ours with it.
   void cloneInstrSymbols(MachineFunction &MF, const MachineInstr &MI);
 
+  /// Set a marker on instructions that denotes where we should create and emit
+  /// heap alloc site labels. This waits until after instruction selection and
+  /// optimizations to create the label, so it should still work if the
+  /// instruction is removed or duplicated.
+  void setHeapAllocMarker(MachineFunction &MF, MDNode *MD);
+
   /// Return the MIFlags which represent both MachineInstrs. This
   /// should be used when merging two MachineInstrs into one. This routine does
   /// not modify the MIFlags of this MachineInstr.
@@ -1632,6 +1664,12 @@ class MachineInstr (private)
   const TargetRegisterClass *getRegClassConstraintEffectForVRegImpl(
       unsigned OpIdx, unsigned Reg, const TargetRegisterClass *CurRC,
       const TargetInstrInfo *TII, const TargetRegisterInfo *TRI) const;
+
+  /// Stores extra instruction information inline or allocates as ExtraInfo
+  /// based on the number of pointers.
+  void setExtraInfo(MachineFunction &MF, ArrayRef<MachineMemOperand *> MMOs,
+                    MCSymbol *PreInstrSymbol, MCSymbol *PostInstrSymbol,
+                    MDNode *HeapAllocMarker);
 };
 
 /// Special DenseMapInfo traits to compare MachineInstr* by *value* of the

Modified: head/contrib/llvm-project/llvm/include/llvm/CodeGen/StackProtector.h
==============================================================================
--- head/contrib/llvm-project/llvm/include/llvm/CodeGen/StackProtector.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/include/llvm/CodeGen/StackProtector.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -89,7 +89,8 @@ class StackProtector : public FunctionPass { (private)
                                 bool InStruct = false) const;
 
   /// Check whether a stack allocation has its address taken.
-  bool HasAddressTaken(const Instruction *AI);
+  bool HasAddressTaken(const Instruction *AI,
+                       SmallPtrSetImpl<const PHINode *> &VisitedPHIs);
 
   /// RequiresStackProtector - Check whether or not this function needs a
   /// stack protector based upon the stack protector level.

Modified: head/contrib/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
==============================================================================
--- head/contrib/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -16,6 +16,8 @@
 #include "llvm/Demangle/DemangleConfig.h"
 #include "llvm/Demangle/StringView.h"
 #include <array>
+#include <cstdint>
+#include <string>
 
 namespace llvm {
 namespace itanium_demangle {

Modified: head/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/GVN.h
==============================================================================
--- head/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/GVN.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/include/llvm/Transforms/Scalar/GVN.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -120,6 +120,8 @@ class GVN : public PassInfoMixin<GVN> { (public)
     uint32_t lookupOrAddCall(CallInst *C);
     uint32_t phiTranslateImpl(const BasicBlock *BB, const BasicBlock *PhiBlock,
                               uint32_t Num, GVN &Gvn);
+    bool areCallValsEqual(uint32_t Num, uint32_t NewNum, const BasicBlock *Pred,
+                          const BasicBlock *PhiBlock, GVN &Gvn);
     std::pair<uint32_t, bool> assignExpNewValueNum(Expression &exp);
     bool areAllValsInBB(uint32_t num, const BasicBlock *BB, GVN &Gvn);
 

Modified: head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
==============================================================================
--- head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -1127,15 +1127,9 @@ void CodeViewDebug::emitDebugInfoForFunction(const Fun
     }
 
     for (auto HeapAllocSite : FI.HeapAllocSites) {
-      MCSymbol *BeginLabel = std::get<0>(HeapAllocSite);
-      MCSymbol *EndLabel = std::get<1>(HeapAllocSite);
-
-      // The labels might not be defined if the instruction was replaced
-      // somewhere in the codegen pipeline.
-      if (!BeginLabel->isDefined() || !EndLabel->isDefined())
-        continue;
-
-      DIType *DITy = std::get<2>(HeapAllocSite);
+      const MCSymbol *BeginLabel = std::get<0>(HeapAllocSite);
+      const MCSymbol *EndLabel = std::get<1>(HeapAllocSite);
+      const DIType *DITy = std::get<2>(HeapAllocSite);
       MCSymbol *HeapAllocEnd = beginSymbolRecord(SymbolKind::S_HEAPALLOCSITE);
       OS.AddComment("Call site offset");
       OS.EmitCOFFSecRel32(BeginLabel, /*Offset=*/0);
@@ -1454,6 +1448,16 @@ void CodeViewDebug::beginFunctionImpl(const MachineFun
     DebugLoc FnStartDL = PrologEndLoc.getFnDebugLoc();
     maybeRecordLocation(FnStartDL, MF);
   }
+
+  // Find heap alloc sites and emit labels around them.
+  for (const auto &MBB : *MF) {
+    for (const auto &MI : MBB) {
+      if (MI.getHeapAllocMarker()) {
+        requestLabelBeforeInsn(&MI);
+        requestLabelAfterInsn(&MI);
+      }
+    }
+  }
 }
 
 static bool shouldEmitUdt(const DIType *T) {
@@ -2888,8 +2892,18 @@ void CodeViewDebug::endFunctionImpl(const MachineFunct
     return;
   }
 
+  // Find heap alloc sites and add to list.
+  for (const auto &MBB : *MF) {
+    for (const auto &MI : MBB) {
+      if (MDNode *MD = MI.getHeapAllocMarker()) {
+        CurFn->HeapAllocSites.push_back(std::make_tuple(getLabelBeforeInsn(&MI),
+                                                        getLabelAfterInsn(&MI),
+                                                        dyn_cast<DIType>(MD)));
+      }
+    }
+  }
+
   CurFn->Annotations = MF->getCodeViewAnnotations();
-  CurFn->HeapAllocSites = MF->getCodeViewHeapAllocSites();
 
   CurFn->End = Asm->getFunctionEnd();
 

Modified: head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h
==============================================================================
--- head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.h	Sun Dec 22 11:50:44 2019	(r356004)
@@ -148,7 +148,8 @@ class LLVM_LIBRARY_VISIBILITY CodeViewDebug : public D
     SmallVector<LexicalBlock *, 1> ChildBlocks;
 
     std::vector<std::pair<MCSymbol *, MDNode *>> Annotations;
-    std::vector<std::tuple<MCSymbol *, MCSymbol *, DIType *>> HeapAllocSites;
+    std::vector<std::tuple<const MCSymbol *, const MCSymbol *, const DIType *>>
+        HeapAllocSites;
 
     const MCSymbol *Begin = nullptr;
     const MCSymbol *End = nullptr;

Modified: head/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
==============================================================================
--- head/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp	Sun Dec 22 08:22:02 2019	(r356003)
+++ head/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp	Sun Dec 22 11:50:44 2019	(r356004)
@@ -588,8 +588,8 @@ void IRTranslator::emitSwitchCase(SwitchCG::CaseBlock 
     Register CondRHS = getOrCreateVReg(*CB.CmpRHS);
     Cond = MIB.buildICmp(CB.PredInfo.Pred, i1Ty, CondLHS, CondRHS).getReg(0);
   } else {
-    assert(CB.PredInfo.Pred == CmpInst::ICMP_ULE &&
-           "Can only handle ULE ranges");

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



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