Date: Tue, 27 Jun 2017 06:40:40 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r320397 - in projects/clang500-import: contrib/compiler-rt/include/xray contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/interception contrib/compiler-rt/lib/lsan contrib/compiler-r... Message-ID: <201706270640.v5R6eeJQ047288@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Tue Jun 27 06:40:39 2017 New Revision: 320397 URL: https://svnweb.freebsd.org/changeset/base/320397 Log: Merge llvm, clang, lld, lldb, compiler-rt and libc++ r306325, and update build glue. Added: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc - copied unchanged from r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MacroFusion.h - copied unchanged from r320385, vendor/llvm/dist/include/llvm/CodeGen/MacroFusion.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h - copied unchanged from r320385, vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeName.h - copied unchanged from r320385, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeName.h projects/clang500-import/contrib/llvm/include/llvm/Support/Solaris/ - copied from r320385, vendor/llvm/dist/include/llvm/Support/Solaris/ projects/clang500-import/contrib/llvm/lib/CodeGen/MacroFusion.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/CodeGen/MacroFusion.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGAddressAnalysis.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeName.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeName.cpp projects/clang500-import/contrib/llvm/lib/MC/MCWinCOFFStreamer.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/MC/MCWinCOFFStreamer.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64CondBrTuning.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/Target/AArch64/AArch64CondBrTuning.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMMacroFusion.cpp - copied unchanged from r320385, vendor/llvm/dist/lib/Target/ARM/ARMMacroFusion.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMMacroFusion.h - copied unchanged from r320385, vendor/llvm/dist/lib/Target/ARM/ARMMacroFusion.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/PrecompiledPreamble.h - copied unchanged from r320385, vendor/clang/dist/include/clang/Frontend/PrecompiledPreamble.h projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Ananas.cpp - copied unchanged from r320385, vendor/clang/dist/lib/Driver/ToolChains/Ananas.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Ananas.h - copied unchanged from r320385, vendor/clang/dist/lib/Driver/ToolChains/Ananas.h projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UsingDeclarationsSorter.cpp - copied unchanged from r320385, vendor/clang/dist/lib/Format/UsingDeclarationsSorter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UsingDeclarationsSorter.h - copied unchanged from r320385, vendor/clang/dist/lib/Format/UsingDeclarationsSorter.h projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/PrecompiledPreamble.cpp - copied unchanged from r320385, vendor/clang/dist/lib/Frontend/PrecompiledPreamble.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/MipsArchTree.cpp - copied unchanged from r320385, vendor/lld/dist/ELF/Arch/MipsArchTree.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ASan/ - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/ASan/ projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/MainThreadChecker/ - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/MainThreadChecker/ projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/TSan/ - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/TSan/ projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/UBSan/ - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/UBSan/ projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/UndefinedBehaviorSanitizer/ - copied from r320385, vendor/lldb/dist/source/Plugins/InstrumentationRuntime/UndefinedBehaviorSanitizer/ projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/BytesOutputStyle.cpp - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/BytesOutputStyle.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/BytesOutputStyle.h - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/BytesOutputStyle.h projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/DumpOutputStyle.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/DumpOutputStyle.h - copied unchanged from r320385, vendor/llvm/dist/tools/llvm-pdbutil/DumpOutputStyle.h Deleted: projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h projects/clang500-import/contrib/llvm/include/llvm/Support/Solaris.h projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp projects/clang500-import/contrib/llvm/lib/MC/WinCOFFStreamer.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoadCombine.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Mips.cpp projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/posix/ProcessLauncherPosix.h projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ProcessLauncherPosix.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.h projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/CompactTypeDumpVisitor.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/CompactTypeDumpVisitor.h projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.h Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator.cpp projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator_combined.h projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_allocator_secondary.h projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_mman.cc projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.h projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_interface.inc projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc projects/clang500-import/contrib/libc++/include/__config projects/clang500-import/contrib/libc++/include/experimental/any projects/clang500-import/contrib/libc++/include/new projects/clang500-import/contrib/libc++/include/numeric projects/clang500-import/contrib/libc++/include/variant projects/clang500-import/contrib/libc++/src/experimental/filesystem/path.cpp projects/clang500-import/contrib/llvm/include/llvm-c/OrcBindings.h projects/clang500-import/contrib/llvm/include/llvm/ADT/APFloat.h projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h projects/clang500-import/contrib/llvm/include/llvm/ADT/StringExtras.h projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/LazyValueInfo.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/Loads.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/LoopInfoImpl.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/COFF.h projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Dwarf.h projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/MachO.h projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/Wasm.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/DIE.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Legalizer.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Utils.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LexicalScopes.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineMemOperand.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineModuleInfoImpls.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineScheduler.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/RegisterScavenging.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVRecord.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CodeView.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/EnumTables.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeSerializer.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeTableCollection.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DIContext.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MSFBuilder.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MSFCommon.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/MSF/MappedBlockStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/DIA/DIASession.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/IPDBSession.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/InfoStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/NativeSession.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBFile.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/Symbolize.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/GenericValue.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/JITEventListener.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/JITSymbol.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/CompileUtils.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RawByteChannel.h projects/clang500-import/contrib/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.h projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.td projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h projects/clang500-import/contrib/llvm/include/llvm/IR/ConstantRange.h projects/clang500-import/contrib/llvm/include/llvm/IR/DerivedUser.h projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h projects/clang500-import/contrib/llvm/include/llvm/IR/Instruction.h projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.h projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsAMDGPU.td projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsX86.td projects/clang500-import/contrib/llvm/include/llvm/IR/Metadata.h projects/clang500-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h projects/clang500-import/contrib/llvm/include/llvm/IR/Operator.h projects/clang500-import/contrib/llvm/include/llvm/IR/PatternMatch.h projects/clang500-import/contrib/llvm/include/llvm/IR/Statepoint.h projects/clang500-import/contrib/llvm/include/llvm/IR/Value.h projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h projects/clang500-import/contrib/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCAsmBackend.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCAssembler.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCFragment.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCSection.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCSymbolWasm.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCValue.h projects/clang500-import/contrib/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h projects/clang500-import/contrib/llvm/include/llvm/Object/IRSymtab.h projects/clang500-import/contrib/llvm/include/llvm/Object/MachO.h projects/clang500-import/contrib/llvm/include/llvm/Object/Wasm.h projects/clang500-import/contrib/llvm/include/llvm/Object/WindowsResource.h projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/WasmYAML.h projects/clang500-import/contrib/llvm/include/llvm/Option/OptParser.td projects/clang500-import/contrib/llvm/include/llvm/Option/OptTable.h projects/clang500-import/contrib/llvm/include/llvm/Option/Option.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProfReader.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProfWriter.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/SampleProf.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/SampleProfReader.h projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamReader.h projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamRef.h projects/clang500-import/contrib/llvm/include/llvm/Support/CachePruning.h projects/clang500-import/contrib/llvm/include/llvm/Support/DataExtractor.h projects/clang500-import/contrib/llvm/include/llvm/Support/Errno.h projects/clang500-import/contrib/llvm/include/llvm/Support/Error.h projects/clang500-import/contrib/llvm/include/llvm/Support/GCOV.h projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTree.h projects/clang500-import/contrib/llvm/include/llvm/Support/GenericDomTreeConstruction.h projects/clang500-import/contrib/llvm/include/llvm/Support/GraphWriter.h projects/clang500-import/contrib/llvm/include/llvm/Support/Host.h projects/clang500-import/contrib/llvm/include/llvm/Support/Path.h projects/clang500-import/contrib/llvm/include/llvm/Support/TargetRegistry.h projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLParser.h projects/clang500-import/contrib/llvm/include/llvm/Support/YAMLTraits.h projects/clang500-import/contrib/llvm/include/llvm/TableGen/Main.h projects/clang500-import/contrib/llvm/include/llvm/Target/GenericOpcodes.td projects/clang500-import/contrib/llvm/include/llvm/Target/TargetInstrInfo.h projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLowering.h projects/clang500-import/contrib/llvm/include/llvm/Target/TargetOpcodes.def projects/clang500-import/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h projects/clang500-import/contrib/llvm/include/llvm/Target/TargetSubtargetInfo.h projects/clang500-import/contrib/llvm/include/llvm/Testing/Support/Error.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/InstrProfiling.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Instrumentation.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/GVN.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/Reassociate.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/Local.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/LoopUtils.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/OrderedInstructions.h projects/clang500-import/contrib/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h projects/clang500-import/contrib/llvm/include/llvm/module.modulemap projects/clang500-import/contrib/llvm/lib/Analysis/AliasSetTracker.cpp projects/clang500-import/contrib/llvm/lib/Analysis/AssumptionCache.cpp projects/clang500-import/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp projects/clang500-import/contrib/llvm/lib/Analysis/CFLSteensAliasAnalysis.cpp projects/clang500-import/contrib/llvm/lib/Analysis/DemandedBits.cpp projects/clang500-import/contrib/llvm/lib/Analysis/InlineCost.cpp projects/clang500-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/clang500-import/contrib/llvm/lib/Analysis/LazyValueInfo.cpp projects/clang500-import/contrib/llvm/lib/Analysis/Loads.cpp projects/clang500-import/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp projects/clang500-import/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/clang500-import/contrib/llvm/lib/BinaryFormat/Magic.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIE.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Utils.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/IfConversion.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ImplicitNullChecks.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.h projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineModuleInfoImpls.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineScheduler.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterUsageInfo.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/TargetRegisterInfo.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/TargetSubtargetInfo.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeVisitor.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSubsectionRecord.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/EnumTables.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolRecordMapping.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeTableCollection.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MSFBuilder.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MSFCommon.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/MSF/MappedBlockStream.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStream.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStreamBuilder.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/InfoStream.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NamedStreamMap.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeCompilandSymbol.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeEnumModules.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/NativeSession.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFile.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/TpiStream.cpp projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindings.cpp projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp projects/clang500-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h projects/clang500-import/contrib/llvm/lib/IR/AsmWriter.cpp projects/clang500-import/contrib/llvm/lib/IR/AttributeImpl.h projects/clang500-import/contrib/llvm/lib/IR/Attributes.cpp projects/clang500-import/contrib/llvm/lib/IR/AutoUpgrade.cpp projects/clang500-import/contrib/llvm/lib/IR/BasicBlock.cpp projects/clang500-import/contrib/llvm/lib/IR/ConstantRange.cpp projects/clang500-import/contrib/llvm/lib/IR/Instructions.cpp projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.cpp projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.h projects/clang500-import/contrib/llvm/lib/IR/Metadata.cpp projects/clang500-import/contrib/llvm/lib/IR/Statepoint.cpp projects/clang500-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp projects/clang500-import/contrib/llvm/lib/MC/ELFObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/MC/MCAssembler.cpp projects/clang500-import/contrib/llvm/lib/MC/MCFragment.cpp projects/clang500-import/contrib/llvm/lib/MC/MCSection.cpp projects/clang500-import/contrib/llvm/lib/MC/MCWasmStreamer.cpp projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/MC/WinCOFFObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Object/COFFObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Object/IRSymtab.cpp projects/clang500-import/contrib/llvm/lib/Object/MachOObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Object/WasmObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Object/WindowsResource.cpp projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLSymbols.cpp projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLTypes.cpp projects/clang500-import/contrib/llvm/lib/ObjectYAML/WasmYAML.cpp projects/clang500-import/contrib/llvm/lib/Option/OptTable.cpp projects/clang500-import/contrib/llvm/lib/Option/Option.cpp projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProf.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProfReader.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProfWriter.cpp projects/clang500-import/contrib/llvm/lib/Support/APFloat.cpp projects/clang500-import/contrib/llvm/lib/Support/APInt.cpp projects/clang500-import/contrib/llvm/lib/Support/BinaryStreamReader.cpp projects/clang500-import/contrib/llvm/lib/Support/CachePruning.cpp projects/clang500-import/contrib/llvm/lib/Support/CommandLine.cpp projects/clang500-import/contrib/llvm/lib/Support/DataExtractor.cpp projects/clang500-import/contrib/llvm/lib/Support/GraphWriter.cpp projects/clang500-import/contrib/llvm/lib/Support/Triple.cpp projects/clang500-import/contrib/llvm/lib/Support/Unix/Host.inc projects/clang500-import/contrib/llvm/lib/Support/Unix/Memory.inc projects/clang500-import/contrib/llvm/lib/Support/Unix/Program.inc projects/clang500-import/contrib/llvm/lib/Support/Windows/Host.inc projects/clang500-import/contrib/llvm/lib/Support/YAMLParser.cpp projects/clang500-import/contrib/llvm/lib/Support/YAMLTraits.cpp projects/clang500-import/contrib/llvm/lib/Support/raw_ostream.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64.h projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrAtomics.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.h projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.h projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedA57.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedFalkorDetails.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedKryoDetails.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/BUFInstructions.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/FLATInstructions.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCCodeEmitter.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Processors.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIDefines.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOP1Instructions.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOP2Instructions.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOPCInstructions.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/VOPInstructions.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARM.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstructionSelector.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSubtarget.h projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h projects/clang500-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp projects/clang500-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonExpandCondsets.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonGenMux.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonNewValueJump.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPeephole.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonSubtarget.h projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCDuplexInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/Lanai/MCTargetDesc/LanaiAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPC.h projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.h projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.h projects/clang500-import/contrib/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcTargetObjectFile.h projects/clang500-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZMachineScheduler.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZMachineScheduler.h projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZOperators.td projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetMachine.h projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyAsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstructionSelector.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86InterleavedAccess.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86IntrinsicsInfo.h projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86MacroFusion.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86MacroFusion.h projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetObjectFile.h projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.h projects/clang500-import/contrib/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp projects/clang500-import/contrib/llvm/lib/Transforms/IPO/SampleProfile.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVN.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SROA.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Scalar.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopSimplify.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp projects/clang500-import/contrib/llvm/tools/bugpoint/bugpoint.cpp projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/CXCompilationDatabase.h projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/Index.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Analysis/CloneDetection.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86_64.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSerializationKinds.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Module.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Edit/EditedSource.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Format/Format.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/PreprocessorOptions.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTDumper.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExternalASTMerger.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Analysis/CloneDetection.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Module.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypeCache.h projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/SwiftCallingConv.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/DriverOptions.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/SanitizerArgs.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Gnu.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/WebAssembly.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Edit/EditedSource.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/Format.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/FormatToken.h projects/clang500-import/contrib/llvm/tools/clang/lib/Format/TokenAnnotator.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineFormatter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/FrontendActions.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPExpressions.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaCUDA.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/BuiltinFunctionChecker.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CloneChecker.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/LocalizationChecker.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp projects/clang500-import/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp projects/clang500-import/contrib/llvm/tools/clang/tools/driver/driver.cpp projects/clang500-import/contrib/llvm/tools/clang/utils/TableGen/NeonEmitter.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Chunks.h projects/clang500-import/contrib/llvm/tools/lld/COFF/Config.h projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.h projects/clang500-import/contrib/llvm/tools/lld/COFF/DriverUtils.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Options.td projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Strings.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/SymbolTable.h projects/clang500-import/contrib/llvm/tools/lld/COFF/Symbols.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/Symbols.h projects/clang500-import/contrib/llvm/tools/lld/COFF/Writer.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AArch64.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AMDGPU.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/ARM.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/AVR.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/Mips.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/PPC.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/X86.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/X86_64.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/CMakeLists.txt projects/clang500-import/contrib/llvm/tools/lld/ELF/Config.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.h projects/clang500-import/contrib/llvm/tools/lld/ELF/DriverUtils.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.h projects/clang500-import/contrib/llvm/tools/lld/ELF/InputSection.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/MarkLive.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Options.td projects/clang500-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Relocations.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Symbols.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Target.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp projects/clang500-import/contrib/llvm/tools/lld/README.md projects/clang500-import/contrib/llvm/tools/lld/lib/Driver/DarwinLdDriver.cpp projects/clang500-import/contrib/llvm/tools/lld/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Host.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/NativeProcessProtocol.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-enumerations.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-private-enumerations.h projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBThread.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/API/SystemInitializerFull.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectFrame.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Core/IOHandler.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Mangled.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Timer.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Host.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/NativeProcessProtocol.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Host/posix/ProcessLauncherPosixFork.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/Cocoa.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/NSArray.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Language/ObjC/ObjCLanguage.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/NetBSD/NativeProcessNetBSD.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp projects/clang500-import/contrib/llvm/tools/lli/OrcLazyJIT.cpp projects/clang500-import/contrib/llvm/tools/lli/OrcLazyJIT.h projects/clang500-import/contrib/llvm/tools/llvm-nm/llvm-nm.cpp projects/clang500-import/contrib/llvm/tools/llvm-objdump/MachODump.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/Analyze.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/Diff.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LinePrinter.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LinePrinter.h projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/llvm-pdbutil.h projects/clang500-import/contrib/llvm/tools/llvm-profdata/llvm-profdata.cpp projects/clang500-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp projects/clang500-import/contrib/llvm/tools/llvm-readobj/ObjDumper.h projects/clang500-import/contrib/llvm/tools/llvm-readobj/llvm-readobj.cpp projects/clang500-import/contrib/llvm/tools/llvm-stress/llvm-stress.cpp projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.h projects/clang500-import/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp projects/clang500-import/contrib/llvm/utils/TableGen/GlobalISelEmitter.cpp projects/clang500-import/contrib/llvm/utils/TableGen/OptParserEmitter.cpp projects/clang500-import/lib/clang/include/clang/Basic/Version.inc projects/clang500-import/lib/clang/include/lld/Config/Version.inc projects/clang500-import/lib/clang/include/llvm/Config/abi-breaking.h projects/clang500-import/lib/clang/include/llvm/Config/config.h projects/clang500-import/lib/clang/include/llvm/Support/DataTypes.h projects/clang500-import/lib/clang/include/llvm/Support/VCSRevision.h projects/clang500-import/lib/clang/libclang/Makefile projects/clang500-import/lib/clang/liblldb/Makefile projects/clang500-import/lib/clang/libllvm/Makefile projects/clang500-import/usr.bin/clang/lld/Makefile projects/clang500-import/usr.bin/clang/llvm-pdbutil/Makefile Directory Properties: projects/clang500-import/contrib/compiler-rt/ (props changed) projects/clang500-import/contrib/libc++/ (props changed) projects/clang500-import/contrib/llvm/ (props changed) projects/clang500-import/contrib/llvm/tools/clang/ (props changed) projects/clang500-import/contrib/llvm/tools/lld/ (props changed) projects/clang500-import/contrib/llvm/tools/lldb/ (props changed) Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h Tue Jun 27 06:40:39 2017 (r320397) @@ -60,7 +60,8 @@ extern int __xray_remove_handler(); /// start logging their subsequent affected function calls (if patched). /// /// Returns 1 on success, 0 on error. -extern int __xray_set_handler_arg1(void (*)(int32_t, XRayEntryType, uint64_t)); +extern int __xray_set_handler_arg1(void (*entry)(int32_t, XRayEntryType, + uint64_t)); /// Disables the XRay handler used to log first arguments of function calls. /// Returns 1 on success, 0 on error. Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -160,7 +160,7 @@ struct QuarantineCallback { } void *Allocate(uptr size) { - return get_allocator().Allocate(cache_, size, 1, false); + return get_allocator().Allocate(cache_, size, 1); } void Deallocate(void *p) { @@ -266,7 +266,8 @@ struct Allocator { } void Initialize(const AllocatorOptions &options) { - allocator.Init(options.may_return_null, options.release_to_os_interval_ms); + SetAllocatorMayReturnNull(options.may_return_null); + allocator.Init(options.release_to_os_interval_ms); SharedInitCode(options); } @@ -302,7 +303,7 @@ struct Allocator { } void ReInitialize(const AllocatorOptions &options) { - allocator.SetMayReturnNull(options.may_return_null); + SetAllocatorMayReturnNull(options.may_return_null); allocator.SetReleaseToOSIntervalMs(options.release_to_os_interval_ms); SharedInitCode(options); @@ -323,7 +324,7 @@ struct Allocator { options->thread_local_quarantine_size_kb = quarantine.GetCacheSize() >> 10; options->min_redzone = atomic_load(&min_redzone, memory_order_acquire); options->max_redzone = atomic_load(&max_redzone, memory_order_acquire); - options->may_return_null = allocator.MayReturnNull(); + options->may_return_null = AllocatorMayReturnNull(); options->alloc_dealloc_mismatch = atomic_load(&alloc_dealloc_mismatch, memory_order_acquire); options->release_to_os_interval_ms = allocator.ReleaseToOSIntervalMs(); @@ -374,7 +375,7 @@ struct Allocator { if (UNLIKELY(!asan_inited)) AsanInitFromRtl(); if (RssLimitExceeded()) - return allocator.ReturnNullOrDieOnOOM(); + return AsanAllocator::FailureHandler::OnOOM(); Flags &fl = *flags(); CHECK(stack); const uptr min_alignment = SHADOW_GRANULARITY; @@ -407,24 +408,22 @@ struct Allocator { if (size > kMaxAllowedMallocSize || needed_size > kMaxAllowedMallocSize) { Report("WARNING: AddressSanitizer failed to allocate 0x%zx bytes\n", (void*)size); - return allocator.ReturnNullOrDieOnBadRequest(); + return AsanAllocator::FailureHandler::OnBadRequest(); } AsanThread *t = GetCurrentThread(); void *allocated; if (t) { AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage()); - allocated = - allocator.Allocate(cache, needed_size, 8, false); + allocated = allocator.Allocate(cache, needed_size, 8); } else { SpinMutexLock l(&fallback_mutex); AllocatorCache *cache = &fallback_allocator_cache; - allocated = - allocator.Allocate(cache, needed_size, 8, false); + allocated = allocator.Allocate(cache, needed_size, 8); } + if (!allocated) + return nullptr; - if (!allocated) return allocator.ReturnNullOrDieOnOOM(); - if (*(u8 *)MEM_TO_SHADOW((uptr)allocated) == 0 && CanPoisonMemory()) { // Heap poisoning is enabled, but the allocator provides an unpoisoned // chunk. This is possible if CanPoisonMemory() was false for some @@ -634,7 +633,7 @@ struct Allocator { void *Calloc(uptr nmemb, uptr size, BufferedStackTrace *stack) { if (CallocShouldReturnNullDueToOverflow(size, nmemb)) - return allocator.ReturnNullOrDieOnBadRequest(); + return AsanAllocator::FailureHandler::OnBadRequest(); void *ptr = Allocate(nmemb * size, 8, stack, FROM_MALLOC, false); // If the memory comes from the secondary allocator no need to clear it // as it comes directly from mmap. Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_report.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -204,6 +204,14 @@ class ScopedInErrorReport { error_report_callback(buffer_copy.data()); } + if (halt_on_error_ && common_flags()->abort_on_error) { + // On Android the message is truncated to 512 characters. + // FIXME: implement "compact" error format, possibly without, or with + // highly compressed stack traces? + // FIXME: or just use the summary line as abort message? + SetAbortMessage(buffer_copy.data()); + } + // In halt_on_error = false mode, reset the current error object (before // unlocking). if (!halt_on_error_) Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/asan/weak_symbols.txt Tue Jun 27 06:40:39 2017 (r320397) @@ -1,3 +1,12 @@ ___asan_default_options ___asan_default_suppressions ___asan_on_error +___asan_set_shadow_00 +___asan_set_shadow_f1 +___asan_set_shadow_f2 +___asan_set_shadow_f3 +___asan_set_shadow_f4 +___asan_set_shadow_f5 +___asan_set_shadow_f6 +___asan_set_shadow_f7 +___asan_set_shadow_f8 Modified: projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/interception/interception_win.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -477,7 +477,7 @@ static size_t GetInstructionSize(uptr address, size_t* switch (*(u8*)address) { case 0xA1: // A1 XX XX XX XX XX XX XX XX : // movabs eax, dword ptr ds:[XXXXXXXX] - return 8; + return 9; } switch (*(u16*)address) { @@ -495,6 +495,11 @@ static size_t GetInstructionSize(uptr address, size_t* case 0x5741: // push r15 case 0x9066: // Two-byte NOP return 2; + + case 0x058B: // 8B 05 XX XX XX XX : mov eax, dword ptr [XX XX XX XX] + if (rel_offset) + *rel_offset = 2; + return 6; } switch (0x00FFFFFF & *(u32*)address) { Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan.h Tue Jun 27 06:40:39 2017 (r320397) @@ -38,6 +38,8 @@ GET_STACK_TRACE(__sanitizer::common_flags()->malloc_context_size, \ common_flags()->fast_unwind_on_malloc) +#define GET_STACK_TRACE_THREAD GET_STACK_TRACE(kStackTraceMax, true) + namespace __lsan { void InitializeInterceptors(); Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_allocator.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -38,8 +38,8 @@ typedef CombinedAllocator<PrimaryAllocator, AllocatorC static Allocator allocator; void InitializeAllocator() { + SetAllocatorMayReturnNull(common_flags()->allocator_may_return_null); allocator.InitLinkerInitialized( - common_flags()->allocator_may_return_null, common_flags()->allocator_release_to_os_interval_ms); } @@ -76,7 +76,7 @@ void *Allocate(const StackTrace &stack, uptr size, upt Report("WARNING: LeakSanitizer failed to allocate %zu bytes\n", size); return nullptr; } - void *p = allocator.Allocate(GetAllocatorCache(), size, alignment, false); + void *p = allocator.Allocate(GetAllocatorCache(), size, alignment); // Do not rely on the allocator to clear the memory (it's slow). if (cleared && allocator.FromPrimary(p)) memset(p, 0, size); Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -79,8 +79,7 @@ void EnableInThisThread() { u32 GetCurrentThread() { thread_local_data_t *data = get_tls_val(false); - CHECK(data); - return data->current_thread_id; + return data ? data->current_thread_id : kInvalidTid; } void SetCurrentThread(u32 tid) { get_tls_val(true)->current_thread_id = tid; } Copied: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc (from r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_mac.cc Tue Jun 27 06:40:39 2017 (r320397, copy of r320385, vendor/compiler-rt/dist/lib/lsan/lsan_mac.cc) @@ -0,0 +1,192 @@ +//===-- lsan_mac.cc -------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of LeakSanitizer, a memory leak checker. +// +// Mac-specific details. +//===----------------------------------------------------------------------===// + +#include "sanitizer_common/sanitizer_platform.h" +#if SANITIZER_MAC + +#include "interception/interception.h" +#include "lsan.h" +#include "lsan_allocator.h" +#include "lsan_thread.h" + +#include <pthread.h> + +namespace __lsan { +// Support for the following functions from libdispatch on Mac OS: +// dispatch_async_f() +// dispatch_async() +// dispatch_sync_f() +// dispatch_sync() +// dispatch_after_f() +// dispatch_after() +// dispatch_group_async_f() +// dispatch_group_async() +// TODO(glider): libdispatch API contains other functions that we don't support +// yet. +// +// dispatch_sync() and dispatch_sync_f() are synchronous, although chances are +// they can cause jobs to run on a thread different from the current one. +// TODO(glider): if so, we need a test for this (otherwise we should remove +// them). +// +// The following functions use dispatch_barrier_async_f() (which isn't a library +// function but is exported) and are thus supported: +// dispatch_source_set_cancel_handler_f() +// dispatch_source_set_cancel_handler() +// dispatch_source_set_event_handler_f() +// dispatch_source_set_event_handler() +// +// The reference manual for Grand Central Dispatch is available at +// http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html +// The implementation details are at +// http://libdispatch.macosforge.org/trac/browser/trunk/src/queue.c + +typedef void *dispatch_group_t; +typedef void *dispatch_queue_t; +typedef void *dispatch_source_t; +typedef u64 dispatch_time_t; +typedef void (*dispatch_function_t)(void *block); +typedef void *(*worker_t)(void *block); + +// A wrapper for the ObjC blocks used to support libdispatch. +typedef struct { + void *block; + dispatch_function_t func; + u32 parent_tid; +} lsan_block_context_t; + +ALWAYS_INLINE +void lsan_register_worker_thread(int parent_tid) { + if (GetCurrentThread() == kInvalidTid) { + u32 tid = ThreadCreate(parent_tid, 0, true); + ThreadStart(tid, GetTid()); + SetCurrentThread(tid); + } +} + +// For use by only those functions that allocated the context via +// alloc_lsan_context(). +extern "C" void lsan_dispatch_call_block_and_release(void *block) { + lsan_block_context_t *context = (lsan_block_context_t *)block; + VReport(2, + "lsan_dispatch_call_block_and_release(): " + "context: %p, pthread_self: %p\n", + block, pthread_self()); + lsan_register_worker_thread(context->parent_tid); + // Call the original dispatcher for the block. + context->func(context->block); + lsan_free(context); +} + +} // namespace __lsan + +using namespace __lsan; // NOLINT + +// Wrap |ctxt| and |func| into an lsan_block_context_t. +// The caller retains control of the allocated context. +extern "C" lsan_block_context_t *alloc_lsan_context(void *ctxt, + dispatch_function_t func) { + GET_STACK_TRACE_THREAD; + lsan_block_context_t *lsan_ctxt = + (lsan_block_context_t *)lsan_malloc(sizeof(lsan_block_context_t), stack); + lsan_ctxt->block = ctxt; + lsan_ctxt->func = func; + lsan_ctxt->parent_tid = GetCurrentThread(); + return lsan_ctxt; +} + +// Define interceptor for dispatch_*_f function with the three most common +// parameters: dispatch_queue_t, context, dispatch_function_t. +#define INTERCEPT_DISPATCH_X_F_3(dispatch_x_f) \ + INTERCEPTOR(void, dispatch_x_f, dispatch_queue_t dq, void *ctxt, \ + dispatch_function_t func) { \ + lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func); \ + return REAL(dispatch_x_f)(dq, (void *)lsan_ctxt, \ + lsan_dispatch_call_block_and_release); \ + } + +INTERCEPT_DISPATCH_X_F_3(dispatch_async_f) +INTERCEPT_DISPATCH_X_F_3(dispatch_sync_f) +INTERCEPT_DISPATCH_X_F_3(dispatch_barrier_async_f) + +INTERCEPTOR(void, dispatch_after_f, dispatch_time_t when, dispatch_queue_t dq, + void *ctxt, dispatch_function_t func) { + lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func); + return REAL(dispatch_after_f)(when, dq, (void *)lsan_ctxt, + lsan_dispatch_call_block_and_release); +} + +INTERCEPTOR(void, dispatch_group_async_f, dispatch_group_t group, + dispatch_queue_t dq, void *ctxt, dispatch_function_t func) { + lsan_block_context_t *lsan_ctxt = alloc_lsan_context(ctxt, func); + REAL(dispatch_group_async_f) + (group, dq, (void *)lsan_ctxt, lsan_dispatch_call_block_and_release); +} + +#if !defined(MISSING_BLOCKS_SUPPORT) +extern "C" { +void dispatch_async(dispatch_queue_t dq, void (^work)(void)); +void dispatch_group_async(dispatch_group_t dg, dispatch_queue_t dq, + void (^work)(void)); +void dispatch_after(dispatch_time_t when, dispatch_queue_t queue, + void (^work)(void)); +void dispatch_source_set_cancel_handler(dispatch_source_t ds, + void (^work)(void)); +void dispatch_source_set_event_handler(dispatch_source_t ds, + void (^work)(void)); +} + +#define GET_LSAN_BLOCK(work) \ + void (^lsan_block)(void); \ + int parent_tid = GetCurrentThread(); \ + lsan_block = ^(void) { \ + lsan_register_worker_thread(parent_tid); \ + work(); \ + } + +INTERCEPTOR(void, dispatch_async, dispatch_queue_t dq, void (^work)(void)) { + GET_LSAN_BLOCK(work); + REAL(dispatch_async)(dq, lsan_block); +} + +INTERCEPTOR(void, dispatch_group_async, dispatch_group_t dg, + dispatch_queue_t dq, void (^work)(void)) { + GET_LSAN_BLOCK(work); + REAL(dispatch_group_async)(dg, dq, lsan_block); +} + +INTERCEPTOR(void, dispatch_after, dispatch_time_t when, dispatch_queue_t queue, + void (^work)(void)) { + GET_LSAN_BLOCK(work); + REAL(dispatch_after)(when, queue, lsan_block); +} + +INTERCEPTOR(void, dispatch_source_set_cancel_handler, dispatch_source_t ds, + void (^work)(void)) { + if (!work) { + REAL(dispatch_source_set_cancel_handler)(ds, work); + return; + } + GET_LSAN_BLOCK(work); + REAL(dispatch_source_set_cancel_handler)(ds, lsan_block); +} + +INTERCEPTOR(void, dispatch_source_set_event_handler, dispatch_source_t ds, + void (^work)(void)) { + GET_LSAN_BLOCK(work); + REAL(dispatch_source_set_event_handler)(ds, lsan_block); +} +#endif + +#endif // SANITIZER_MAC Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -77,7 +77,7 @@ u32 ThreadCreate(u32 parent_tid, uptr user_id, bool de /* arg */ nullptr); } -void ThreadStart(u32 tid, tid_t os_id) { +void ThreadStart(u32 tid, tid_t os_id, bool workerthread) { OnStartedArgs args; uptr stack_size = 0; uptr tls_size = 0; @@ -87,7 +87,7 @@ void ThreadStart(u32 tid, tid_t os_id) { args.tls_end = args.tls_begin + tls_size; GetAllocatorCacheRange(&args.cache_begin, &args.cache_end); args.dtls = DTLS_Get(); - thread_registry->StartThread(tid, os_id, /*workerthread*/ false, &args); + thread_registry->StartThread(tid, os_id, workerthread, &args); } void ThreadFinish() { Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_thread.h Tue Jun 27 06:40:39 2017 (r320397) @@ -45,7 +45,7 @@ class ThreadContext : public ThreadContextBase { void InitializeThreadRegistry(); -void ThreadStart(u32 tid, tid_t os_id); +void ThreadStart(u32 tid, tid_t os_id, bool workerthread = false); void ThreadFinish(); u32 ThreadCreate(u32 tid, uptr uid, bool detached); void ThreadJoin(u32 tid); Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_allocator.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -119,9 +119,8 @@ static AllocatorCache fallback_allocator_cache; static SpinMutex fallback_mutex; void MsanAllocatorInit() { - allocator.Init( - common_flags()->allocator_may_return_null, - common_flags()->allocator_release_to_os_interval_ms); + SetAllocatorMayReturnNull(common_flags()->allocator_may_return_null); + allocator.Init(common_flags()->allocator_release_to_os_interval_ms); } AllocatorCache *GetAllocatorCache(MsanThreadLocalMallocStorage *ms) { @@ -139,17 +138,17 @@ static void *MsanAllocate(StackTrace *stack, uptr size if (size > kMaxAllowedMallocSize) { Report("WARNING: MemorySanitizer failed to allocate %p bytes\n", (void *)size); - return allocator.ReturnNullOrDieOnBadRequest(); + return Allocator::FailureHandler::OnBadRequest(); } MsanThread *t = GetCurrentThread(); void *allocated; if (t) { AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage()); - allocated = allocator.Allocate(cache, size, alignment, false); + allocated = allocator.Allocate(cache, size, alignment); } else { SpinMutexLock l(&fallback_mutex); AllocatorCache *cache = &fallback_allocator_cache; - allocated = allocator.Allocate(cache, size, alignment, false); + allocated = allocator.Allocate(cache, size, alignment); } Metadata *meta = reinterpret_cast<Metadata *>(allocator.GetMetaData(allocated)); @@ -197,7 +196,7 @@ void MsanDeallocate(StackTrace *stack, void *p) { void *MsanCalloc(StackTrace *stack, uptr nmemb, uptr size) { if (CallocShouldReturnNullDueToOverflow(size, nmemb)) - return allocator.ReturnNullOrDieOnBadRequest(); + return Allocator::FailureHandler::OnBadRequest(); return MsanReallocate(stack, nullptr, nmemb * size, sizeof(u64), true); } Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc Tue Jun 27 06:40:39 2017 (r320397) @@ -94,8 +94,7 @@ InternalAllocator *internal_allocator() { SpinMutexLock l(&internal_alloc_init_mu); if (atomic_load(&internal_allocator_initialized, memory_order_relaxed) == 0) { - internal_allocator_instance->Init( - /* may_return_null */ false, kReleaseToOSIntervalNever); + internal_allocator_instance->Init(kReleaseToOSIntervalNever); atomic_store(&internal_allocator_initialized, 1, memory_order_release); } } @@ -108,9 +107,9 @@ static void *RawInternalAlloc(uptr size, InternalAlloc if (cache == 0) { SpinMutexLock l(&internal_allocator_cache_mu); return internal_allocator()->Allocate(&internal_allocator_cache, size, - alignment, false); + alignment); } - return internal_allocator()->Allocate(cache, size, alignment, false); + return internal_allocator()->Allocate(cache, size, alignment); } static void *RawInternalRealloc(void *ptr, uptr size, @@ -162,7 +161,7 @@ void *InternalRealloc(void *addr, uptr size, InternalA void *InternalCalloc(uptr count, uptr size, InternalAllocatorCache *cache) { if (CallocShouldReturnNullDueToOverflow(count, size)) - return internal_allocator()->ReturnNullOrDieOnBadRequest(); + return InternalAllocator::FailureHandler::OnBadRequest(); void *p = InternalAlloc(count * size, cache); if (p) internal_memset(p, 0, count * size); return p; @@ -209,17 +208,51 @@ bool CallocShouldReturnNullDueToOverflow(uptr size, up return (max / size) < n; } -static atomic_uint8_t reporting_out_of_memory = {0}; +static atomic_uint8_t allocator_out_of_memory = {0}; +static atomic_uint8_t allocator_may_return_null = {0}; -bool IsReportingOOM() { return atomic_load_relaxed(&reporting_out_of_memory); } +bool IsAllocatorOutOfMemory() { + return atomic_load_relaxed(&allocator_out_of_memory); +} -void NORETURN ReportAllocatorCannotReturnNull(bool out_of_memory) { - if (out_of_memory) atomic_store_relaxed(&reporting_out_of_memory, 1); +// Prints error message and kills the program. +void NORETURN ReportAllocatorCannotReturnNull() { Report("%s's allocator is terminating the process instead of returning 0\n", SanitizerToolName); Report("If you don't like this behavior set allocator_may_return_null=1\n"); CHECK(0); Die(); +} + +bool AllocatorMayReturnNull() { + return atomic_load(&allocator_may_return_null, memory_order_relaxed); +} + +void SetAllocatorMayReturnNull(bool may_return_null) { + atomic_store(&allocator_may_return_null, may_return_null, + memory_order_relaxed); +} + +void *ReturnNullOrDieOnFailure::OnBadRequest() { + if (AllocatorMayReturnNull()) + return nullptr; + ReportAllocatorCannotReturnNull(); +} + +void *ReturnNullOrDieOnFailure::OnOOM() { + atomic_store_relaxed(&allocator_out_of_memory, 1); + if (AllocatorMayReturnNull()) + return nullptr; + ReportAllocatorCannotReturnNull(); +} + +void *DieOnFailure::OnBadRequest() { + ReportAllocatorCannotReturnNull(); +} + +void *DieOnFailure::OnOOM() { + atomic_store_relaxed(&allocator_out_of_memory, 1); + ReportAllocatorCannotReturnNull(); } } // namespace __sanitizer Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator.h Tue Jun 27 06:40:39 2017 (r320397) @@ -24,12 +24,28 @@ namespace __sanitizer { -// Returns true if ReportAllocatorCannotReturnNull(true) was called. -// Can be use to avoid memory hungry operations. -bool IsReportingOOM(); +// Since flags are immutable and allocator behavior can be changed at runtime +// (unit tests or ASan on Android are some examples), allocator_may_return_null +// flag value is cached here and can be altered later. +bool AllocatorMayReturnNull(); +void SetAllocatorMayReturnNull(bool may_return_null); -// Prints error message and kills the program. -void NORETURN ReportAllocatorCannotReturnNull(bool out_of_memory); +// Allocator failure handling policies: +// Implements AllocatorMayReturnNull policy, returns null when the flag is set, +// dies otherwise. +struct ReturnNullOrDieOnFailure { + static void *OnBadRequest(); + static void *OnOOM(); +}; +// Always dies on the failure. +struct DieOnFailure { + static void *OnBadRequest(); + static void *OnOOM(); +}; + +// Returns true if allocator detected OOM condition. Can be used to avoid memory +// hungry operations. Set when AllocatorReturnNullOrDieOnOOM() is called. +bool IsAllocatorOutOfMemory(); // Allocators call these callbacks on mmap/munmap. struct NoOpMapUnmapCallback { Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h Tue Jun 27 06:40:39 2017 (r320397) @@ -24,31 +24,26 @@ template <class PrimaryAllocator, class AllocatorCache class SecondaryAllocator> // NOLINT class CombinedAllocator { public: - void InitCommon(bool may_return_null, s32 release_to_os_interval_ms) { - primary_.Init(release_to_os_interval_ms); - atomic_store(&may_return_null_, may_return_null, memory_order_relaxed); - } + typedef typename SecondaryAllocator::FailureHandler FailureHandler; - void InitLinkerInitialized( - bool may_return_null, s32 release_to_os_interval_ms) { - secondary_.InitLinkerInitialized(may_return_null); + void InitLinkerInitialized(s32 release_to_os_interval_ms) { + primary_.Init(release_to_os_interval_ms); + secondary_.InitLinkerInitialized(); stats_.InitLinkerInitialized(); - InitCommon(may_return_null, release_to_os_interval_ms); } - void Init(bool may_return_null, s32 release_to_os_interval_ms) { - secondary_.Init(may_return_null); + void Init(s32 release_to_os_interval_ms) { + primary_.Init(release_to_os_interval_ms); + secondary_.Init(); stats_.Init(); - InitCommon(may_return_null, release_to_os_interval_ms); } - void *Allocate(AllocatorCache *cache, uptr size, uptr alignment, - bool cleared = false) { + void *Allocate(AllocatorCache *cache, uptr size, uptr alignment) { // Returning 0 on malloc(0) may break a lot of code. if (size == 0) size = 1; if (size + alignment < size) - return ReturnNullOrDieOnBadRequest(); + return FailureHandler::OnBadRequest(); uptr original_size = size; // If alignment requirements are to be fulfilled by the frontend allocator // rather than by the primary or secondary, passing an alignment lower than @@ -56,49 +51,24 @@ class CombinedAllocator { // alignment check. if (alignment > 8) size = RoundUpTo(size, alignment); - void *res; - bool from_primary = primary_.CanAllocate(size, alignment); // The primary allocator should return a 2^x aligned allocation when // requested 2^x bytes, hence using the rounded up 'size' when being // serviced by the primary (this is no longer true when the primary is // using a non-fixed base address). The secondary takes care of the // alignment without such requirement, and allocating 'size' would use // extraneous memory, so we employ 'original_size'. - if (from_primary) + void *res; + if (primary_.CanAllocate(size, alignment)) res = cache->Allocate(&primary_, primary_.ClassID(size)); else res = secondary_.Allocate(&stats_, original_size, alignment); + if (!res) + return FailureHandler::OnOOM(); if (alignment > 8) CHECK_EQ(reinterpret_cast<uptr>(res) & (alignment - 1), 0); - // When serviced by the secondary, the chunk comes from a mmap allocation - // and will be zero'd out anyway. We only need to clear our the chunk if - // it was serviced by the primary, hence using the rounded up 'size'. - if (cleared && res && from_primary) - internal_bzero_aligned16(res, RoundUpTo(size, 16)); return res; } - bool MayReturnNull() const { - return atomic_load(&may_return_null_, memory_order_acquire); - } - - void *ReturnNullOrDieOnBadRequest() { - if (MayReturnNull()) - return nullptr; - ReportAllocatorCannotReturnNull(false); - } - - void *ReturnNullOrDieOnOOM() { - if (MayReturnNull()) - return nullptr; - ReportAllocatorCannotReturnNull(true); - } - - void SetMayReturnNull(bool may_return_null) { - secondary_.SetMayReturnNull(may_return_null); - atomic_store(&may_return_null_, may_return_null, memory_order_release); - } - s32 ReleaseToOSIntervalMs() const { return primary_.ReleaseToOSIntervalMs(); } @@ -219,6 +189,5 @@ class CombinedAllocator { PrimaryAllocator primary_; SecondaryAllocator secondary_; AllocatorGlobalStats stats_; - atomic_uint8_t may_return_null_; }; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_internal.h Tue Jun 27 06:40:39 2017 (r320397) @@ -47,7 +47,8 @@ typedef SizeClassAllocatorLocalCache<PrimaryInternalAl InternalAllocatorCache; typedef CombinedAllocator<PrimaryInternalAllocator, InternalAllocatorCache, - LargeMmapAllocator<> > InternalAllocator; + LargeMmapAllocator<NoOpMapUnmapCallback, DieOnFailure> + > InternalAllocator; void *InternalAlloc(uptr size, InternalAllocatorCache *cache = nullptr, uptr alignment = 0); Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_local_cache.h Tue Jun 27 06:40:39 2017 (r320397) @@ -144,8 +144,10 @@ struct SizeClassAllocator32LocalCache { CHECK_NE(class_id, 0UL); CHECK_LT(class_id, kNumClasses); PerClass *c = &per_class_[class_id]; - if (UNLIKELY(c->count == 0)) - Refill(allocator, class_id); + if (UNLIKELY(c->count == 0)) { + if (UNLIKELY(!Refill(allocator, class_id))) + return nullptr; + } stats_.Add(AllocatorStatAllocated, c->class_size); void *res = c->batch[--c->count]; PREFETCH(c->batch[c->count - 1]); @@ -227,14 +229,17 @@ struct SizeClassAllocator32LocalCache { Deallocate(allocator, batch_class_id, b); } - NOINLINE void Refill(SizeClassAllocator *allocator, uptr class_id) { + NOINLINE bool Refill(SizeClassAllocator *allocator, uptr class_id) { InitCache(); PerClass *c = &per_class_[class_id]; TransferBatch *b = allocator->AllocateBatch(&stats_, this, class_id); + if (UNLIKELY(!b)) + return false; CHECK_GT(b->Count(), 0); b->CopyToArray(c->batch); c->count = b->Count(); DestroyBatch(class_id, allocator, b); + return true; } NOINLINE void Drain(SizeClassAllocator *allocator, uptr class_id) { @@ -244,6 +249,10 @@ struct SizeClassAllocator32LocalCache { uptr first_idx_to_drain = c->count - cnt; TransferBatch *b = CreateBatch( class_id, allocator, (TransferBatch *)c->batch[first_idx_to_drain]); + // Failure to allocate a batch while releasing memory is non recoverable. + // TODO(alekseys): Figure out how to do it without allocating a new batch. + if (UNLIKELY(!b)) + DieOnFailure::OnOOM(); b->SetFromArray(allocator->GetRegionBeginBySizeClass(class_id), &c->batch[first_idx_to_drain], cnt); c->count -= cnt; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h Tue Jun 27 06:40:39 2017 (r320397) @@ -24,7 +24,8 @@ template<class SizeClassAllocator> struct SizeClassAll // be returned by MmapOrDie(). // // Region: -// a result of a single call to MmapAlignedOrDie(kRegionSize, kRegionSize). +// a result of a single call to MmapAlignedOrDieOnFatalError(kRegionSize, +// kRegionSize). // Since the regions are aligned by kRegionSize, there are exactly // kNumPossibleRegions possible regions in the address space and so we keep // a ByteMap possible_regions to store the size classes of each Region. @@ -149,8 +150,9 @@ class SizeClassAllocator32 { CHECK_LT(class_id, kNumClasses); SizeClassInfo *sci = GetSizeClassInfo(class_id); SpinMutexLock l(&sci->mutex); - if (sci->free_list.empty()) - PopulateFreeList(stat, c, sci, class_id); + if (sci->free_list.empty() && + UNLIKELY(!PopulateFreeList(stat, c, sci, class_id))) + return nullptr; CHECK(!sci->free_list.empty()); TransferBatch *b = sci->free_list.front(); sci->free_list.pop_front(); @@ -277,8 +279,10 @@ class SizeClassAllocator32 { uptr AllocateRegion(AllocatorStats *stat, uptr class_id) { CHECK_LT(class_id, kNumClasses); - uptr res = reinterpret_cast<uptr>(MmapAlignedOrDie(kRegionSize, kRegionSize, - "SizeClassAllocator32")); + uptr res = reinterpret_cast<uptr>(MmapAlignedOrDieOnFatalError( + kRegionSize, kRegionSize, "SizeClassAllocator32")); + if (UNLIKELY(!res)) + return 0; MapUnmapCallback().OnMap(res, kRegionSize); stat->Add(AllocatorStatMapped, kRegionSize); CHECK_EQ(0U, (res & (kRegionSize - 1))); @@ -291,16 +295,20 @@ class SizeClassAllocator32 { return &size_class_info_array[class_id]; } - void PopulateFreeList(AllocatorStats *stat, AllocatorCache *c, + bool PopulateFreeList(AllocatorStats *stat, AllocatorCache *c, SizeClassInfo *sci, uptr class_id) { uptr size = ClassIdToSize(class_id); uptr reg = AllocateRegion(stat, class_id); + if (UNLIKELY(!reg)) + return false; uptr n_chunks = kRegionSize / (size + kMetadataSize); uptr max_count = TransferBatch::MaxCached(class_id); TransferBatch *b = nullptr; for (uptr i = reg; i < reg + n_chunks * size; i += size) { if (!b) { b = c->CreateBatch(class_id, this, (TransferBatch*)i); + if (!b) + return false; b->Clear(); } b->Add((void*)i); @@ -314,6 +322,7 @@ class SizeClassAllocator32 { CHECK_GT(b->Count(), 0); sci->free_list.push_back(b); } + return true; } ByteMap possible_regions; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h Tue Jun 27 06:40:39 2017 (r320397) @@ -17,17 +17,19 @@ // This class can (de)allocate only large chunks of memory using mmap/unmap. // The main purpose of this allocator is to cover large and rare allocation // sizes not covered by more efficient allocators (e.g. SizeClassAllocator64). -template <class MapUnmapCallback = NoOpMapUnmapCallback> +template <class MapUnmapCallback = NoOpMapUnmapCallback, + class FailureHandlerT = ReturnNullOrDieOnFailure> class LargeMmapAllocator { public: - void InitLinkerInitialized(bool may_return_null) { + typedef FailureHandlerT FailureHandler; + + void InitLinkerInitialized() { page_size_ = GetPageSizeCached(); - atomic_store(&may_return_null_, may_return_null, memory_order_relaxed); } - void Init(bool may_return_null) { + void Init() { internal_memset(this, 0, sizeof(*this)); - InitLinkerInitialized(may_return_null); + InitLinkerInitialized(); } void *Allocate(AllocatorStats *stat, uptr size, uptr alignment) { @@ -37,11 +39,11 @@ class LargeMmapAllocator { map_size += alignment; // Overflow. if (map_size < size) - return ReturnNullOrDieOnBadRequest(); + return FailureHandler::OnBadRequest(); uptr map_beg = reinterpret_cast<uptr>( MmapOrDieOnFatalError(map_size, "LargeMmapAllocator")); if (!map_beg) - return ReturnNullOrDieOnOOM(); + return FailureHandler::OnOOM(); CHECK(IsAligned(map_beg, page_size_)); MapUnmapCallback().OnMap(map_beg, map_size); uptr map_end = map_beg + map_size; @@ -75,24 +77,6 @@ class LargeMmapAllocator { return reinterpret_cast<void*>(res); } - bool MayReturnNull() const { - return atomic_load(&may_return_null_, memory_order_acquire); - } - - void *ReturnNullOrDieOnBadRequest() { - if (MayReturnNull()) return nullptr; - ReportAllocatorCannotReturnNull(false); - } - - void *ReturnNullOrDieOnOOM() { - if (MayReturnNull()) return nullptr; - ReportAllocatorCannotReturnNull(true); - } - - void SetMayReturnNull(bool may_return_null) { - atomic_store(&may_return_null_, may_return_null, memory_order_release); - } - void Deallocate(AllocatorStats *stat, void *p) { Header *h = GetHeader(p); { @@ -278,7 +262,6 @@ class LargeMmapAllocator { struct Stats { uptr n_allocs, n_frees, currently_allocated, max_allocated, by_size_log[64]; } stats; - atomic_uint8_t may_return_null_; SpinMutex mutex_; }; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang.h Tue Jun 27 06:40:39 2017 (r320397) @@ -71,16 +71,25 @@ INLINE typename T::Type atomic_exchange(volatile T *a, return v; } -template<typename T> -INLINE bool atomic_compare_exchange_strong(volatile T *a, - typename T::Type *cmp, +template <typename T> +INLINE bool atomic_compare_exchange_strong(volatile T *a, typename T::Type *cmp, typename T::Type xchg, memory_order mo) { typedef typename T::Type Type; Type cmpv = *cmp; - Type prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg); - if (prev == cmpv) - return true; + Type prev; +#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32 + if (sizeof(*a) == 8) { + Type volatile *val_ptr = const_cast<Type volatile *>(&a->val_dont_use); + prev = __mips_sync_val_compare_and_swap<u64>( + reinterpret_cast<u64 volatile *>(val_ptr), (u64)cmpv, (u64)xchg); + } else { + prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg); + } +#else + prev = __sync_val_compare_and_swap(&a->val_dont_use, cmpv, xchg); +#endif + if (prev == cmpv) return true; *cmp = prev; return false; } Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h Tue Jun 27 06:02:50 2017 (r320396) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_other.h Tue Jun 27 06:40:39 2017 (r320397) @@ -17,6 +17,56 @@ namespace __sanitizer { +// MIPS32 does not support atomic > 4 bytes. To address this lack of +// functionality, the sanitizer library provides helper methods which use an +// internal spin lock mechanism to emulate atomic oprations when the size is +// 8 bytes. +#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32 +static void __spin_lock(volatile int *lock) { + while (__sync_lock_test_and_set(lock, 1)) + while (*lock) { + } +} + +static void __spin_unlock(volatile int *lock) { __sync_lock_release(lock); } + + +// Make sure the lock is on its own cache line to prevent false sharing. +// Put it inside a struct that is aligned and padded to the typical MIPS +// cacheline which is 32 bytes. +static struct { + int lock; + char pad[32 - sizeof(int)]; +} __attribute__((aligned(32))) lock = {0}; + +template <class T> +T __mips_sync_fetch_and_add(volatile T *ptr, T val) { + T ret; + + __spin_lock(&lock.lock); + + ret = *ptr; + *ptr = ret + val; + + __spin_unlock(&lock.lock); + + return ret; +} + +template <class T> +T __mips_sync_val_compare_and_swap(volatile T *ptr, T oldval, T newval) { + T ret; + __spin_lock(&lock.lock); + + ret = *ptr; + if (ret == oldval) *ptr = newval; + + __spin_unlock(&lock.lock); + + return ret; +} +#endif + INLINE void proc_yield(int cnt) { __asm__ __volatile__("" ::: "memory"); } @@ -53,8 +103,15 @@ INLINE typename T::Type atomic_load( // 64-bit load on 32-bit platform. // Gross, but simple and reliable. // Assume that it is not in read-only memory. +#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32 + typename T::Type volatile *val_ptr = + const_cast<typename T::Type volatile *>(&a->val_dont_use); + v = __mips_sync_fetch_and_add<u64>( + reinterpret_cast<u64 volatile *>(val_ptr), 0); +#else v = __sync_fetch_and_add( const_cast<typename T::Type volatile *>(&a->val_dont_use), 0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706270640.v5R6eeJQ047288>