Date: Mon, 29 May 2017 22:09:24 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r319164 - in projects/clang500-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/builtins contrib/compiler-rt/lib/builtins/arm contrib/compiler-rt/lib/lsan contrib/compiler-r... Message-ID: <201705292209.v4TM9OrB023814@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Mon May 29 22:09:23 2017 New Revision: 319164 URL: https://svnweb.freebsd.org/changeset/base/319164 Log: Merge llvm, clang, lld, lldb, compiler-rt and libc++ r304149, and update build glue. Added: projects/clang500-import/contrib/libc++/include/experimental/coroutine - copied unchanged from r319151, vendor/libc++/dist/include/experimental/coroutine projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/Localizer.h - copied unchanged from r319151, vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/Localizer.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h - copied unchanged from r319151, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHashAttributes.def - copied unchanged from r319151, vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIEHashAttributes.def projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/Localizer.cpp - copied unchanged from r319151, vendor/llvm/dist/lib/CodeGen/GlobalISel/Localizer.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp - copied unchanged from r319151, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp projects/clang500-import/contrib/llvm/lib/Target/Nios2/ - copied from r319151, vendor/llvm/dist/lib/Target/Nios2/ projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVNSink.cpp - copied unchanged from r319151, vendor/llvm/dist/lib/Transforms/Scalar/GVNSink.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/BareMetal.cpp - copied unchanged from r319151, vendor/clang/dist/lib/Driver/ToolChains/BareMetal.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/BareMetal.h - copied unchanged from r319151, vendor/clang/dist/lib/Driver/ToolChains/BareMetal.h projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/avx512vpopcntdqintrin.h - copied unchanged from r319151, vendor/clang/dist/lib/Headers/avx512vpopcntdqintrin.h projects/clang500-import/contrib/llvm/utils/TableGen/X86FoldTablesEmitter.cpp - copied unchanged from r319151, vendor/llvm/dist/utils/TableGen/X86FoldTablesEmitter.cpp Deleted: projects/clang500-import/contrib/llvm/lib/LibDriver/ projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedFalkorWriteRes.td Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win.cc projects/clang500-import/contrib/compiler-rt/lib/builtins/README.txt projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S projects/clang500-import/contrib/compiler-rt/lib/builtins/assembly.h projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapdi2.c projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapsi2.c projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_flags.inc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_s390.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc projects/clang500-import/contrib/libc++/include/__config projects/clang500-import/contrib/libc++/include/__threading_support projects/clang500-import/contrib/libc++/include/algorithm projects/clang500-import/contrib/libc++/include/experimental/__config projects/clang500-import/contrib/libc++/include/iterator projects/clang500-import/contrib/libc++/include/memory projects/clang500-import/contrib/libc++/include/module.modulemap projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/LoopPass.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/AtomicExpandUtils.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/DIE.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/FaultMaps.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveInterval.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveIntervalUnion.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LivePhysRegs.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveRangeEdit.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveStackAnalysis.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineBlockFrequencyInfo.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineDominanceFrontier.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineDominators.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineInstr.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineValueType.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ScheduleDAG.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.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/CVTypeVisitor.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDeserializer.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeRecord.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeSerializer.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeTableCollection.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.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/MappedBlockStream.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBTypeServerHandler.h projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStream.h projects/clang500-import/contrib/llvm/include/llvm/IR/Attributes.h projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicInst.h projects/clang500-import/contrib/llvm/include/llvm/IR/Intrinsics.td projects/clang500-import/contrib/llvm/include/llvm/IR/IntrinsicsAMDGPU.td projects/clang500-import/contrib/llvm/include/llvm/IR/Metadata.h projects/clang500-import/contrib/llvm/include/llvm/IR/Module.h projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h projects/clang500-import/contrib/llvm/include/llvm/LTO/Config.h projects/clang500-import/contrib/llvm/include/llvm/Object/Binary.h projects/clang500-import/contrib/llvm/include/llvm/Object/COFF.h projects/clang500-import/contrib/llvm/include/llvm/Object/ELFObjectFile.h projects/clang500-import/contrib/llvm/include/llvm/Object/MachO.h projects/clang500-import/contrib/llvm/include/llvm/Object/ObjectFile.h projects/clang500-import/contrib/llvm/include/llvm/Object/RelocVisitor.h projects/clang500-import/contrib/llvm/include/llvm/Object/Wasm.h projects/clang500-import/contrib/llvm/include/llvm/Option/OptTable.h projects/clang500-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h projects/clang500-import/contrib/llvm/include/llvm/TableGen/Record.h projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLowering.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/Utils/Local.h projects/clang500-import/contrib/llvm/lib/Analysis/ConstantFolding.cpp projects/clang500-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/clang500-import/contrib/llvm/lib/Analysis/Lint.cpp projects/clang500-import/contrib/llvm/lib/Analysis/LoopPass.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/TargetTransformInfo.cpp projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIEHash.h projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h projects/clang500-import/contrib/llvm/lib/CodeGen/AtomicExpandPass.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/BasicTargetTransformInfo.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/BranchCoalescing.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/BranchFolding.h projects/clang500-import/contrib/llvm/lib/CodeGen/BranchRelaxation.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/DeadMachineInstructionElim.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/DetectDeadLanes.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/EarlyIfConversion.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ExpandISelPseudos.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ExpandPostRAPseudos.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/FuncletLayout.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/GlobalISel.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalMerge.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/InterleavedAccessPass.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LexicalScopes.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LivePhysRegs.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LiveStackAnalysis.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LocalStackSlotAllocation.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/LowerEmuTLS.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineCombiner.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineLICM.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineOutliner.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachinePipeliner.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineScheduler.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineSink.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineTraceMetrics.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/MachineVerifier.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/OptimizePHIs.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/PHIElimination.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ProcessImplicitDefs.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/PrologEpilogInserter.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/RenameIndependentSubregs.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SafeStack.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ScalarizeMaskedMemIntrin.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.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/SelectionDAG.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h 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/ShadowStackGCLowering.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/ShrinkWrap.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SlotIndexes.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/SpillPlacement.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/StackColoring.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/StackProtector.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/StackSlotColoring.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/TailDuplication.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/TailDuplicator.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp projects/clang500-import/contrib/llvm/lib/CodeGen/WinEHPrepare.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeVisitor.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeSerializer.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeTableCollection.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDie.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/MSF/MappedBlockStream.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStreamBuilder.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBTypeServerHandler.cpp projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/TpiStream.cpp projects/clang500-import/contrib/llvm/lib/Demangle/ItaniumDemangle.cpp projects/clang500-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.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/BasicBlock.cpp projects/clang500-import/contrib/llvm/lib/IR/DebugLoc.cpp projects/clang500-import/contrib/llvm/lib/IR/Instructions.cpp projects/clang500-import/contrib/llvm/lib/IR/IntrinsicInst.cpp projects/clang500-import/contrib/llvm/lib/IR/Module.cpp projects/clang500-import/contrib/llvm/lib/IR/Verifier.cpp projects/clang500-import/contrib/llvm/lib/LTO/LTO.cpp projects/clang500-import/contrib/llvm/lib/LTO/LTOBackend.cpp projects/clang500-import/contrib/llvm/lib/Linker/IRMover.cpp projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp projects/clang500-import/contrib/llvm/lib/Object/COFFObjectFile.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/Option/OptTable.cpp projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.cpp projects/clang500-import/contrib/llvm/lib/ProfileData/InstrProf.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/ConvertUTF.cpp projects/clang500-import/contrib/llvm/lib/Support/DebugCounter.cpp projects/clang500-import/contrib/llvm/lib/Support/DynamicLibrary.cpp projects/clang500-import/contrib/llvm/lib/Support/GraphWriter.cpp projects/clang500-import/contrib/llvm/lib/Support/Host.cpp projects/clang500-import/contrib/llvm/lib/Support/Path.cpp projects/clang500-import/contrib/llvm/lib/Support/Triple.cpp projects/clang500-import/contrib/llvm/lib/Support/YAMLParser.cpp projects/clang500-import/contrib/llvm/lib/TableGen/Record.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp 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/AArch64InstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64MacroFusion.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedFalkor.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64SchedFalkorDetails.td projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.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/AMDGPULegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp 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/GCNIterativeScheduler.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/GCNMinRegStrategy.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/GCNRegPressure.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/R600ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600RegisterInfo.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIDefines.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.td projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SOPInstructions.td 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/VOP3Instructions.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/ARMCallLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMCallLowering.h projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.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/ARMInstrNEON.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMSchedule.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMScheduleA9.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMScheduleR52.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMScheduleSwift.td projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetMachine.h projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp projects/clang500-import/contrib/llvm/lib/Target/ARM/Thumb1FrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/AVR/AVRInstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelLowering.h projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPseudo.td projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonRegisterInfo.h projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430.td projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430InstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430Subtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/MSP430/MSP430Subtarget.h projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSubtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSubtarget.h projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCExpandISEL.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h 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.td projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrVSX.td projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZExpandPseudo.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h projects/clang500-import/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86FloatingPoint.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrArithmetic.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrFMA.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrFormats.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrMMX.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrXOP.td projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstructionSelector.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86LegalizerInfo.h projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp projects/clang500-import/contrib/llvm/lib/Target/X86/X86Subtarget.h projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroCleanup.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroEarly.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroElide.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroFrame.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Coroutines/CoroSplit.cpp projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PartialInlining.cpp projects/clang500-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.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/InstCombineMulDivRem.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/ConstantHoisting.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVN.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GuardWidening.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.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/SimpleLoopUnswitch.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/FunctionComparator.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp projects/clang500-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp projects/clang500-import/contrib/llvm/tools/clang/include/clang-c/Index.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Expr.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/StmtCXX.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Attr.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsAMDGPU.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsPPC.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticOptions.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticOptions.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/SourceManagerInternals.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/TemplateKinds.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/XRayLists.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td projects/clang500-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td 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/Frontend/CodeGenOptions.def projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/CompilerInvocation.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/ModuleMap.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/AttributeList.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/ScopeInfo.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/clang500-import/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDatabase.h projects/clang500-import/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/AST/StmtCXX.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Analysis/AnalysisDeclContext.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/Targets.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/XRayLists.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGCoroutine.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.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/ToolChains/Gnu.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Linux.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Myriad.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/TokenAnnotator.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/altivec.h projects/clang500-import/contrib/llvm/tools/clang/lib/Headers/immintrin.h projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexBody.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexingContext.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/ModuleMap.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.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/CoroutineStmtBuilder.h projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaCoroutine.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/SemaLambda.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/CommonOptionsParser.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp projects/clang500-import/contrib/llvm/tools/clang/lib/Tooling/Tooling.cpp projects/clang500-import/contrib/llvm/tools/clang/tools/driver/driver.cpp projects/clang500-import/contrib/llvm/tools/clang/utils/TableGen/ClangAttrEmitter.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/ICF.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.h projects/clang500-import/contrib/llvm/tools/lld/COFF/MarkLive.cpp projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp 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/Config.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Driver.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/ICF.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/InputSection.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/InputSection.h projects/clang500-import/contrib/llvm/tools/lld/ELF/LTO.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/LinkerScript.h projects/clang500-import/contrib/llvm/tools/lld/ELF/MapFile.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/OutputSections.h projects/clang500-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/SyntheticSections.h projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.cpp projects/clang500-import/contrib/llvm/tools/lld/ELF/Writer.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/API/SBStructuredData.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/API/SBTrace.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/StructuredData.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/StructuredDataImpl.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Core/TraceOptions.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/Editline.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Host/common/NativeProcessProtocol.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/Process.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/StringExtractor.h projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/lldb-enumerations.h projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBProcess.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBStructuredData.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBThread.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/API/SBTrace.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectThread.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Core/FormatEntity.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Core/StructuredData.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Editline.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptx86ABIFixups.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.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/GDBRemoteCommunicationClient.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Process.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Thread.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/StringExtractor.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/StringExtractorGDBRemote.cpp projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/StringExtractorGDBRemote.h projects/clang500-import/contrib/llvm/tools/llvm-nm/llvm-nm.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/PrettyClassLayoutGraphicalDumper.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.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/utils/TableGen/GlobalISelEmitter.cpp projects/clang500-import/contrib/llvm/utils/TableGen/TableGen.cpp projects/clang500-import/contrib/llvm/utils/TableGen/TableGenBackends.h projects/clang500-import/lib/clang/headers/Makefile 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/Support/VCSRevision.h projects/clang500-import/lib/clang/libclang/Makefile projects/clang500-import/lib/clang/libllvm/Makefile projects/clang500-import/lib/libc++/Makefile projects/clang500-import/usr.bin/clang/llvm-tblgen/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/lib/asan/asan_interceptors.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_interceptors.cc Mon May 29 22:09:23 2017 (r319164) @@ -357,28 +357,22 @@ DEFINE_REAL_PTHREAD_FUNCTIONS #if SANITIZER_ANDROID INTERCEPTOR(void*, bsd_signal, int signum, void *handler) { - if (!IsHandledDeadlySignal(signum) || - common_flags()->allow_user_segv_handler) { + if (GetHandleSignalMode(signum) != kHandleSignalExclusive) return REAL(bsd_signal)(signum, handler); - } return 0; } #endif INTERCEPTOR(void*, signal, int signum, void *handler) { - if (!IsHandledDeadlySignal(signum) || - common_flags()->allow_user_segv_handler) { + if (GetHandleSignalMode(signum) != kHandleSignalExclusive) return REAL(signal)(signum, handler); - } return nullptr; } INTERCEPTOR(int, sigaction, int signum, const struct sigaction *act, struct sigaction *oldact) { - if (!IsHandledDeadlySignal(signum) || - common_flags()->allow_user_segv_handler) { + if (GetHandleSignalMode(signum) != kHandleSignalExclusive) return REAL(sigaction)(signum, act, oldact); - } return 0; } Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_win.cc Mon May 29 22:09:23 2017 (r319164) @@ -80,7 +80,7 @@ static long WINAPI SEHHandler(EXCEPTION_ INTERCEPTOR_WINAPI(LPTOP_LEVEL_EXCEPTION_FILTER, SetUnhandledExceptionFilter, LPTOP_LEVEL_EXCEPTION_FILTER ExceptionFilter) { CHECK(REAL(SetUnhandledExceptionFilter)); - if (ExceptionFilter == &SEHHandler || common_flags()->allow_user_segv_handler) + if (ExceptionFilter == &SEHHandler) return REAL(SetUnhandledExceptionFilter)(ExceptionFilter); // We record the user provided exception handler to be called for all the // exceptions unhandled by asan. Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/README.txt ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/README.txt Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/README.txt Mon May 29 22:09:23 2017 (r319164) @@ -57,8 +57,8 @@ si_int __popcountsi2(si_int a); // bit si_int __popcountdi2(di_int a); // bit population si_int __popcountti2(ti_int a); // bit population -uint32_t __bswapsi2(uint32_t a); // a byteswapped, arm/mips only -uint64_t __bswapdi2(uint64_t a); // a byteswapped, arm/mips only +uint32_t __bswapsi2(uint32_t a); // a byteswapped +uint64_t __bswapdi2(uint64_t a); // a byteswapped // Integral arithmetic Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cdcmp.S Mon May 29 22:09:23 2017 (r319164) @@ -48,7 +48,12 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmp // NaN has been ruled out, so __aeabi_cdcmple can't trap bne __aeabi_cdcmple +#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) + mov ip, #APSR_C + msr APSR_nzcvq, ip +#else msr CPSR_f, #APSR_C +#endif JMP(lr) #endif END_COMPILERRT_FUNCTION(__aeabi_cdcmpeq) @@ -95,17 +100,23 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmp lsls r0, r0, #31 pop {r0-r3, pc} #else + ITT(eq) moveq ip, #0 beq 1f ldm sp, {r0-r3} bl __aeabi_dcmpeq cmp r0, #1 + ITE(eq) moveq ip, #(APSR_C | APSR_Z) movne ip, #(APSR_C) 1: +#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) + msr APSR_nzcvq, ip +#else msr CPSR_f, ip +#endif pop {r0-r3} POP_PC() #endif Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/aeabi_cfcmp.S Mon May 29 22:09:23 2017 (r319164) @@ -48,7 +48,12 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cfcmp // NaN has been ruled out, so __aeabi_cfcmple can't trap bne __aeabi_cfcmple +#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) + mov ip, #APSR_C + msr APSR_nzcvq, ip +#else msr CPSR_f, #APSR_C +#endif JMP(lr) #endif END_COMPILERRT_FUNCTION(__aeabi_cfcmpeq) @@ -95,17 +100,23 @@ DEFINE_COMPILERRT_FUNCTION(__aeabi_cfcmp lsls r0, r0, #31 pop {r0-r3, pc} #else + ITT(eq) moveq ip, #0 beq 1f ldm sp, {r0-r3} bl __aeabi_fcmpeq cmp r0, #1 + ITE(eq) moveq ip, #(APSR_C | APSR_Z) movne ip, #(APSR_C) 1: +#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) + msr APSR_nzcvq, ip +#else msr CPSR_f, ip +#endif pop {r0-r3} POP_PC() #endif Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqdf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(eq) moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/eqsf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(eq) moveq r0, #1 // set result register to 1 if equal movne r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gedf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gedf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(ge) movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gesf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gesf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(ge) movge r0, #1 // set result register to 1 if greater than or equal movlt r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtdf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(gt) movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/gtsf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(gt) movgt r0, #1 // set result register to 1 if equal movle r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ledf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ledf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(ls) movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/lesf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__lesf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(ls) movls r0, #1 // set result register to 1 if equal movhi r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltdf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(mi) movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/ltsf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(mi) movmi r0, #1 // set result register to 1 if equal movpl r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nedf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__nedf2vfp) vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(ne) movne r0, #1 // set result register to 0 if unequal moveq r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/nesf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__nesf2vfp) vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(ne) movne r0, #1 // set result register to 1 if unequal moveq r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unorddf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__unorddf2vfp vcmp.f64 d6, d7 #endif vmrs apsr_nzcv, fpscr + ITE(vs) movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/arm/unordsf2vfp.S Mon May 29 22:09:23 2017 (r319164) @@ -27,6 +27,7 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2vfp vcmp.f32 s14, s15 #endif vmrs apsr_nzcv, fpscr + ITE(vs) movvs r0, #1 // set result register to 1 if "overflow" (any NaNs) movvc r0, #0 bx lr Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/assembly.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/assembly.h Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/assembly.h Mon May 29 22:09:23 2017 (r319164) @@ -115,10 +115,12 @@ #if defined(USE_THUMB_2) #define IT(cond) it cond #define ITT(cond) itt cond +#define ITE(cond) ite cond #define WIDE(op) op.w #else #define IT(cond) #define ITT(cond) +#define ITE(cond) #define WIDE(op) op #endif #endif /* defined(__arm__) */ Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapdi2.c ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapdi2.c Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapdi2.c Mon May 29 22:09:23 2017 (r319164) @@ -14,15 +14,14 @@ #include "int_lib.h" -COMPILER_RT_ABI uint64_t -__bswapdi2 (uint64_t u) -{ - return ((((u) & 0xff00000000000000ULL) >> 56) - | (((u) & 0x00ff000000000000ULL) >> 40) - | (((u) & 0x0000ff0000000000ULL) >> 24) - | (((u) & 0x000000ff00000000ULL) >> 8) - | (((u) & 0x00000000ff000000ULL) << 8) - | (((u) & 0x0000000000ff0000ULL) << 24) - | (((u) & 0x000000000000ff00ULL) << 40) - | (((u) & 0x00000000000000ffULL) << 56)); +COMPILER_RT_ABI uint64_t __bswapdi2(uint64_t u) { + return ( + (((u)&0xff00000000000000ULL) >> 56) | + (((u)&0x00ff000000000000ULL) >> 40) | + (((u)&0x0000ff0000000000ULL) >> 24) | + (((u)&0x000000ff00000000ULL) >> 8) | + (((u)&0x00000000ff000000ULL) << 8) | + (((u)&0x0000000000ff0000ULL) << 24) | + (((u)&0x000000000000ff00ULL) << 40) | + (((u)&0x00000000000000ffULL) << 56)); } Modified: projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapsi2.c ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapsi2.c Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/builtins/bswapsi2.c Mon May 29 22:09:23 2017 (r319164) @@ -14,12 +14,10 @@ #include "int_lib.h" -COMPILER_RT_ABI uint32_t -__bswapsi2 (uint32_t u) -{ - - return ((((u) & 0xff000000) >> 24) - | (((u) & 0x00ff0000) >> 8) - | (((u) & 0x0000ff00) << 8) - | (((u) & 0x000000ff) << 24)); +COMPILER_RT_ABI uint32_t __bswapsi2(uint32_t u) { + return ( + (((u)&0xff000000) >> 24) | + (((u)&0x00ff0000) >> 8) | + (((u)&0x0000ff00) << 8) | + (((u)&0x000000ff) << 24)); } Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common.cc Mon May 29 22:09:23 2017 (r319164) @@ -265,19 +265,21 @@ static void ProcessThreads(SuspendedThre } if (flags()->use_tls) { - LOG_THREADS("TLS at %p-%p.\n", tls_begin, tls_end); - if (cache_begin == cache_end) { - ScanRangeForPointers(tls_begin, tls_end, frontier, "TLS", kReachable); - } else { - // Because LSan should not be loaded with dlopen(), we can assume - // that allocator cache will be part of static TLS image. - CHECK_LE(tls_begin, cache_begin); - CHECK_GE(tls_end, cache_end); - if (tls_begin < cache_begin) - ScanRangeForPointers(tls_begin, cache_begin, frontier, "TLS", - kReachable); - if (tls_end > cache_end) - ScanRangeForPointers(cache_end, tls_end, frontier, "TLS", kReachable); + if (tls_begin) { + LOG_THREADS("TLS at %p-%p.\n", tls_begin, tls_end); + // If the tls and cache ranges don't overlap, scan full tls range, + // otherwise, only scan the non-overlapping portions + if (cache_begin == cache_end || tls_end < cache_begin || + tls_begin > cache_end) { + ScanRangeForPointers(tls_begin, tls_end, frontier, "TLS", kReachable); + } else { + if (tls_begin < cache_begin) + ScanRangeForPointers(tls_begin, cache_begin, frontier, "TLS", + kReachable); + if (tls_end > cache_end) + ScanRangeForPointers(cache_end, tls_end, frontier, "TLS", + kReachable); + } } if (dtls && !DTLSInDestruction(dtls)) { for (uptr j = 0; j < dtls->dtv_size; ++j) { 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 Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc Mon May 29 22:09:23 2017 (r319164) @@ -91,12 +91,7 @@ LoadedModule *GetLinker() { return nullp // Required on Linux for initialization of TLS behavior, but should not be // required on Darwin. -void InitializePlatformSpecificModules() { - if (flags()->use_tls) { - Report("use_tls=1 is not supported on Darwin.\n"); - Die(); - } -} +void InitializePlatformSpecificModules() {} // Scans global variables for heap pointers. void ProcessGlobalRegions(Frontier *frontier) { Modified: projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_flags.inc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_flags.inc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_flags.inc Mon May 29 22:09:23 2017 (r319164) @@ -30,7 +30,7 @@ LSAN_FLAG(bool, use_globals, true, "Root set: include global variables (.data and .bss)") LSAN_FLAG(bool, use_stacks, true, "Root set: include thread stacks") LSAN_FLAG(bool, use_registers, true, "Root set: include thread registers") -LSAN_FLAG(bool, use_tls, !SANITIZER_MAC, +LSAN_FLAG(bool, use_tls, true, "Root set: include TLS and thread-specific storage") LSAN_FLAG(bool, use_root_regions, true, "Root set: include regions added via __lsan_register_root_region().") 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 Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_primary32.h Mon May 29 22:09:23 2017 (r319164) @@ -319,5 +319,3 @@ class SizeClassAllocator32 { ByteMap possible_regions; SizeClassInfo size_class_info_array[kNumClasses]; }; - - Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h Mon May 29 22:09:23 2017 (r319164) @@ -380,7 +380,7 @@ void SetSoftRssLimitExceededCallback(voi // Functions related to signal handling. typedef void (*SignalHandlerType)(int, void *, void *); -bool IsHandledDeadlySignal(int signum); +HandleSignalMode GetHandleSignalMode(int signum); void InstallDeadlySignalHandlers(SignalHandlerType handler); const char *DescribeSignalOrException(int signo); // Alternative signal stack (POSIX-only). Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h Mon May 29 22:09:23 2017 (r319164) @@ -64,6 +64,11 @@ inline bool FlagHandler<HandleSignalMode *t_ = b ? kHandleSignalYes : kHandleSignalNo; return true; } + if (internal_strcmp(value, "2") == 0 || + internal_strcmp(value, "exclusive") == 0) { + *t_ = kHandleSignalExclusive; + return true; + } Printf("ERROR: Invalid value for signal handler option: '%s'\n", value); return false; } Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h Mon May 29 22:09:23 2017 (r319164) @@ -21,6 +21,7 @@ namespace __sanitizer { enum HandleSignalMode { kHandleSignalNo, kHandleSignalYes, + kHandleSignalExclusive, }; struct CommonFlags { Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Mon May 29 22:09:23 2017 (r319164) @@ -75,12 +75,13 @@ COMMON_FLAG(bool, print_summary, true, "If false, disable printing error summaries in addition to error " "reports.") COMMON_FLAG(int, print_module_map, 0, - "OS X only. 0 = don't print, 1 = print only once before process " - "exits, 2 = print after each report.") + "OS X only (0 - don't print, 1 - print only once before process " + "exits, 2 - print after each report).") COMMON_FLAG(bool, check_printf, true, "Check printf arguments.") #define COMMON_FLAG_HANDLE_SIGNAL_HELP(signal) \ "Controls custom tool's " #signal " handler (0 - do not registers the " \ - "handler, 1 - register the handler). " + "handler, 1 - register the handler and allow user to set own, " \ + "2 - registers the handler and block user from changing it). " COMMON_FLAG(HandleSignalMode, handle_segv, kHandleSignalYes, COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGSEGV)) COMMON_FLAG(HandleSignalMode, handle_sigbus, kHandleSignalYes, @@ -92,9 +93,6 @@ COMMON_FLAG(HandleSignalMode, handle_sig COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes, COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGFPE)) #undef COMMON_FLAG_HANDLE_SIGNAL_HELP -COMMON_FLAG(bool, allow_user_segv_handler, false, - "If set, allows user to register a SEGV handler even if the tool " - "registers one.") COMMON_FLAG(bool, use_sigaltstack, true, "If set, uses alternate stack for signal handling.") COMMON_FLAG(bool, detect_deadlocks, false, Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon May 29 22:09:23 2017 (r319164) @@ -62,8 +62,6 @@ #if SANITIZER_FREEBSD #include <sys/exec.h> #include <sys/sysctl.h> -#include <vm/vm_param.h> -#include <vm/pmap.h> #include <machine/atomic.h> extern "C" { // <sys/umtx.h> must be included after <errno.h> and <sys/types.h> on @@ -263,7 +261,7 @@ uptr internal_stat(const char *path, voi uptr internal_lstat(const char *path, void *buf) { #if SANITIZER_FREEBSD return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, - (uptr)buf, AT_SYMLINK_NOFOLLOW); + (uptr)buf, AT_SYMLINK_NOFOLLOW); #elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf, AT_SYMLINK_NOFOLLOW); @@ -551,7 +549,7 @@ void BlockingMutex::Lock() { void BlockingMutex::Unlock() { atomic_uint32_t *m = reinterpret_cast<atomic_uint32_t *>(&opaque_storage_); - u32 v = atomic_exchange(m, MtxUnlocked, memory_order_relaxed); + u32 v = atomic_exchange(m, MtxUnlocked, memory_order_release); CHECK_NE(v, MtxUnlocked); if (v == MtxSleeping) { #if SANITIZER_FREEBSD @@ -1398,7 +1396,7 @@ AndroidApiLevel AndroidGetApiLevel() { #endif -bool IsHandledDeadlySignal(int signum) { +HandleSignalMode GetHandleSignalMode(int signum) { switch (signum) { case SIGABRT: return common_flags()->handle_abort; @@ -1411,7 +1409,7 @@ bool IsHandledDeadlySignal(int signum) { case SIGBUS: return common_flags()->handle_sigbus; } - return false; + return kHandleSignalNo; } #if !SANITIZER_GO Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_s390.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_s390.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_s390.cc Mon May 29 22:09:23 2017 (r319164) @@ -178,6 +178,13 @@ static bool FixedCVE_2016_2143() { // 4.4.6+ is OK. if (minor == 4 && patch >= 6) return true; + if (minor == 4 && patch == 0 && ptr[0] == '-' && + internal_strstr(buf.version, "Ubuntu")) { + // Check Ubuntu 16.04 + int r1 = internal_simple_strtoll(ptr+1, &ptr, 10); + if (r1 >= 13) // 4.4.0-13 or later + return true; + } // Otherwise, OK if 4.5+. return minor >= 5; } else { Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc Mon May 29 22:09:23 2017 (r319164) @@ -370,6 +370,27 @@ uptr GetTlsSize() { void InitTlsSize() { } +uptr TlsBaseAddr() { + uptr segbase = 0; +#if defined(__x86_64__) + asm("movq %%gs:0,%0" : "=r"(segbase)); +#elif defined(__i386__) + asm("movl %%gs:0,%0" : "=r"(segbase)); +#endif + return segbase; +} + +// The size of the tls on darwin does not appear to be well documented, +// however the vm memory map suggests that it is 1024 uptrs in size, +// with a size of 0x2000 bytes on x86_64 and 0x1000 bytes on i386. +uptr TlsSize() { +#if defined(__x86_64__) || defined(__i386__) + return 1024 * sizeof(uptr); +#else + return 0; +#endif +} + void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size, uptr *tls_addr, uptr *tls_size) { #if !SANITIZER_GO @@ -377,8 +398,8 @@ void GetThreadStackAndTls(bool main, upt GetThreadStackTopAndBottom(main, &stack_top, &stack_bottom); *stk_addr = stack_bottom; *stk_size = stack_top - stack_bottom; - *tls_addr = 0; - *tls_size = 0; + *tls_addr = TlsBaseAddr(); + *tls_size = TlsSize(); #else *stk_addr = 0; *stk_size = 0; @@ -393,10 +414,10 @@ void ListOfModules::init() { memory_mapping.DumpListOfModules(&modules_); } -bool IsHandledDeadlySignal(int signum) { +HandleSignalMode GetHandleSignalMode(int signum) { // Handling fatal signals on watchOS and tvOS devices is disallowed. if ((SANITIZER_WATCHOS || SANITIZER_TVOS) && !(SANITIZER_IOSSIM)) - return false; + return kHandleSignalNo; switch (signum) { case SIGABRT: return common_flags()->handle_abort; @@ -409,7 +430,7 @@ bool IsHandledDeadlySignal(int signum) { case SIGBUS: return common_flags()->handle_sigbus; } - return false; + return kHandleSignalNo; } MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc Mon May 29 22:09:23 2017 (r319164) @@ -134,7 +134,8 @@ void SleepForMillis(int millis) { void Abort() { #if !SANITIZER_GO // If we are handling SIGABRT, unhandle it first. - if (IsHandledDeadlySignal(SIGABRT)) { + // TODO(vitalybuka): Check if handler belongs to sanitizer. + if (GetHandleSignalMode(SIGABRT) != kHandleSignalNo) { struct sigaction sigact; internal_memset(&sigact, 0, sizeof(sigact)); sigact.sa_sigaction = (sa_sigaction_t)SIG_DFL; @@ -188,8 +189,26 @@ void UnsetAlternateSignalStack() { static void MaybeInstallSigaction(int signum, SignalHandlerType handler) { - if (!IsHandledDeadlySignal(signum)) - return; + switch (GetHandleSignalMode(signum)) { + case kHandleSignalNo: + return; + case kHandleSignalYes: { + struct sigaction sigact; + internal_memset(&sigact, 0, sizeof(sigact)); + CHECK_EQ(0, internal_sigaction(signum, nullptr, &sigact)); + if (sigact.sa_flags & SA_SIGINFO) { + if (sigact.sa_sigaction) return; + } else { + if (sigact.sa_handler != SIG_DFL && sigact.sa_handler != SIG_IGN && + sigact.sa_handler != SIG_ERR) + return; + } + break; + } + case kHandleSignalExclusive: + break; + } + struct sigaction sigact; internal_memset(&sigact, 0, sizeof(sigact)); sigact.sa_sigaction = (sa_sigaction_t)handler; Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc Mon May 29 22:09:23 2017 (r319164) @@ -832,9 +832,9 @@ void InstallDeadlySignalHandlers(SignalH // FIXME: Decide what to do on Windows. } -bool IsHandledDeadlySignal(int signum) { +HandleSignalMode GetHandleSignalMode(int signum) { // FIXME: Decide what to do on Windows. - return false; + return kHandleSignalNo; } // Check based on flags if we should handle this exception. Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_tls_linux.cpp Mon May 29 22:09:23 2017 (r319164) @@ -18,7 +18,6 @@ #include "scudo_tls.h" -#include <limits.h> #include <pthread.h> namespace __scudo { @@ -32,15 +31,17 @@ __attribute__((tls_model("initial-exec") THREADLOCAL ScudoThreadContext ThreadLocalContext; static void teardownThread(void *Ptr) { - uptr Iteration = reinterpret_cast<uptr>(Ptr); + uptr I = reinterpret_cast<uptr>(Ptr); // The glibc POSIX thread-local-storage deallocation routine calls user // provided destructors in a loop of PTHREAD_DESTRUCTOR_ITERATIONS. // We want to be called last since other destructors might call free and the // like, so we wait until PTHREAD_DESTRUCTOR_ITERATIONS before draining the // quarantine and swallowing the cache. - if (Iteration < PTHREAD_DESTRUCTOR_ITERATIONS) { - pthread_setspecific(PThreadKey, reinterpret_cast<void *>(Iteration + 1)); - return; + if (I > 1) { + // If pthread_setspecific fails, we will go ahead with the teardown. + if (LIKELY(pthread_setspecific(PThreadKey, + reinterpret_cast<void *>(I - 1)) == 0)) + return; } ThreadLocalContext.commitBack(); ScudoThreadState = ThreadTornDown; @@ -53,8 +54,9 @@ static void initOnce() { } void initThread() { - pthread_once(&GlobalInitialized, initOnce); - pthread_setspecific(PThreadKey, reinterpret_cast<void *>(1)); + CHECK_EQ(pthread_once(&GlobalInitialized, initOnce), 0); + CHECK_EQ(pthread_setspecific(PThreadKey, reinterpret_cast<void *>( + GetPthreadDestructorIterations())), 0); ThreadLocalContext.init(); ScudoThreadState = ThreadInitialized; } Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform.h Mon May 29 22:09:23 2017 (r319164) @@ -816,6 +816,7 @@ void FlushShadowMemory(); void WriteMemoryProfile(char *buf, uptr buf_size, uptr nthread, uptr nlive); int ExtractResolvFDs(void *state, int *fds, int nfd); int ExtractRecvmsgFDs(void *msg, int *fds, int nfd); +void ImitateTlsWrite(ThreadState *thr, uptr tls_addr, uptr tls_size); int call_pthread_cancel_with_cleanup(int(*fn)(void *c, void *m, void *abstime), void *c, void *m, void *abstime, Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc Mon May 29 22:09:23 2017 (r319164) @@ -320,6 +320,20 @@ int ExtractRecvmsgFDs(void *msgp, int *f return res; } +void ImitateTlsWrite(ThreadState *thr, uptr tls_addr, uptr tls_size) { + // Check that the thr object is in tls; + const uptr thr_beg = (uptr)thr; + const uptr thr_end = (uptr)thr + sizeof(*thr); + CHECK_GE(thr_beg, tls_addr); + CHECK_LE(thr_beg, tls_addr + tls_size); + CHECK_GE(thr_end, tls_addr); + CHECK_LE(thr_end, tls_addr + tls_size); + // Since the thr object is huge, skip it. + MemoryRangeImitateWrite(thr, /*pc=*/2, tls_addr, thr_beg - tls_addr); + MemoryRangeImitateWrite(thr, /*pc=*/2, thr_end, + tls_addr + tls_size - thr_end); +} + // Note: this function runs with async signals enabled, // so it must not touch any tsan state. int call_pthread_cancel_with_cleanup(int(*fn)(void *c, void *m, Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_platform_mac.cc Mon May 29 22:09:23 2017 (r319164) @@ -75,12 +75,18 @@ static void *SignalSafeGetOrAllocate(upt static uptr main_thread_identity = 0; ALIGNED(64) static char main_thread_state[sizeof(ThreadState)]; +ThreadState **cur_thread_location() { + ThreadState **thread_identity = (ThreadState **)pthread_self(); + return ((uptr)thread_identity == main_thread_identity) ? nullptr + : thread_identity; +} + ThreadState *cur_thread() { - uptr thread_identity = (uptr)pthread_self(); - if (thread_identity == main_thread_identity || main_thread_identity == 0) { + ThreadState **thr_state_loc = cur_thread_location(); + if (thr_state_loc == nullptr || main_thread_identity == 0) { return (ThreadState *)&main_thread_state; } - ThreadState **fake_tls = (ThreadState **)MemToShadow(thread_identity); + ThreadState **fake_tls = (ThreadState **)MemToShadow((uptr)thr_state_loc); ThreadState *thr = (ThreadState *)SignalSafeGetOrAllocate( (uptr *)fake_tls, sizeof(ThreadState)); return thr; @@ -90,13 +96,13 @@ ThreadState *cur_thread() { // munmap first and then clear `fake_tls`; if we receive a signal in between, // handler will try to access the unmapped ThreadState. void cur_thread_finalize() { - uptr thread_identity = (uptr)pthread_self(); - if (thread_identity == main_thread_identity) { + ThreadState **thr_state_loc = cur_thread_location(); + if (thr_state_loc == nullptr) { // Calling dispatch_main() or xpc_main() actually invokes pthread_exit to // exit the main thread. Let's keep the main thread's ThreadState. return; } - ThreadState **fake_tls = (ThreadState **)MemToShadow(thread_identity); + ThreadState **fake_tls = (ThreadState **)MemToShadow((uptr)thr_state_loc); internal_munmap(*fake_tls, sizeof(ThreadState)); *fake_tls = nullptr; } @@ -240,6 +246,29 @@ void InitializePlatform() { } #if !SANITIZER_GO +void ImitateTlsWrite(ThreadState *thr, uptr tls_addr, uptr tls_size) { + // The pointer to the ThreadState object is stored in the shadow memory + // of the tls. + uptr tls_end = tls_addr + tls_size; + ThreadState **thr_state_loc = cur_thread_location(); + if (thr_state_loc == nullptr) { + MemoryRangeImitateWrite(thr, /*pc=*/2, tls_addr, tls_size); + } else { + uptr thr_state_start = (uptr)thr_state_loc; + uptr thr_state_end = thr_state_start + sizeof(uptr); + CHECK_GE(thr_state_start, tls_addr); + CHECK_LE(thr_state_start, tls_addr + tls_size); + CHECK_GE(thr_state_end, tls_addr); + CHECK_LE(thr_state_end, tls_addr + tls_size); + MemoryRangeImitateWrite(thr, /*pc=*/2, tls_addr, + thr_state_start - tls_addr); + MemoryRangeImitateWrite(thr, /*pc=*/2, thr_state_end, + tls_end - thr_state_end); + } +} +#endif + +#if !SANITIZER_GO // Note: this function runs with async signals enabled, // so it must not touch any tsan state. int call_pthread_cancel_with_cleanup(int(*fn)(void *c, void *m, Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc ============================================================================== --- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl_thread.cc Mon May 29 22:09:23 2017 (r319164) @@ -248,19 +248,7 @@ void ThreadStart(ThreadState *thr, int t if (stk_addr && stk_size) MemoryRangeImitateWrite(thr, /*pc=*/ 1, stk_addr, stk_size); - if (tls_addr && tls_size) { - // Check that the thr object is in tls; - const uptr thr_beg = (uptr)thr; - const uptr thr_end = (uptr)thr + sizeof(*thr); - CHECK_GE(thr_beg, tls_addr); - CHECK_LE(thr_beg, tls_addr + tls_size); - CHECK_GE(thr_end, tls_addr); - CHECK_LE(thr_end, tls_addr + tls_size); - // Since the thr object is huge, skip it. - MemoryRangeImitateWrite(thr, /*pc=*/ 2, tls_addr, thr_beg - tls_addr); - MemoryRangeImitateWrite(thr, /*pc=*/ 2, - thr_end, tls_addr + tls_size - thr_end); - } + if (tls_addr && tls_size) ImitateTlsWrite(thr, tls_addr, tls_size); } #endif Modified: projects/clang500-import/contrib/libc++/include/__config ============================================================================== --- projects/clang500-import/contrib/libc++/include/__config Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/libc++/include/__config Mon May 29 22:09:23 2017 (r319164) @@ -1126,6 +1126,10 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit # define _LIBCPP_HAS_NO_IS_AGGREGATE #endif +#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L +# define _LIBCPP_HAS_NO_COROUTINES +#endif + #endif // __cplusplus // Decide whether to use availability macros. Modified: projects/clang500-import/contrib/libc++/include/__threading_support ============================================================================== --- projects/clang500-import/contrib/libc++/include/__threading_support Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/libc++/include/__threading_support Mon May 29 22:09:23 2017 (r319164) @@ -27,7 +27,7 @@ # include <pthread.h> # include <sched.h> #elif defined(_LIBCPP_HAS_THREAD_API_WIN32) -#include <Windows.h> +#include <windows.h> #include <process.h> #include <fibersapi.h> #include <__undef_min_max> Modified: projects/clang500-import/contrib/libc++/include/algorithm ============================================================================== --- projects/clang500-import/contrib/libc++/include/algorithm Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/libc++/include/algorithm Mon May 29 22:09:23 2017 (r319164) @@ -35,6 +35,9 @@ template <class InputIterator, class Fun Function for_each(InputIterator first, InputIterator last, Function f); +template<class InputIterator, class Size, class Function> + InputIterator for_each_n(InputIterator first, Size n, Function f); // C++17 + template <class InputIterator, class T> InputIterator find(InputIterator first, InputIterator last, const T& value); @@ -961,6 +964,26 @@ for_each(_InputIterator __first, _InputI return __f; } +#if _LIBCPP_STD_VER > 14 +// for_each_n + +template <class _InputIterator, class _Size, class _Function> +inline _LIBCPP_INLINE_VISIBILITY +_InputIterator +for_each_n(_InputIterator __first, _Size __orig_n, _Function __f) +{ + typedef decltype(__convert_to_integral(__orig_n)) _IntegralSize; + _IntegralSize __n = __orig_n; + while (__n > 0) + { + __f(*__first); + ++__first; + --__n; + } + return __first; +} +#endif + // find template <class _InputIterator, class _Tp> Modified: projects/clang500-import/contrib/libc++/include/experimental/__config ============================================================================== --- projects/clang500-import/contrib/libc++/include/experimental/__config Mon May 29 21:48:02 2017 (r319163) +++ projects/clang500-import/contrib/libc++/include/experimental/__config Mon May 29 22:09:23 2017 (r319164) @@ -44,6 +44,13 @@ #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_FILESYSTEM \ } } _LIBCPP_END_NAMESPACE_EXPERIMENTAL +#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES \ + _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace coroutines_v1 { + +#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_COROUTINES \ + } _LIBCPP_END_NAMESPACE_EXPERIMENTAL + +#define _VSTD_CORO _VSTD_EXPERIMENTAL::coroutines_v1 #define _VSTD_FS ::std::experimental::filesystem::v1 Copied: projects/clang500-import/contrib/libc++/include/experimental/coroutine (from r319151, vendor/libc++/dist/include/experimental/coroutine) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang500-import/contrib/libc++/include/experimental/coroutine Mon May 29 22:09:23 2017 (r319164, copy of r319151, vendor/libc++/dist/include/experimental/coroutine) @@ -0,0 +1,270 @@ +// -*- C++ -*- +//===----------------------------- coroutine -----------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_EXPERIMENTAL_COROUTINE +#define _LIBCPP_EXPERIMENTAL_COROUTINE + +/** + experimental/coroutine synopsis + +// C++next + +namespace std { +namespace experimental { +inline namespace coroutines_v1 { + + // 18.11.1 coroutine traits +template <typename R, typename... ArgTypes> +class coroutine_traits; +// 18.11.2 coroutine handle +template <typename Promise = void> +class coroutine_handle; +// 18.11.2.7 comparison operators: +bool operator==(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +bool operator!=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +bool operator<(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +bool operator<=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +bool operator>=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +bool operator>(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; +// 18.11.3 trivial awaitables +struct suspend_never; +struct suspend_always; +// 18.11.2.8 hash support: +template <class T> struct hash; +template <class P> struct hash<coroutine_handle<P>>; + +} // namespace coroutines_v1 +} // namespace experimental +} // namespace std + + */ + +#include <experimental/__config> +#include <new> +#include <type_traits> +#include <functional> +#include <memory> // for hash<T*> +#include <cstddef> +#include <cassert> +#include <__debug> + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +#ifdef _LIBCPP_HAS_NO_COROUTINES +# if defined(_LIBCPP_WARNING) + _LIBCPP_WARNING("<experimental/coroutine> cannot be used with this compiler") +# else +# warning <experimental/coroutine> cannot be used with this compiler +# endif +#endif + +#ifndef _LIBCPP_HAS_NO_COROUTINES + +_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES + +template <class _Tp, class = void> +struct __coroutine_traits_sfinae {}; + +template <class _Tp> +struct __coroutine_traits_sfinae< + _Tp, typename __void_t<typename _Tp::promise_type>::type> +{ + using promise_type = typename _Tp::promise_type; +}; + +template <typename _Ret, typename... _Args> +struct _LIBCPP_TEMPLATE_VIS coroutine_traits + : public __coroutine_traits_sfinae<_Ret> +{ +}; + +template <typename _Promise = void> *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705292209.v4TM9OrB023814>