Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jun 2017 06:40:40 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r320397 - in projects/clang500-import: contrib/compiler-rt/include/xray contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/interception contrib/compiler-rt/lib/lsan contrib/compiler-r...
Message-ID:  <201706270640.v5R6eeJQ047288@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Tue Jun 27 06:40:39 2017
New Revision: 320397
URL: https://svnweb.freebsd.org/changeset/base/320397

Log:
  Merge llvm, clang, lld, lldb, compiler-rt and libc++ r306325, and update
  build glue.

Added:
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc
     - copied unchanged from r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MacroFusion.h
     - copied unchanged from r320385, vendor/llvm/dist/include/llvm/CodeGen/MacroFusion.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
     - copied unchanged from r320385, vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeName.h
     - copied unchanged from r320385, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeName.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Solaris/
     - copied from r320385, vendor/llvm/dist/include/llvm/Support/Solaris/
  projects/clang500-import/contrib/llvm/lib/CodeGen/MacroFusion.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/CodeGen/MacroFusion.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeName.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeName.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCWinCOFFStreamer.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/MC/MCWinCOFFStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64CondBrTuning.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/Target/AArch64/AArch64CondBrTuning.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMMacroFusion.cpp
     - copied unchanged from r320385, vendor/llvm/dist/lib/Target/ARM/ARMMacroFusion.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMMacroFusion.h
     - copied unchanged from r320385, vendor/llvm/dist/lib/Target/ARM/ARMMacroFusion.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/PrecompiledPreamble.h
     - copied unchanged from r320385, vendor/clang/dist/include/clang/Frontend/PrecompiledPreamble.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Ananas.cpp
     - copied unchanged from r320385, vendor/clang/dist/lib/Driver/ToolChains/Ananas.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Ananas.h
     - copied unchanged from r320385, vendor/clang/dist/lib/Driver/ToolChains/Ananas.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UsingDeclarationsSorter.cpp
     - copied unchanged from r320385, vendor/clang/dist/lib/Format/UsingDeclarationsSorter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UsingDeclarationsSorter.h
     - copied unchanged from r320385, vendor/clang/dist/lib/Format/UsingDeclarationsSorter.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/PrecompiledPreamble.cpp
     - copied unchanged from r320385, vendor/clang/dist/lib/Frontend/PrecompiledPreamble.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/MipsArchTree.cpp
     - copied unchanged from r320385, vendor/lld/dist/ELF/Arch/MipsArchTree.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ASan/
     - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/ASan/
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/
     - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/MainThreadChecker/
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/TSan/
     - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/TSan/
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/UBSan/
     - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/UBSan/
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/UndefinedBehaviorSanitizer/
     - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/UndefinedBehaviorSanitizer/
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/BytesOutputStyle.cpp
     - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/BytesOutputStyle.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/BytesOutputStyle.h
     - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/BytesOutputStyle.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
     - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/DumpOutputStyle.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.h
     - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/DumpOutputStyle.h
Deleted:
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Solaris.h
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
  projects/clang500-import/contrib/llvm/lib/MC/WinCOFFStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoadCombine.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Mips.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/posix/ProcessLauncherPosix.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ProcessLauncherPosix.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/CompactTypeDumpVisitor.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/CompactTypeDumpVisitor.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.h
