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>