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...
Dimitry Andric
dim at FreeBSD.org
Tue Jun 27 06:40:43 UTC 2017
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 ***
More information about the svn-src-projects
mailing list