Modified:
  projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc
  projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt
  projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc
  projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h
  projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
  projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator_combined.h
  projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator_secondary.h
  projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.cc
  projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
  projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.h
  projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_interface.inc
  projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc
  projects/clang500-import/contrib/libc++/include/__config
  projects/clang500-import/contrib/libc++/include/experimental/any
  projects/clang500-import/contrib/libc++/include/new
  projects/clang500-import/contrib/libc++/include/numeric
  projects/clang500-import/contrib/libc++/include/variant
  projects/clang500-import/contrib/libc++/src/experimental/filesystem/path.cpp
  projects/clang500-import/contrib/llvm/include/llvm-c/OrcBindings.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/APFloat.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/StringExtras.h
  projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/LazyValueInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/Loads.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/LoopInfoImpl.h
  projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Dwarf.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/MachO.h
  projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Wasm.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/DIE.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Legalizer.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Utils.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LexicalScopes.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineMemOperand.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineModuleInfoImpls.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineScheduler.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/RegisterScavenging.h
  projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CodeView.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/EnumTables.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeSerializer.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DIContext.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MSFBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MSFCommon.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MappedBlockStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/DIA/DIASession.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/IPDBSession.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/InfoStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeSession.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBFile.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStream.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h
  projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/Symbolize.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/GenericValue.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/JITEventListener.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/JITSymbol.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/CompileUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
  projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/ConstantRange.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/DerivedUser.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Instruction.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsAMDGPU.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsX86.td
  projects/clang500-import/contrib/llvm/include/llvm/IR/Metadata.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Operator.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/PatternMatch.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Statepoint.h
  projects/clang500-import/contrib/llvm/include/llvm/IR/Value.h
  projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h
  projects/clang500-import/contrib/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCAsmBackend.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCAssembler.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCFragment.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCSection.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCSymbolWasm.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCValue.h
  projects/clang500-import/contrib/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/IRSymtab.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/MachO.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/Wasm.h
  projects/clang500-import/contrib/llvm/include/llvm/Object/WindowsResource.h
  projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/WasmYAML.h
  projects/clang500-import/contrib/llvm/include/llvm/Option/OptParser.td
  projects/clang500-import/contrib/llvm/include/llvm/Option/OptTable.h
  projects/clang500-import/contrib/llvm/include/llvm/Option/Option.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProfReader.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProfWriter.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/SampleProf.h
  projects/clang500-import/contrib/llvm/include/llvm/ProfileData/SampleProfReader.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamReader.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamRef.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/CachePruning.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/DataExtractor.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Errno.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Error.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GCOV.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTree.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTreeConstruction.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/GraphWriter.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Host.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/Path.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/TargetRegistry.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLParser.h
  projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLTraits.h
  projects/clang500-import/contrib/llvm/include/llvm/TableGen/Main.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/GenericOpcodes.td
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetInstrInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLowering.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetOpcodes.def
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Target/TargetSubtargetInfo.h
  projects/clang500-import/contrib/llvm/include/llvm/Testing/Support/Error.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/InstrProfiling.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Instrumentation.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/GVN.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/Reassociate.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/Local.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/LoopUtils.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/OrderedInstructions.h
  projects/clang500-import/contrib/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
  projects/clang500-import/contrib/llvm/include/llvm/module.modulemap
  projects/clang500-import/contrib/llvm/lib/Analysis/AliasSetTracker.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/AssumptionCache.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/CFLSteensAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/DemandedBits.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/InlineCost.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/LazyValueInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/Loads.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp
  projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
  projects/clang500-import/contrib/llvm/lib/BinaryFormat/Magic.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Utils.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/IfConversion.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/ImplicitNullChecks.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.h
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineModuleInfoImpls.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/MachineScheduler.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterUsageInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/TargetRegisterInfo.cpp
  projects/clang500-import/contrib/llvm/lib/CodeGen/TargetSubtargetInfo.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSubsectionRecord.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/EnumTables.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeTableCollection.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MSFBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MSFCommon.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MappedBlockStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStreamBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/InfoStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NamedStreamMap.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeCompilandSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeEnumModules.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp
  projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/TpiStream.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp
  projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
  projects/clang500-import/contrib/llvm/lib/IR/AsmWriter.cpp
  projects/clang500-import/contrib/llvm/lib/IR/AttributeImpl.h
  projects/clang500-import/contrib/llvm/lib/IR/Attributes.cpp
  projects/clang500-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
  projects/clang500-import/contrib/llvm/lib/IR/BasicBlock.cpp
  projects/clang500-import/contrib/llvm/lib/IR/ConstantRange.cpp
  projects/clang500-import/contrib/llvm/lib/IR/Instructions.cpp
  projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.cpp
  projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.h
  projects/clang500-import/contrib/llvm/lib/IR/Metadata.cpp
  projects/clang500-import/contrib/llvm/lib/IR/Statepoint.cpp
  projects/clang500-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
  projects/clang500-import/contrib/llvm/lib/MC/ELFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCAssembler.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCFragment.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCSection.cpp
  projects/clang500-import/contrib/llvm/lib/MC/MCWasmStreamer.cpp
  projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/MC/WinCOFFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Object/COFFObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/IRSymtab.cpp
  projects/clang500-import/contrib/llvm/lib/Object/MachOObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/WasmObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Object/WindowsResource.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp
  projects/clang500-import/contrib/llvm/lib/ObjectYAML/WasmYAML.cpp
  projects/clang500-import/contrib/llvm/lib/Option/OptTable.cpp
  projects/clang500-import/contrib/llvm/lib/Option/Option.cpp
  projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProf.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProfReader.cpp
  projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProfWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Support/APFloat.cpp
  projects/clang500-import/contrib/llvm/lib/Support/APInt.cpp
  projects/clang500-import/contrib/llvm/lib/Support/BinaryStreamReader.cpp
  projects/clang500-import/contrib/llvm/lib/Support/CachePruning.cpp
  projects/clang500-import/contrib/llvm/lib/Support/CommandLine.cpp
  projects/clang500-import/contrib/llvm/lib/Support/DataExtractor.cpp
  projects/clang500-import/contrib/llvm/lib/Support/GraphWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Support/Triple.cpp
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Host.inc
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Memory.inc
  projects/clang500-import/contrib/llvm/lib/Support/Unix/Program.inc
  projects/clang500-import/contrib/llvm/lib/Support/Windows/Host.inc
  projects/clang500-import/contrib/llvm/lib/Support/YAMLParser.cpp
  projects/clang500-import/contrib/llvm/lib/Support/YAMLTraits.cpp
  projects/clang500-import/contrib/llvm/lib/Support/raw_ostream.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrAtomics.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.h
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedA57.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedFalkorDetails.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedKryoDetails.td
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/BUFInstructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/FLATInstructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCCodeEmitter.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Processors.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIDefines.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOP1Instructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOP2Instructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOPCInstructions.td
  projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOPInstructions.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARM.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h
  projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonGenMux.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPeephole.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.h
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Lanai/MCTargetDesc/LanaiAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
  projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPC.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcTargetObjectFile.h
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZMachineScheduler.cpp
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZMachineScheduler.h
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZOperators.td
  projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetMachine.h
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyAsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstructionSelector.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86InterleavedAccess.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86IntrinsicsInfo.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86MacroFusion.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86MacroFusion.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetObjectFile.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetObjectFile.h
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
  projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.h
  projects/clang500-import/contrib/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/IPO/SampleProfile.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVN.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Scalar.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/Local.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopSimplify.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
  projects/clang500-import/contrib/llvm/tools/bugpoint/bugpoint.cpp
  projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/CXCompilationDatabase.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/Index.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Analysis/CloneDetection.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86_64.def
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSerializationKinds.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Module.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Edit/EditedSource.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Format/Format.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/PreprocessorOptions.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
  projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTDumper.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExternalASTMerger.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Analysis/CloneDetection.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Module.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypeCache.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/SwiftCallingConv.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/DriverOptions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/SanitizerArgs.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/WebAssembly.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Edit/EditedSource.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/Format.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/FormatToken.h
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/TokenAnnotator.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineFormatter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPExpressions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaCUDA.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CloneChecker.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
  projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
  projects/clang500-import/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp
  projects/clang500-import/contrib/llvm/tools/clang/tools/driver/driver.cpp
  projects/clang500-import/contrib/llvm/tools/clang/utils/TableGen/NeonEmitter.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Config.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/DriverUtils.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Options.td
  projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Strings.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/SymbolTable.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Symbols.cpp
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Symbols.h
  projects/clang500-import/contrib/llvm/tools/lld/COFF/Writer.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AArch64.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AMDGPU.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/ARM.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AVR.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/Mips.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/PPC.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/X86.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/X86_64.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/CMakeLists.txt
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Config.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/DriverUtils.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/InputSection.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/MarkLive.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Options.td
  projects/clang500-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Relocations.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.cpp
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.h
  projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp
  projects/clang500-import/contrib/llvm/tools/lld/README.md
  projects/clang500-import/contrib/llvm/tools/lld/lib/Driver/DarwinLdDriver.cpp
  projects/clang500-import/contrib/llvm/tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Host.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/NativeProcessProtocol.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-enumerations.h
  projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-private-enumerations.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBThread.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/API/SystemInitializerFull.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectFrame.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/IOHandler.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Mangled.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Timer.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Host.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/NativeProcessProtocol.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/Cocoa.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/NSArray.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h
  projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
  projects/clang500-import/contrib/llvm/tools/lli/OrcLazyJIT.cpp
  projects/clang500-import/contrib/llvm/tools/lli/OrcLazyJIT.h
  projects/clang500-import/contrib/llvm/tools/llvm-nm/llvm-nm.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-objdump/MachODump.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/Analyze.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/Diff.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LinePrinter.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LinePrinter.h
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.h
  projects/clang500-import/contrib/llvm/tools/llvm-profdata/llvm-profdata.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-readobj/ObjDumper.h
  projects/clang500-import/contrib/llvm/tools/llvm-readobj/llvm-readobj.cpp
  projects/clang500-import/contrib/llvm/tools/llvm-stress/llvm-stress.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.h
  projects/clang500-import/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/GlobalISelEmitter.cpp
  projects/clang500-import/contrib/llvm/utils/TableGen/OptParserEmitter.cpp
  projects/clang500-import/lib/clang/include/clang/Basic/Version.inc
  projects/clang500-import/lib/clang/include/lld/Config/Version.inc
  projects/clang500-import/lib/clang/include/llvm/Config/abi-breaking.h
  projects/clang500-import/lib/clang/include/llvm/Config/config.h
  projects/clang500-import/lib/clang/include/llvm/Support/DataTypes.h
  projects/clang500-import/lib/clang/include/llvm/Support/VCSRevision.h
  projects/clang500-import/lib/clang/libclang/Makefile
  projects/clang500-import/lib/clang/liblldb/Makefile
  projects/clang500-import/lib/clang/libllvm/Makefile
  projects/clang500-import/usr.bin/clang/lld/Makefile
  projects/clang500-import/usr.bin/clang/llvm-pdbutil/Makefile
Directory Properties:
  projects/clang500-import/contrib/compiler-rt/   (props changed)
  projects/clang500-import/contrib/libc++/   (props changed)
  projects/clang500-import/contrib/llvm/   (props changed)
  projects/clang500-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang500-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -60,7 +60,8 @@ extern int __xray_remove_handler();
 /// start logging their subsequent affected function calls (if patched).
 ///
 /// Returns 1 on success, 0 on error.
-extern int __xray_set_handler_arg1(void (*)(int32_t, XRayEntryType, uint64_t));
+extern int __xray_set_handler_arg1(void (*entry)(int32_t, XRayEntryType,
+                                                 uint64_t));
 
 /// Disables the XRay handler used to log first arguments of function calls.
 /// Returns 1 on success, 0 on error.

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -160,7 +160,7 @@ struct QuarantineCallback {
   }
 
   void *Allocate(uptr size) {
-    return get_allocator().Allocate(cache_, size, 1, false);
+    return get_allocator().Allocate(cache_, size, 1);
   }
 
   void Deallocate(void *p) {
@@ -266,7 +266,8 @@ struct Allocator {
   }
 
   void Initialize(const AllocatorOptions &options) {
-    allocator.Init(options.may_return_null, options.release_to_os_interval_ms);
+    SetAllocatorMayReturnNull(options.may_return_null);
+    allocator.Init(options.release_to_os_interval_ms);
     SharedInitCode(options);
   }
 
@@ -302,7 +303,7 @@ struct Allocator {
   }
 
   void ReInitialize(const AllocatorOptions &options) {
-    allocator.SetMayReturnNull(options.may_return_null);
+    SetAllocatorMayReturnNull(options.may_return_null);
     allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms);
     SharedInitCode(options);
 
@@ -323,7 +324,7 @@ struct Allocator {
     options->thread_local_quarantine_size_kb = quarantine.GetCacheSize() >> 10;
     options->min_redzone = atomic_load(&min_redzone, memory_order_acquire);
     options->max_redzone = atomic_load(&max_redzone, memory_order_acquire);
-    options->may_return_null = allocator.MayReturnNull();
+    options->may_return_null = AllocatorMayReturnNull();
     options->alloc_dealloc_mismatch =
         atomic_load(&alloc_dealloc_mismatch, memory_order_acquire);
     options->release_to_os_interval_ms = allocator.ReleaseToOSIntervalMs();
@@ -374,7 +375,7 @@ struct Allocator {
     if (UNLIKELY(!asan_inited))
       AsanInitFromRtl();
     if (RssLimitExceeded())
-      return allocator.ReturnNullOrDieOnOOM();
+      return AsanAllocator::FailureHandler::OnOOM();
     Flags &fl = *flags();
     CHECK(stack);
     const uptr min_alignment = SHADOW_GRANULARITY;
@@ -407,24 +408,22 @@ struct Allocator {
     if (size > kMaxAllowedMallocSize || needed_size > kMaxAllowedMallocSize) {
       Report("WARNING: AddressSanitizer failed to allocate 0x%zx bytes\n",
              (void*)size);
-      return allocator.ReturnNullOrDieOnBadRequest();
+      return AsanAllocator::FailureHandler::OnBadRequest();
     }
 
     AsanThread *t = GetCurrentThread();
     void *allocated;
     if (t) {
       AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage());
-      allocated =
-          allocator.Allocate(cache, needed_size, 8, false);
+      allocated = allocator.Allocate(cache, needed_size, 8);
     } else {
       SpinMutexLock l(&fallback_mutex);
       AllocatorCache *cache = &fallback_allocator_cache;
-      allocated =
-          allocator.Allocate(cache, needed_size, 8, false);
+      allocated = allocator.Allocate(cache, needed_size, 8);
     }
+    if (!allocated)
+      return nullptr;
 
-    if (!allocated) return allocator.ReturnNullOrDieOnOOM();
-
     if (*(u8 *)MEM_TO_SHADOW((uptr)allocated) == 0 && CanPoisonMemory()) {
       // Heap poisoning is enabled, but the allocator provides an unpoisoned
       // chunk. This is possible if CanPoisonMemory() was false for some
@@ -634,7 +633,7 @@ struct Allocator {
 
   void *Calloc(uptr nmemb, uptr size, BufferedStackTrace *stack) {
     if (CallocShouldReturnNullDueToOverflow(size, nmemb))
-      return allocator.ReturnNullOrDieOnBadRequest();
+      return AsanAllocator::FailureHandler::OnBadRequest();
     void *ptr = Allocate(nmemb * size, 8, stack, FROM_MALLOC, false);
     // If the memory comes from the secondary allocator no need to clear it
     // as it comes directly from mmap.

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -204,6 +204,14 @@ class ScopedInErrorReport {
       error_report_callback(buffer_copy.data());
     }
 
+    if (halt_on_error_ && common_flags()->abort_on_error) {
+      // On Android the message is truncated to 512 characters.
+      // FIXME: implement "compact" error format, possibly without, or with
+      // highly compressed stack traces?
+      // FIXME: or just use the summary line as abort message?
+      SetAbortMessage(buffer_copy.data());
+    }
+
     // In halt_on_error = false mode, reset the current error object (before
     // unlocking).
     if (!halt_on_error_)

Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt	Tue Jun 27 06:40:39 2017	(r320397)
@@ -1,3 +1,12 @@
 ___asan_default_options
 ___asan_default_suppressions
 ___asan_on_error
+___asan_set_shadow_00
+___asan_set_shadow_f1
+___asan_set_shadow_f2
+___asan_set_shadow_f3
+___asan_set_shadow_f4
+___asan_set_shadow_f5
+___asan_set_shadow_f6
+___asan_set_shadow_f7
+___asan_set_shadow_f8

Modified: projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -477,7 +477,7 @@ static size_t GetInstructionSize(uptr address, size_t*
   switch (*(u8*)address) {
     case 0xA1:  // A1 XX XX XX XX XX XX XX XX :
                 //   movabs eax, dword ptr ds:[XXXXXXXX]
-      return 8;
+      return 9;
   }
 
   switch (*(u16*)address) {
@@ -495,6 +495,11 @@ static size_t GetInstructionSize(uptr address, size_t*
     case 0x5741:  // push r15
     case 0x9066:  // Two-byte NOP
       return 2;
+
+    case 0x058B:  // 8B 05 XX XX XX XX : mov eax, dword ptr [XX XX XX XX]
+      if (rel_offset)
+        *rel_offset = 2;
+      return 6;
   }
 
   switch (0x00FFFFFF & *(u32*)address) {

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -38,6 +38,8 @@
   GET_STACK_TRACE(__sanitizer::common_flags()->malloc_context_size, \
                   common_flags()->fast_unwind_on_malloc)
 
+#define GET_STACK_TRACE_THREAD GET_STACK_TRACE(kStackTraceMax, true)
+
 namespace __lsan {
 
 void InitializeInterceptors();

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -38,8 +38,8 @@ typedef CombinedAllocator<PrimaryAllocator, AllocatorC
 static Allocator allocator;
 
 void InitializeAllocator() {
+  SetAllocatorMayReturnNull(common_flags()->allocator_may_return_null);
   allocator.InitLinkerInitialized(
-      common_flags()->allocator_may_return_null,
       common_flags()->allocator_release_to_os_interval_ms);
 }
 
@@ -76,7 +76,7 @@ void *Allocate(const StackTrace &stack, uptr size, upt
     Report("WARNING: LeakSanitizer failed to allocate %zu bytes\n", size);
     return nullptr;
   }
-  void *p = allocator.Allocate(GetAllocatorCache(), size, alignment, false);
+  void *p = allocator.Allocate(GetAllocatorCache(), size, alignment);
   // Do not rely on the allocator to clear the memory (it's slow).
   if (cleared && allocator.FromPrimary(p))
     memset(p, 0, size);

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -79,8 +79,7 @@ void EnableInThisThread() {
 
 u32 GetCurrentThread() {
   thread_local_data_t *data = get_tls_val(false);
-  CHECK(data);
-  return data->current_thread_id;
+  return data ? data->current_thread_id : kInvalidTid;
 }
 
 void SetCurrentThread(u32 tid) { get_tls_val(true)->current_thread_id = tid; }

Copied: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc (from r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc	Tue Jun 27 06:40:39 2017	(r320397, copy of r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc)
@@ -0,0 +1,192 @@
+//===-- lsan_mac.cc -------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file is a part of LeakSanitizer, a memory leak checker.
+//
+// Mac-specific details.
+//===----------------------------------------------------------------------===//
+
+#include "sanitizer_common/sanitizer_platform.h"
+#if SANITIZER_MAC
+
+#include "interception/interception.h"
+#include "lsan.h"
+#include "lsan_allocator.h"
+#include "lsan_thread.h"
+
+#include <pthread.h>
+
+namespace __lsan {
+// Support for the following functions from libdispatch on Mac OS:
+//   dispatch_async_f()
+//   dispatch_async()
+//   dispatch_sync_f()
+//   dispatch_sync()
+//   dispatch_after_f()
+//   dispatch_after()
+//   dispatch_group_async_f()
+//   dispatch_group_async()
+// TODO(glider): libdispatch API contains other functions that we don't support
+// yet.
+//
+// dispatch_sync() and dispatch_sync_f() are synchronous, although chances are
+// they can cause jobs to run on a thread different from the current one.
+// TODO(glider): if so, we need a test for this (otherwise we should remove
+// them).
+//
+// The following functions use dispatch_barrier_async_f() (which isn't a library
+// function but is exported) and are thus supported:
+//   dispatch_source_set_cancel_handler_f()
+//   dispatch_source_set_cancel_handler()
+//   dispatch_source_set_event_handler_f()
+//   dispatch_source_set_event_handler()
+//
+// The reference manual for Grand Central Dispatch is available at
+//   http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html
+// The implementation details are at
+//   http://libdispatch.macosforge.org/trac/browser/trunk/src/queue.c
+
+typedef void *dispatch_group_t;
+typedef void *dispatch_queue_t;
+typedef void *dispatch_source_t;
+typedef u64 dispatch_time_t;
+typedef void (*dispatch_function_t)(void *block);
+typedef void *(*worker_t)(void *block);
+
+// A wrapper for the ObjC blocks used to support libdispatch.
+typedef struct {
+  void *block;
+  dispatch_function_t func;
+  u32 parent_tid;
+} lsan_block_context_t;
+
+ALWAYS_INLINE
+void lsan_register_worker_thread(int parent_tid) {
+  if (GetCurrentThread() == kInvalidTid) {
+    u32 tid = ThreadCreate(parent_tid, 0, true);
+    ThreadStart(tid, GetTid());
+    SetCurrentThread(tid);
+  }
+}
+
+// For use by only those functions that allocated the context via
+// alloc_lsan_context().
+extern "C" void lsan_dispatch_call_block_and_release(void *block) {
+  lsan_block_context_t *context = (lsan_block_context_t *)block;
+  VReport(2,
+          "lsan_dispatch_call_block_and_release(): "
+          "context: %p, pthread_self: %p\n",
+          block, pthread_self());
+  lsan_register_worker_thread(context->parent_tid);
+  // Call the original dispatcher for the block.
+  context->func(context->block);
+  lsan_free(context);
+}
+
+}  // namespace __lsan
+
+using namespace __lsan;  // NOLINT
+
+// Wrap |ctxt| and |func| into an lsan_block_context_t.
+// The caller retains control of the allocated context.
+extern "C" lsan_block_context_t *alloc_lsan_context(void *ctxt,
+                                                    dispatch_function_t func) {
+  GET_STACK_TRACE_THREAD;
+  lsan_block_context_t *lsan_ctxt =
+      (lsan_block_context_t *)lsan_malloc(sizeof(lsan_block_context_t), stack);
+  lsan_ctxt->block = ctxt;
+  lsan_ctxt->func = func;
+  lsan_ctxt->parent_tid = GetCurrentThread();
+  return lsan_ctxt;
+}
+
+// Define interceptor for dispatch_*_f function with the three most common
+// parameters: dispatch_queue_t, context, dispatch_function_t.
+#define INTERCEPT_DISPATCH_X_F_3(dispatch_x_f)                        \
+  INTERCEPTOR(void, dispatch_x_f, dispatch_queue_t dq, void *ctxt,    \
+              dispatch_function_t func) {                             \
+    lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func); \
+    return REAL(dispatch_x_f)(dq, (void *)lsan_ctxt,                  \
+                              lsan_dispatch_call_block_and_release);  \
+  }
+
+INTERCEPT_DISPATCH_X_F_3(dispatch_async_f)
+INTERCEPT_DISPATCH_X_F_3(dispatch_sync_f)
+INTERCEPT_DISPATCH_X_F_3(dispatch_barrier_async_f)
+
+INTERCEPTOR(void, dispatch_after_f, dispatch_time_t when, dispatch_queue_t dq,
+            void *ctxt, dispatch_function_t func) {
+  lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func);
+  return REAL(dispatch_after_f)(when, dq, (void *)lsan_ctxt,
+                                lsan_dispatch_call_block_and_release);
+}
+
+INTERCEPTOR(void, dispatch_group_async_f, dispatch_group_t group,
+            dispatch_queue_t dq, void *ctxt, dispatch_function_t func) {
+  lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func);
+  REAL(dispatch_group_async_f)
+  (group, dq, (void *)lsan_ctxt, lsan_dispatch_call_block_and_release);
+}
+
+#if !defined(MISSING_BLOCKS_SUPPORT)
+extern "C" {
+void dispatch_async(dispatch_queue_t dq, void (^work)(void));
+void dispatch_group_async(dispatch_group_t dg, dispatch_queue_t dq,
+                          void (^work)(void));
+void dispatch_after(dispatch_time_t when, dispatch_queue_t queue,
+                    void (^work)(void));
+void dispatch_source_set_cancel_handler(dispatch_source_t ds,
+                                        void (^work)(void));
+void dispatch_source_set_event_handler(dispatch_source_t ds,
+                                       void (^work)(void));
+}
+
+#define GET_LSAN_BLOCK(work)                 \
+  void (^lsan_block)(void);                  \
+  int parent_tid = GetCurrentThread();       \
+  lsan_block = ^(void) {                     \
+    lsan_register_worker_thread(parent_tid); \
+    work();                                  \
+  }
+
+INTERCEPTOR(void, dispatch_async, dispatch_queue_t dq, void (^work)(void)) {
+  GET_LSAN_BLOCK(work);
+  REAL(dispatch_async)(dq, lsan_block);
+}
+
+INTERCEPTOR(void, dispatch_group_async, dispatch_group_t dg,
+            dispatch_queue_t dq, void (^work)(void)) {
+  GET_LSAN_BLOCK(work);
+  REAL(dispatch_group_async)(dg, dq, lsan_block);
+}
+
+INTERCEPTOR(void, dispatch_after, dispatch_time_t when, dispatch_queue_t queue,
+            void (^work)(void)) {
+  GET_LSAN_BLOCK(work);
+  REAL(dispatch_after)(when, queue, lsan_block);
+}
+
+INTERCEPTOR(void, dispatch_source_set_cancel_handler, dispatch_source_t ds,
+            void (^work)(void)) {
+  if (!work) {
+    REAL(dispatch_source_set_cancel_handler)(ds, work);
+    return;
+  }
+  GET_LSAN_BLOCK(work);
+  REAL(dispatch_source_set_cancel_handler)(ds, lsan_block);
+}
+
+INTERCEPTOR(void, dispatch_source_set_event_handler, dispatch_source_t ds,
+            void (^work)(void)) {
+  GET_LSAN_BLOCK(work);
+  REAL(dispatch_source_set_event_handler)(ds, lsan_block);
+}
+#endif
+
+#endif  // SANITIZER_MAC

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -77,7 +77,7 @@ u32 ThreadCreate(u32 parent_tid, uptr user_id, bool de
                                        /* arg */ nullptr);
 }
 
-void ThreadStart(u32 tid, tid_t os_id) {
+void ThreadStart(u32 tid, tid_t os_id, bool workerthread) {
   OnStartedArgs args;
   uptr stack_size = 0;
   uptr tls_size = 0;
@@ -87,7 +87,7 @@ void ThreadStart(u32 tid, tid_t os_id) {
   args.tls_end = args.tls_begin + tls_size;
   GetAllocatorCacheRange(&args.cache_begin, &args.cache_end);
   args.dtls = DTLS_Get();
-  thread_registry->StartThread(tid, os_id, /*workerthread*/ false, &args);
+  thread_registry->StartThread(tid, os_id, workerthread, &args);
 }
 
 void ThreadFinish() {

Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -45,7 +45,7 @@ class ThreadContext : public ThreadContextBase {
 
 void InitializeThreadRegistry();
 
-void ThreadStart(u32 tid, tid_t os_id);
+void ThreadStart(u32 tid, tid_t os_id, bool workerthread = false);
 void ThreadFinish();
 u32 ThreadCreate(u32 tid, uptr uid, bool detached);
 void ThreadJoin(u32 tid);

Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -119,9 +119,8 @@ static AllocatorCache fallback_allocator_cache;
 static SpinMutex fallback_mutex;
 
 void MsanAllocatorInit() {
-  allocator.Init(
-      common_flags()->allocator_may_return_null,
-      common_flags()->allocator_release_to_os_interval_ms);
+  SetAllocatorMayReturnNull(common_flags()->allocator_may_return_null);
+  allocator.Init(common_flags()->allocator_release_to_os_interval_ms);
 }
 
 AllocatorCache *GetAllocatorCache(MsanThreadLocalMallocStorage *ms) {
@@ -139,17 +138,17 @@ static void *MsanAllocate(StackTrace *stack, uptr size
   if (size > kMaxAllowedMallocSize) {
     Report("WARNING: MemorySanitizer failed to allocate %p bytes\n",
            (void *)size);
-    return allocator.ReturnNullOrDieOnBadRequest();
+    return Allocator::FailureHandler::OnBadRequest();
   }
   MsanThread *t = GetCurrentThread();
   void *allocated;
   if (t) {
     AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage());
-    allocated = allocator.Allocate(cache, size, alignment, false);
+    allocated = allocator.Allocate(cache, size, alignment);
   } else {
     SpinMutexLock l(&fallback_mutex);
     AllocatorCache *cache = &fallback_allocator_cache;
-    allocated = allocator.Allocate(cache, size, alignment, false);
+    allocated = allocator.Allocate(cache, size, alignment);
   }
   Metadata *meta =
       reinterpret_cast<Metadata *>(allocator.GetMetaData(allocated));
@@ -197,7 +196,7 @@ void MsanDeallocate(StackTrace *stack, void *p) {
 
 void *MsanCalloc(StackTrace *stack, uptr nmemb, uptr size) {
   if (CallocShouldReturnNullDueToOverflow(size, nmemb))
-    return allocator.ReturnNullOrDieOnBadRequest();
+    return Allocator::FailureHandler::OnBadRequest();
   return MsanReallocate(stack, nullptr, nmemb * size, sizeof(u64), true);
 }
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc	Tue Jun 27 06:40:39 2017	(r320397)
@@ -94,8 +94,7 @@ InternalAllocator *internal_allocator() {
     SpinMutexLock l(&internal_alloc_init_mu);
     if (atomic_load(&internal_allocator_initialized, memory_order_relaxed) ==
         0) {
-      internal_allocator_instance->Init(
-          /* may_return_null */ false, kReleaseToOSIntervalNever);
+      internal_allocator_instance->Init(kReleaseToOSIntervalNever);
       atomic_store(&internal_allocator_initialized, 1, memory_order_release);
     }
   }
@@ -108,9 +107,9 @@ static void *RawInternalAlloc(uptr size, InternalAlloc
   if (cache == 0) {
     SpinMutexLock l(&internal_allocator_cache_mu);
     return internal_allocator()->Allocate(&internal_allocator_cache, size,
-                                          alignment, false);
+                                          alignment);
   }
-  return internal_allocator()->Allocate(cache, size, alignment, false);
+  return internal_allocator()->Allocate(cache, size, alignment);
 }
 
 static void *RawInternalRealloc(void *ptr, uptr size,
@@ -162,7 +161,7 @@ void *InternalRealloc(void *addr, uptr size, InternalA
 
 void *InternalCalloc(uptr count, uptr size, InternalAllocatorCache *cache) {
   if (CallocShouldReturnNullDueToOverflow(count, size))
-    return internal_allocator()->ReturnNullOrDieOnBadRequest();
+    return InternalAllocator::FailureHandler::OnBadRequest();
   void *p = InternalAlloc(count * size, cache);
   if (p) internal_memset(p, 0, count * size);
   return p;
@@ -209,17 +208,51 @@ bool CallocShouldReturnNullDueToOverflow(uptr size, up
   return (max / size) < n;
 }
 
-static atomic_uint8_t reporting_out_of_memory = {0};
+static atomic_uint8_t allocator_out_of_memory = {0};
+static atomic_uint8_t allocator_may_return_null = {0};
 
-bool IsReportingOOM() { return atomic_load_relaxed(&reporting_out_of_memory); }
+bool IsAllocatorOutOfMemory() {
+  return atomic_load_relaxed(&allocator_out_of_memory);
+}
 
-void NORETURN ReportAllocatorCannotReturnNull(bool out_of_memory) {
-  if (out_of_memory) atomic_store_relaxed(&reporting_out_of_memory, 1);
+// Prints error message and kills the program.
+void NORETURN ReportAllocatorCannotReturnNull() {
   Report("%s's allocator is terminating the process instead of returning 0\n",
          SanitizerToolName);
   Report("If you don't like this behavior set allocator_may_return_null=1\n");
   CHECK(0);
   Die();
+}
+
+bool AllocatorMayReturnNull() {
+  return atomic_load(&allocator_may_return_null, memory_order_relaxed);
+}
+
+void SetAllocatorMayReturnNull(bool may_return_null) {
+  atomic_store(&allocator_may_return_null, may_return_null,
+               memory_order_relaxed);
+}
+
+void *ReturnNullOrDieOnFailure::OnBadRequest() {
+  if (AllocatorMayReturnNull())
+    return nullptr;
+  ReportAllocatorCannotReturnNull();
+}
+
+void *ReturnNullOrDieOnFailure::OnOOM() {
+  atomic_store_relaxed(&allocator_out_of_memory, 1);
+  if (AllocatorMayReturnNull())
+    return nullptr;
+  ReportAllocatorCannotReturnNull();
+}
+
+void *DieOnFailure::OnBadRequest() {
+  ReportAllocatorCannotReturnNull();
+}
+
+void *DieOnFailure::OnOOM() {
+  atomic_store_relaxed(&allocator_out_of_memory, 1);
+  ReportAllocatorCannotReturnNull();
 }
 
 } // namespace __sanitizer

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -24,12 +24,28 @@
 
 namespace __sanitizer {
 
-// Returns true if ReportAllocatorCannotReturnNull(true) was called.
-// Can be use to avoid memory hungry operations.
-bool IsReportingOOM();
+// Since flags are immutable and allocator behavior can be changed at runtime
+// (unit tests or ASan on Android are some examples), allocator_may_return_null
+// flag value is cached here and can be altered later.
+bool AllocatorMayReturnNull();
+void SetAllocatorMayReturnNull(bool may_return_null);
 
-// Prints error message and kills the program.
-void NORETURN ReportAllocatorCannotReturnNull(bool out_of_memory);
+// Allocator failure handling policies:
+// Implements AllocatorMayReturnNull policy, returns null when the flag is set,
+// dies otherwise.
+struct ReturnNullOrDieOnFailure {
+  static void *OnBadRequest();
+  static void *OnOOM();
+};
+// Always dies on the failure.
+struct DieOnFailure {
+  static void *OnBadRequest();
+  static void *OnOOM();
+};
+
+// Returns true if allocator detected OOM condition. Can be used to avoid memory
+// hungry operations. Set when AllocatorReturnNullOrDieOnOOM() is called.
+bool IsAllocatorOutOfMemory();
 
 // Allocators call these callbacks on mmap/munmap.
 struct NoOpMapUnmapCallback {

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -24,31 +24,26 @@ template <class PrimaryAllocator, class AllocatorCache
           class SecondaryAllocator>  // NOLINT
 class CombinedAllocator {
  public:
-  void InitCommon(bool may_return_null, s32 release_to_os_interval_ms) {
-    primary_.Init(release_to_os_interval_ms);
-    atomic_store(&may_return_null_, may_return_null, memory_order_relaxed);
-  }
+  typedef typename SecondaryAllocator::FailureHandler FailureHandler;
 
-  void InitLinkerInitialized(
-      bool may_return_null, s32 release_to_os_interval_ms) {
-    secondary_.InitLinkerInitialized(may_return_null);
+  void InitLinkerInitialized(s32 release_to_os_interval_ms) {
+    primary_.Init(release_to_os_interval_ms);
+    secondary_.InitLinkerInitialized();
     stats_.InitLinkerInitialized();
-    InitCommon(may_return_null, release_to_os_interval_ms);
   }
 
-  void Init(bool may_return_null, s32 release_to_os_interval_ms) {
-    secondary_.Init(may_return_null);
+  void Init(s32 release_to_os_interval_ms) {
+    primary_.Init(release_to_os_interval_ms);
+    secondary_.Init();
     stats_.Init();
-    InitCommon(may_return_null, release_to_os_interval_ms);
   }
 
-  void *Allocate(AllocatorCache *cache, uptr size, uptr alignment,
-                 bool cleared = false) {
+  void *Allocate(AllocatorCache *cache, uptr size, uptr alignment) {
     // Returning 0 on malloc(0) may break a lot of code.
     if (size == 0)
       size = 1;
     if (size + alignment < size)
-      return ReturnNullOrDieOnBadRequest();
+      return FailureHandler::OnBadRequest();
     uptr original_size = size;
     // If alignment requirements are to be fulfilled by the frontend allocator
     // rather than by the primary or secondary, passing an alignment lower than
@@ -56,49 +51,24 @@ class CombinedAllocator {
     // alignment check.
     if (alignment > 8)
       size = RoundUpTo(size, alignment);
-    void *res;
-    bool from_primary = primary_.CanAllocate(size, alignment);
     // The primary allocator should return a 2^x aligned allocation when
     // requested 2^x bytes, hence using the rounded up 'size' when being
     // serviced by the primary (this is no longer true when the primary is
     // using a non-fixed base address). The secondary takes care of the
     // alignment without such requirement, and allocating 'size' would use
     // extraneous memory, so we employ 'original_size'.
-    if (from_primary)
+    void *res;
+    if (primary_.CanAllocate(size, alignment))
       res = cache->Allocate(&primary_, primary_.ClassID(size));
     else
       res = secondary_.Allocate(&stats_, original_size, alignment);
+    if (!res)
+      return FailureHandler::OnOOM();
     if (alignment > 8)
       CHECK_EQ(reinterpret_cast<uptr>(res) & (alignment - 1), 0);
-    // When serviced by the secondary, the chunk comes from a mmap allocation
-    // and will be zero'd out anyway. We only need to clear our the chunk if
-    // it was serviced by the primary, hence using the rounded up 'size'.
-    if (cleared && res && from_primary)
-      internal_bzero_aligned16(res, RoundUpTo(size, 16));
     return res;
   }
 
-  bool MayReturnNull() const {
-    return atomic_load(&may_return_null_, memory_order_acquire);
-  }
-
-  void *ReturnNullOrDieOnBadRequest() {
-    if (MayReturnNull())
-      return nullptr;
-    ReportAllocatorCannotReturnNull(false);
-  }
-
-  void *ReturnNullOrDieOnOOM() {
-    if (MayReturnNull())
-      return nullptr;
-    ReportAllocatorCannotReturnNull(true);
-  }
-
-  void SetMayReturnNull(bool may_return_null) {
-    secondary_.SetMayReturnNull(may_return_null);
-    atomic_store(&may_return_null_, may_return_null, memory_order_release);
-  }
-
   s32 ReleaseToOSIntervalMs() const {
     return primary_.ReleaseToOSIntervalMs();
   }
@@ -219,6 +189,5 @@ class CombinedAllocator {
   PrimaryAllocator primary_;
   SecondaryAllocator secondary_;
   AllocatorGlobalStats stats_;
-  atomic_uint8_t may_return_null_;
 };
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -47,7 +47,8 @@ typedef SizeClassAllocatorLocalCache<PrimaryInternalAl
     InternalAllocatorCache;
 
 typedef CombinedAllocator<PrimaryInternalAllocator, InternalAllocatorCache,
-                          LargeMmapAllocator<> > InternalAllocator;
+                          LargeMmapAllocator<NoOpMapUnmapCallback, DieOnFailure>
+                         > InternalAllocator;
 
 void *InternalAlloc(uptr size, InternalAllocatorCache *cache = nullptr,
                     uptr alignment = 0);

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -144,8 +144,10 @@ struct SizeClassAllocator32LocalCache {
     CHECK_NE(class_id, 0UL);
     CHECK_LT(class_id, kNumClasses);
     PerClass *c = &per_class_[class_id];
-    if (UNLIKELY(c->count == 0))
-      Refill(allocator, class_id);
+    if (UNLIKELY(c->count == 0)) {
+      if (UNLIKELY(!Refill(allocator, class_id)))
+        return nullptr;
+    }
     stats_.Add(AllocatorStatAllocated, c->class_size);
     void *res = c->batch[--c->count];
     PREFETCH(c->batch[c->count - 1]);
@@ -227,14 +229,17 @@ struct SizeClassAllocator32LocalCache {
       Deallocate(allocator, batch_class_id, b);
   }
 
-  NOINLINE void Refill(SizeClassAllocator *allocator, uptr class_id) {
+  NOINLINE bool Refill(SizeClassAllocator *allocator, uptr class_id) {
     InitCache();
     PerClass *c = &per_class_[class_id];
     TransferBatch *b = allocator->AllocateBatch(&stats_, this, class_id);
+    if (UNLIKELY(!b))
+      return false;
     CHECK_GT(b->Count(), 0);
     b->CopyToArray(c->batch);
     c->count = b->Count();
     DestroyBatch(class_id, allocator, b);
+    return true;
   }
 
   NOINLINE void Drain(SizeClassAllocator *allocator, uptr class_id) {
@@ -244,6 +249,10 @@ struct SizeClassAllocator32LocalCache {
     uptr first_idx_to_drain = c->count - cnt;
     TransferBatch *b = CreateBatch(
         class_id, allocator, (TransferBatch *)c->batch[first_idx_to_drain]);
+    // Failure to allocate a batch while releasing memory is non recoverable.
+    // TODO(alekseys): Figure out how to do it without allocating a new batch.
+    if (UNLIKELY(!b))
+      DieOnFailure::OnOOM();
     b->SetFromArray(allocator->GetRegionBeginBySizeClass(class_id),
                     &c->batch[first_idx_to_drain], cnt);
     c->count -= cnt;

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -24,7 +24,8 @@ template<class SizeClassAllocator> struct SizeClassAll
 // be returned by MmapOrDie().
 //
 // Region:
-//   a result of a single call to MmapAlignedOrDie(kRegionSize, kRegionSize).
+//   a result of a single call to MmapAlignedOrDieOnFatalError(kRegionSize,
+//                                                             kRegionSize).
 // Since the regions are aligned by kRegionSize, there are exactly
 // kNumPossibleRegions possible regions in the address space and so we keep
 // a ByteMap possible_regions to store the size classes of each Region.
@@ -149,8 +150,9 @@ class SizeClassAllocator32 {
     CHECK_LT(class_id, kNumClasses);
     SizeClassInfo *sci = GetSizeClassInfo(class_id);
     SpinMutexLock l(&sci->mutex);
-    if (sci->free_list.empty())
-      PopulateFreeList(stat, c, sci, class_id);
+    if (sci->free_list.empty() &&
+        UNLIKELY(!PopulateFreeList(stat, c, sci, class_id)))
+      return nullptr;
     CHECK(!sci->free_list.empty());
     TransferBatch *b = sci->free_list.front();
     sci->free_list.pop_front();
@@ -277,8 +279,10 @@ class SizeClassAllocator32 {
 
   uptr AllocateRegion(AllocatorStats *stat, uptr class_id) {
     CHECK_LT(class_id, kNumClasses);
-    uptr res = reinterpret_cast<uptr>(MmapAlignedOrDie(kRegionSize, kRegionSize,
-                                      "SizeClassAllocator32"));
+    uptr res = reinterpret_cast<uptr>(MmapAlignedOrDieOnFatalError(
+        kRegionSize, kRegionSize, "SizeClassAllocator32"));
+    if (UNLIKELY(!res))
+      return 0;
     MapUnmapCallback().OnMap(res, kRegionSize);
     stat->Add(AllocatorStatMapped, kRegionSize);
     CHECK_EQ(0U, (res & (kRegionSize - 1)));
@@ -291,16 +295,20 @@ class SizeClassAllocator32 {
     return &size_class_info_array[class_id];
   }
 
-  void PopulateFreeList(AllocatorStats *stat, AllocatorCache *c,
+  bool PopulateFreeList(AllocatorStats *stat, AllocatorCache *c,
                         SizeClassInfo *sci, uptr class_id) {
     uptr size = ClassIdToSize(class_id);
     uptr reg = AllocateRegion(stat, class_id);
+    if (UNLIKELY(!reg))
+      return false;
     uptr n_chunks = kRegionSize / (size + kMetadataSize);
     uptr max_count = TransferBatch::MaxCached(class_id);
     TransferBatch *b = nullptr;
     for (uptr i = reg; i < reg + n_chunks * size; i += size) {
       if (!b) {
         b = c->CreateBatch(class_id, this, (TransferBatch*)i);
+        if (!b)
+          return false;
         b->Clear();
       }
       b->Add((void*)i);
@@ -314,6 +322,7 @@ class SizeClassAllocator32 {
       CHECK_GT(b->Count(), 0);
       sci->free_list.push_back(b);
     }
+    return true;
   }
 
   ByteMap possible_regions;

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -17,17 +17,19 @@
 // This class can (de)allocate only large chunks of memory using mmap/unmap.
 // The main purpose of this allocator is to cover large and rare allocation
 // sizes not covered by more efficient allocators (e.g. SizeClassAllocator64).
-template <class MapUnmapCallback = NoOpMapUnmapCallback>
+template <class MapUnmapCallback = NoOpMapUnmapCallback,
+          class FailureHandlerT = ReturnNullOrDieOnFailure>
 class LargeMmapAllocator {
  public:
-  void InitLinkerInitialized(bool may_return_null) {
+  typedef FailureHandlerT FailureHandler;
+
+  void InitLinkerInitialized() {
     page_size_ = GetPageSizeCached();
-    atomic_store(&may_return_null_, may_return_null, memory_order_relaxed);
   }
 
-  void Init(bool may_return_null) {
+  void Init() {
     internal_memset(this, 0, sizeof(*this));
-    InitLinkerInitialized(may_return_null);
+    InitLinkerInitialized();
   }
 
   void *Allocate(AllocatorStats *stat, uptr size, uptr alignment) {
@@ -37,11 +39,11 @@ class LargeMmapAllocator {
       map_size += alignment;
     // Overflow.
     if (map_size < size)
-      return ReturnNullOrDieOnBadRequest();
+      return FailureHandler::OnBadRequest();
     uptr map_beg = reinterpret_cast<uptr>(
         MmapOrDieOnFatalError(map_size, "LargeMmapAllocator"));
     if (!map_beg)
-      return ReturnNullOrDieOnOOM();
+      return FailureHandler::OnOOM();
     CHECK(IsAligned(map_beg, page_size_));
     MapUnmapCallback().OnMap(map_beg, map_size);
     uptr map_end = map_beg + map_size;
@@ -75,24 +77,6 @@ class LargeMmapAllocator {
     return reinterpret_cast<void*>(res);
   }
 
-  bool MayReturnNull() const {
-    return atomic_load(&may_return_null_, memory_order_acquire);
-  }
-
-  void *ReturnNullOrDieOnBadRequest() {
-    if (MayReturnNull()) return nullptr;
-    ReportAllocatorCannotReturnNull(false);
-  }
-
-  void *ReturnNullOrDieOnOOM() {
-    if (MayReturnNull()) return nullptr;
-    ReportAllocatorCannotReturnNull(true);
-  }
-
-  void SetMayReturnNull(bool may_return_null) {
-    atomic_store(&may_return_null_, may_return_null, memory_order_release);
-  }
-
   void Deallocate(AllocatorStats *stat, void *p) {
     Header *h = GetHeader(p);
     {
@@ -278,7 +262,6 @@ class LargeMmapAllocator {
   struct Stats {
     uptr n_allocs, n_frees, currently_allocated, max_allocated, by_size_log[64];
   } stats;
-  atomic_uint8_t may_return_null_;
   SpinMutex mutex_;
 };
 

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -71,16 +71,25 @@ INLINE typename T::Type atomic_exchange(volatile T *a,
   return v;
 }
 
-template<typename T>
-INLINE bool atomic_compare_exchange_strong(volatile T *a,
-                                           typename T::Type *cmp,
+template <typename T>
+INLINE bool atomic_compare_exchange_strong(volatile T *a, typename T::Type *cmp,
                                            typename T::Type xchg,
                                            memory_order mo) {
   typedef typename T::Type Type;
   Type cmpv = *cmp;
-  Type prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg);
-  if (prev == cmpv)
-    return true;
+  Type prev;
+#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32
+  if (sizeof(*a) == 8) {
+    Type volatile *val_ptr = const_cast<Type volatile *>(&a->val_dont_use);
+    prev = __mips_sync_val_compare_and_swap<u64>(
+        reinterpret_cast<u64 volatile *>(val_ptr), (u64)cmpv, (u64)xchg);
+  } else {
+    prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg);
+  }
+#else
+  prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg);
+#endif
+  if (prev == cmpv) return true;
   *cmp = prev;
   return false;
 }

Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h	Tue Jun 27 06:02:50 2017	(r320396)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h	Tue Jun 27 06:40:39 2017	(r320397)
@@ -17,6 +17,56 @@
 
 namespace __sanitizer {
 
+// MIPS32 does not support atomic > 4 bytes. To address this lack of
+// functionality, the sanitizer library provides helper methods which use an
+// internal spin lock mechanism to emulate atomic oprations when the size is
+// 8 bytes.
+#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32
+static void __spin_lock(volatile int *lock) {
+  while (__sync_lock_test_and_set(lock, 1))
+    while (*lock) {
+    }
+}
+
+static void __spin_unlock(volatile int *lock) { __sync_lock_release(lock); }
+
+
+// Make sure the lock is on its own cache line to prevent false sharing.
+// Put it inside a struct that is aligned and padded to the typical MIPS
+// cacheline which is 32 bytes.
+static struct {
+  int lock;
+  char pad[32 - sizeof(int)];
+} __attribute__((aligned(32))) lock = {0};
+
+template <class T>
+T __mips_sync_fetch_and_add(volatile T *ptr, T val) {
+  T ret;
+
+  __spin_lock(&lock.lock);
+
+  ret = *ptr;
+  *ptr = ret + val;
+
+  __spin_unlock(&lock.lock);
+
+  return ret;
+}
+
+template <class T>
+T __mips_sync_val_compare_and_swap(volatile T *ptr, T oldval, T newval) {
+  T ret;
+  __spin_lock(&lock.lock);
+
+  ret = *ptr;
+  if (ret == oldval) *ptr = newval;
+
+  __spin_unlock(&lock.lock);
+
+  return ret;
+}
+#endif
+
 INLINE void proc_yield(int cnt) {
   __asm__ __volatile__("" ::: "memory");
 }
@@ -53,8 +103,15 @@ INLINE typename T::Type atomic_load(
     // 64-bit load on 32-bit platform.
     // Gross, but simple and reliable.
     // Assume that it is not in read-only memory.
+#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32
+    typename T::Type volatile *val_ptr =
+        const_cast<typename T::Type volatile *>(&a->val_dont_use);
+    v = __mips_sync_fetch_and_add<u64>(
+        reinterpret_cast<u64 volatile *>(val_ptr), 0);
+#else
     v = __sync_fetch_and_add(
         const_cast<typename T::Type volatile *>(&a->val_dont_use), 0);

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



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