svn commit: r320041 - in projects/clang500-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/sanitizer_common contrib/compiler-rt/lib/tsan/rtl contrib/compiler-rt/lib/ubsan contrib/libc+...
Dimitry Andric
dim at FreeBSD.org
Sat Jun 17 00:09:39 UTC 2017
Author: dim
Date: Sat Jun 17 00:09:34 2017
New Revision: 320041
URL: https://svnweb.freebsd.org/changeset/base/320041
Log:
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r305575, and update
build glue.
Added:
projects/clang500-import/contrib/libc++/src/vector.cpp
- copied unchanged from r320030, vendor/libc++/dist/src/vector.cpp
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
- copied unchanged from r320028, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
projects/clang500-import/contrib/llvm/include/llvm/Testing/
- copied from r320028, vendor/llvm/dist/include/llvm/Testing/
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
- copied unchanged from r320028, vendor/llvm/dist/lib/DebugInfo/CodeView/StringsAndChecksums.cpp
projects/clang500-import/contrib/llvm/lib/Testing/
- copied from r320028, vendor/llvm/dist/lib/Testing/
projects/clang500-import/contrib/llvm/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp
- copied unchanged from r320028, vendor/llvm/dist/lib/Transforms/Instrumentation/PGOMemOPSizeOpt.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Arch/
- copied from r320029, vendor/lld/dist/ELF/Arch/
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/FormatUtil.cpp
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/FormatUtil.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/FormatUtil.h
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/FormatUtil.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/MinimalSymbolDumper.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/MinimalTypeDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/MinimalTypeDumper.h
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/MinimalTypeDumper.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.cpp
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/RawOutputStyle.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/RawOutputStyle.h
- copied unchanged from r320028, vendor/llvm/dist/tools/llvm-pdbutil/RawOutputStyle.h
Deleted:
projects/clang500-import/contrib/llvm/lib/Testing/CMakeLists.txt
projects/clang500-import/contrib/llvm/lib/Testing/LLVMBuild.txt
projects/clang500-import/contrib/llvm/lib/Testing/Support/CMakeLists.txt
projects/clang500-import/contrib/llvm/lib/Testing/Support/LLVMBuild.txt
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LLVMOutputStyle.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/LLVMOutputStyle.h
Modified:
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.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_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_win.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h
projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc
projects/clang500-import/contrib/libc++/include/__bsd_locale_fallbacks.h
projects/clang500-import/contrib/libc++/include/__config
projects/clang500-import/contrib/libc++/include/__functional_03
projects/clang500-import/contrib/libc++/include/__functional_base
projects/clang500-import/contrib/libc++/include/array
projects/clang500-import/contrib/libc++/include/experimental/coroutine
projects/clang500-import/contrib/libc++/include/fstream
projects/clang500-import/contrib/libc++/include/functional
projects/clang500-import/contrib/libc++/include/locale
projects/clang500-import/contrib/libc++/include/memory
projects/clang500-import/contrib/libc++/include/numeric
projects/clang500-import/contrib/libc++/include/utility
projects/clang500-import/contrib/libc++/include/variant
projects/clang500-import/contrib/libc++/src/experimental/filesystem/operations.cpp
projects/clang500-import/contrib/libc++/src/locale.cpp
projects/clang500-import/contrib/llvm/include/llvm/ADT/AllocatorList.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ArrayRef.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/BreadthFirstIterator.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DAGDeltaAlgorithm.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DeltaAlgorithm.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DenseMap.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DenseMapInfo.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DenseSet.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/DepthFirstIterator.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/EquivalenceClasses.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/FoldingSet.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/GraphTraits.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ImmutableList.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ImmutableMap.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ImmutableSet.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/IndexedMap.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/IntervalMap.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/MapVector.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/Optional.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/PackedVector.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/PointerEmbeddedInt.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/PointerUnion.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ScopedHashTable.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallBitVector.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallSet.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/ADT/ilist_base.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ilist_iterator.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/ilist_node.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/iterator.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/simple_ilist.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemorySSA.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/TypeMetadataUtils.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
projects/clang500-import/contrib/llvm/include/llvm/BinaryFormat/ELF.h
projects/clang500-import/contrib/llvm/include/llvm/Bitcode/BitcodeReader.h
projects/clang500-import/contrib/llvm/include/llvm/Bitcode/BitcodeWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Bitcode/LLVMBitCodes.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/RuntimeLibcalls.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CodeView.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/Formatters.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolRecord.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndex.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/DbiModuleList.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/PDBFile.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PublicsStream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/RawConstants.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/SymbolStream.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Constants.h
projects/clang500-import/contrib/llvm/include/llvm/IR/DebugInfoMetadata.h
projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalVariable.h
projects/clang500-import/contrib/llvm/include/llvm/IR/IRBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.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/ModuleSummaryIndex.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/LTO/LTO.h
projects/clang500-import/contrib/llvm/include/llvm/LTO/legacy/LTOModule.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCSymbolWasm.h
projects/clang500-import/contrib/llvm/include/llvm/MC/MCWasmObjectWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Object/ArchiveWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Object/WindowsResource.h
projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/COFFYAML.h
projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
projects/clang500-import/contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
projects/clang500-import/contrib/llvm/include/llvm/Option/Arg.h
projects/clang500-import/contrib/llvm/include/llvm/Option/ArgList.h
projects/clang500-import/contrib/llvm/include/llvm/Option/OptSpecifier.h
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/Support/BinaryStreamArray.h
projects/clang500-import/contrib/llvm/include/llvm/Support/DebugCounter.h
projects/clang500-import/contrib/llvm/include/llvm/Support/FormatAdapters.h
projects/clang500-import/contrib/llvm/include/llvm/Support/FormatCommon.h
projects/clang500-import/contrib/llvm/include/llvm/Support/MathExtras.h
projects/clang500-import/contrib/llvm/include/llvm/Support/ThreadPool.h
projects/clang500-import/contrib/llvm/include/llvm/TableGen/Main.h
projects/clang500-import/contrib/llvm/include/llvm/TableGen/Record.h
projects/clang500-import/contrib/llvm/include/llvm/TableGen/SetTheory.h
projects/clang500-import/contrib/llvm/include/llvm/TableGen/StringMatcher.h
projects/clang500-import/contrib/llvm/include/llvm/Target/TargetLoweringObjectFile.h
projects/clang500-import/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/GVNExpression.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/CodeExtractor.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/Mem2Reg.h
projects/clang500-import/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/CallGraphSCCPass.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/DivergenceAnalysis.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/MemorySSA.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ScalarEvolution.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/Reader/BitcodeReader.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
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/AsmPrinter/DwarfExpression.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineLICM.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.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/SelectionDAG.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SplitKit.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/StackColoring.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/TargetLoweringBase.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugStringTableSubsection.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSubsectionRecord.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/DebugSubsectionVisitor.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/TypeDatabase.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndex.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndexDiscovery.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.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/DWARFVerifier.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.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/PDBFile.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFileBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBStringTable.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBStringTableBuilder.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PublicsStream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/TpiHashing.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/UDTLayout.cpp
projects/clang500-import/contrib/llvm/lib/IR/ConstantFold.cpp
projects/clang500-import/contrib/llvm/lib/IR/ConstantsContext.h
projects/clang500-import/contrib/llvm/lib/IR/DebugInfoMetadata.cpp
projects/clang500-import/contrib/llvm/lib/IR/IRBuilder.cpp
projects/clang500-import/contrib/llvm/lib/IR/Metadata.cpp
projects/clang500-import/contrib/llvm/lib/IR/ModuleSummaryIndex.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/LTOModule.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCParser/ELFAsmParser.cpp
projects/clang500-import/contrib/llvm/lib/MC/MCSectionELF.cpp
projects/clang500-import/contrib/llvm/lib/MC/WasmObjectWriter.cpp
projects/clang500-import/contrib/llvm/lib/Object/ArchiveWriter.cpp
projects/clang500-import/contrib/llvm/lib/Object/ELF.cpp
projects/clang500-import/contrib/llvm/lib/Object/IRSymtab.cpp
projects/clang500-import/contrib/llvm/lib/Object/WindowsResource.cpp
projects/clang500-import/contrib/llvm/lib/ObjectYAML/COFFYAML.cpp
projects/clang500-import/contrib/llvm/lib/ObjectYAML/CodeViewYAMLDebugSections.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/ELFYAML.cpp
projects/clang500-import/contrib/llvm/lib/Option/Arg.cpp
projects/clang500-import/contrib/llvm/lib/Option/ArgList.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/Support/BinaryStreamWriter.cpp
projects/clang500-import/contrib/llvm/lib/Support/DebugCounter.cpp
projects/clang500-import/contrib/llvm/lib/Support/FoldingSet.cpp
projects/clang500-import/contrib/llvm/lib/Support/ThreadPool.cpp
projects/clang500-import/contrib/llvm/lib/Support/Unix/Program.inc
projects/clang500-import/contrib/llvm/lib/TableGen/Record.cpp
projects/clang500-import/contrib/llvm/lib/TableGen/SetTheory.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64.td
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64FastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
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/AArch64TargetTransformInfo.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.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/FLATInstructions.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
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/ARM/ARMCallLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMInstrVFP.td
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFAsmPrinter.cpp
projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/BPF/BPFInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonGenMux.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonPatterns.td
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.h
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsSubtarget.h
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.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/PowerPC/PPCRegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h
projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.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/WebAssemblyTargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
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/X86InstrFragmentsSIMD.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/CrossDSOCFI.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/Inliner.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/IPO/LowerTypeTests.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/IPO/ThinLTOBitcodeWriter.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/InstCombineInternal.h
projects/clang500-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.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/SanitizerCoverage.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVNSink.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/CodeExtractor.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/PredicateInfo.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/AllDiagnostics.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsPPC.def
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSerializationKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Format/Format.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/MacroArgs.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ODRHash.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.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/CGCoroutine.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.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/Driver/ToolChains/Clang.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Format/Format.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Format/NamespaceEndCommentsFixer.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/Format/WhitespaceManager.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/ASTConsumers.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexSymbol.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Lex/MacroArgs.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaCoroutine.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.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/SemaLambda.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaStmt.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/StaticAnalyzer/Core/CallEvent.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/DriverUtils.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/CMakeLists.txt
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/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/LinkerScript.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/MarkLive.cpp
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/Relocations.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/Relocations.h
projects/clang500-import/contrib/llvm/tools/lld/ELF/Strings.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/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/lldb/include/lldb/Core/Debugger.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/StackFrame.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/StackFrameList.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Target/Thread.h
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/Status.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectThread.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Core/Debugger.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Host/common/Symbols.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Target/StackFrame.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Target/StackFrameList.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Target/Thread.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/Status.cpp
projects/clang500-import/contrib/llvm/tools/llvm-ar/llvm-ar.cpp
projects/clang500-import/contrib/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
projects/clang500-import/contrib/llvm/tools/llvm-dwarfdump/llvm-dwarfdump.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/PrettyClassLayoutGraphicalDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbutil/YAMLOutputStyle.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-readobj/COFFDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/ELFDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-stress/llvm-stress.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.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/Support/VCSRevision.h
projects/clang500-import/lib/clang/libllvm/Makefile
projects/clang500-import/lib/libc++/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/lib/asan/asan_allocator.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_allocator.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -235,6 +235,8 @@ struct Allocator {
AllocatorCache fallback_allocator_cache;
QuarantineCache fallback_quarantine_cache;
+ atomic_uint8_t rss_limit_exceeded;
+
// ------------------- Options --------------------------
atomic_uint16_t min_redzone;
atomic_uint16_t max_redzone;
@@ -268,6 +270,14 @@ struct Allocator {
SharedInitCode(options);
}
+ bool RssLimitExceeded() {
+ return atomic_load(&rss_limit_exceeded, memory_order_relaxed);
+ }
+
+ void SetRssLimitExceeded(bool limit_exceeded) {
+ atomic_store(&rss_limit_exceeded, limit_exceeded, memory_order_relaxed);
+ }
+
void RePoisonChunk(uptr chunk) {
// This could be a user-facing chunk (with redzones), or some internal
// housekeeping chunk, like TransferBatch. Start by assuming the former.
@@ -363,6 +373,8 @@ struct Allocator {
AllocType alloc_type, bool can_fill) {
if (UNLIKELY(!asan_inited))
AsanInitFromRtl();
+ if (RssLimitExceeded())
+ return allocator.ReturnNullOrDieOnOOM();
Flags &fl = *flags();
CHECK(stack);
const uptr min_alignment = SHADOW_GRANULARITY;
@@ -400,16 +412,15 @@ struct Allocator {
AsanThread *t = GetCurrentThread();
void *allocated;
- bool check_rss_limit = true;
if (t) {
AllocatorCache *cache = GetAllocatorCache(&t->malloc_storage());
allocated =
- allocator.Allocate(cache, needed_size, 8, false, check_rss_limit);
+ allocator.Allocate(cache, needed_size, 8, false);
} else {
SpinMutexLock l(&fallback_mutex);
AllocatorCache *cache = &fallback_allocator_cache;
allocated =
- allocator.Allocate(cache, needed_size, 8, false, check_rss_limit);
+ allocator.Allocate(cache, needed_size, 8, false);
}
if (!allocated) return allocator.ReturnNullOrDieOnOOM();
@@ -866,8 +877,8 @@ void asan_mz_force_unlock() {
instance.ForceUnlock();
}
-void AsanSoftRssLimitExceededCallback(bool exceeded) {
- instance.allocator.SetRssLimitIsExceeded(exceeded);
+void AsanSoftRssLimitExceededCallback(bool limit_exceeded) {
+ instance.SetRssLimitExceeded(limit_exceeded);
}
} // namespace __asan
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h Sat Jun 17 00:09:34 2017 (r320041)
@@ -43,12 +43,12 @@ class CombinedAllocator {
}
void *Allocate(AllocatorCache *cache, uptr size, uptr alignment,
- bool cleared = false, bool check_rss_limit = false) {
+ bool cleared = false) {
// Returning 0 on malloc(0) may break a lot of code.
if (size == 0)
size = 1;
- if (size + alignment < size) return ReturnNullOrDieOnBadRequest();
- if (check_rss_limit && RssLimitIsExceeded()) return ReturnNullOrDieOnOOM();
+ if (size + alignment < size)
+ return ReturnNullOrDieOnBadRequest();
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
@@ -89,7 +89,8 @@ class CombinedAllocator {
}
void *ReturnNullOrDieOnOOM() {
- if (MayReturnNull()) return nullptr;
+ if (MayReturnNull())
+ return nullptr;
ReportAllocatorCannotReturnNull(true);
}
@@ -106,15 +107,6 @@ class CombinedAllocator {
primary_.SetReleaseToOSIntervalMs(release_to_os_interval_ms);
}
- bool RssLimitIsExceeded() {
- return atomic_load(&rss_limit_is_exceeded_, memory_order_acquire);
- }
-
- void SetRssLimitIsExceeded(bool rss_limit_is_exceeded) {
- atomic_store(&rss_limit_is_exceeded_, rss_limit_is_exceeded,
- memory_order_release);
- }
-
void Deallocate(AllocatorCache *cache, void *p) {
if (!p) return;
if (primary_.PointerIsMine(p))
@@ -228,6 +220,5 @@ class CombinedAllocator {
SecondaryAllocator secondary_;
AllocatorGlobalStats stats_;
atomic_uint8_t may_return_null_;
- atomic_uint8_t rss_limit_is_exceeded_;
};
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_allocator_secondary.h Sat Jun 17 00:09:34 2017 (r320041)
@@ -36,9 +36,12 @@ class LargeMmapAllocator {
if (alignment > page_size_)
map_size += alignment;
// Overflow.
- if (map_size < size) return ReturnNullOrDieOnBadRequest();
+ if (map_size < size)
+ return ReturnNullOrDieOnBadRequest();
uptr map_beg = reinterpret_cast<uptr>(
- MmapOrDie(map_size, "LargeMmapAllocator"));
+ MmapOrDieOnFatalError(map_size, "LargeMmapAllocator"));
+ if (!map_beg)
+ return ReturnNullOrDieOnOOM();
CHECK(IsAligned(map_beg, page_size_));
MapUnmapCallback().OnMap(map_beg, map_size);
uptr map_end = map_beg + map_size;
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h Sat Jun 17 00:09:34 2017 (r320041)
@@ -85,6 +85,9 @@ INLINE void *MmapOrDieQuietly(uptr size, const char *m
return MmapOrDie(size, mem_type, /*raw_report*/ true);
}
void UnmapOrDie(void *addr, uptr size);
+// Behaves just like MmapOrDie, but tolerates out of memory condition, in that
+// case returns nullptr.
+void *MmapOrDieOnFatalError(uptr size, const char *mem_type);
void *MmapFixedNoReserve(uptr fixed_addr, uptr size,
const char *name = nullptr);
void *MmapNoReserveOrDie(uptr size, const char *mem_type);
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Sat Jun 17 00:09:34 2017 (r320041)
@@ -93,6 +93,9 @@ COMMON_FLAG(HandleSignalMode, handle_sigill, kHandleSi
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, true,
+ "Deprecated. True has no effect, use handle_sigbus=1. If false, "
+ "handle_*=1 will be upgraded to handle_*=2.")
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -1396,7 +1396,7 @@ AndroidApiLevel AndroidGetApiLevel() {
#endif
-HandleSignalMode GetHandleSignalMode(int signum) {
+static HandleSignalMode GetHandleSignalModeImpl(int signum) {
switch (signum) {
case SIGABRT:
return common_flags()->handle_abort;
@@ -1410,6 +1410,13 @@ HandleSignalMode GetHandleSignalMode(int signum) {
return common_flags()->handle_sigbus;
}
return kHandleSignalNo;
+}
+
+HandleSignalMode GetHandleSignalMode(int signum) {
+ HandleSignalMode result = GetHandleSignalModeImpl(signum);
+ if (result == kHandleSignalYes && !common_flags()->allow_user_segv_handler)
+ return kHandleSignalExclusive;
+ return result;
}
#if !SANITIZER_GO
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -113,7 +113,6 @@ void GetThreadStackTopAndBottom(bool at_initialization
my_pthread_attr_getstack(&attr, &stackaddr, &stacksize);
pthread_attr_destroy(&attr);
- CHECK_LE(stacksize, kMaxThreadStackSize); // Sanity check.
*stack_top = (uptr)stackaddr + stacksize;
*stack_bottom = (uptr)stackaddr;
}
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -414,10 +414,7 @@ void ListOfModules::init() {
memory_mapping.DumpListOfModules(&modules_);
}
-HandleSignalMode GetHandleSignalMode(int signum) {
- // Handling fatal signals on watchOS and tvOS devices is disallowed.
- if ((SANITIZER_WATCHOS || SANITIZER_TVOS) && !(SANITIZER_IOSSIM))
- return kHandleSignalNo;
+static HandleSignalMode GetHandleSignalModeImpl(int signum) {
switch (signum) {
case SIGABRT:
return common_flags()->handle_abort;
@@ -431,6 +428,16 @@ HandleSignalMode GetHandleSignalMode(int signum) {
return common_flags()->handle_sigbus;
}
return kHandleSignalNo;
+}
+
+HandleSignalMode GetHandleSignalMode(int signum) {
+ // Handling fatal signals on watchOS and tvOS devices is disallowed.
+ if ((SANITIZER_WATCHOS || SANITIZER_TVOS) && !(SANITIZER_IOSSIM))
+ return kHandleSignalNo;
+ HandleSignalMode result = GetHandleSignalModeImpl(signum);
+ if (result == kHandleSignalYes && !common_flags()->allow_user_segv_handler)
+ return kHandleSignalExclusive;
+ return result;
}
MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -22,6 +22,7 @@
#include "sanitizer_procmaps.h"
#include "sanitizer_stacktrace.h"
+#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/mman.h>
@@ -143,6 +144,21 @@ void UnmapOrDie(void *addr, uptr size) {
CHECK("unable to unmap" && 0);
}
DecreaseTotalMmap(size);
+}
+
+void *MmapOrDieOnFatalError(uptr size, const char *mem_type) {
+ size = RoundUpTo(size, GetPageSizeCached());
+ uptr res = internal_mmap(nullptr, size,
+ PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANON, -1, 0);
+ int reserrno;
+ if (internal_iserror(res, &reserrno)) {
+ if (reserrno == ENOMEM)
+ return nullptr;
+ ReportMmapFailureAndDie(size, mem_type, "allocate", reserrno);
+ }
+ IncreaseTotalMmap(size);
+ return (void *)res;
}
// We want to map a chunk of address space aligned to 'alignment'.
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 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -131,6 +131,16 @@ void UnmapOrDie(void *addr, uptr size) {
}
}
+void *MmapOrDieOnFatalError(uptr size, const char *mem_type) {
+ void *rv = VirtualAlloc(0, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
+ if (rv == 0) {
+ error_t last_error = GetLastError();
+ if (last_error != ERROR_NOT_ENOUGH_MEMORY)
+ ReportMmapFailureAndDie(size, mem_type, "allocate", last_error);
+ }
+ return rv;
+}
+
// We want to map a chunk of address space aligned to 'alignment'.
void *MmapAlignedOrDie(uptr size, uptr alignment, const char *mem_type) {
CHECK(IsPowerOfTwo(size));
Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_report.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -92,7 +92,8 @@ static const char *ReportTypeString(ReportType typ, up
if (typ == ReportTypeVptrUseAfterFree)
return "heap-use-after-free (virtual call vs free)";
if (typ == ReportTypeExternalRace) {
- return GetReportHeaderFromTag(tag) ?: "race on external object";
+ const char *str = GetReportHeaderFromTag(tag);
+ return str ? str : "race on external object";
}
if (typ == ReportTypeThreadLeak)
return "thread leak";
@@ -170,8 +171,9 @@ static void PrintMop(const ReportMop *mop, bool first)
MopDesc(first, mop->write, mop->atomic), mop->size,
(void *)mop->addr, thread_name(thrbuf, mop->tid));
} else {
- const char *object_type =
- GetObjectTypeFromTag(mop->external_tag) ?: "external object";
+ const char *object_type = GetObjectTypeFromTag(mop->external_tag);
+ if (object_type == nullptr)
+ object_type = "external object";
Printf(" %s access of %s at %p by %s",
ExternalMopDesc(first, mop->write), object_type,
(void *)mop->addr, thread_name(thrbuf, mop->tid));
Modified: projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/tsan/rtl/tsan_sync.h Sat Jun 17 00:09:34 2017 (r320041)
@@ -83,7 +83,7 @@ struct SyncVar {
}
bool IsFlagSet(u32 f) const {
- return atomic_load_relaxed(&flags);
+ return atomic_load_relaxed(&flags) & f;
}
void SetFlags(u32 f) {
Modified: projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_handlers.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -566,8 +566,14 @@ static void handlePointerOverflowImpl(PointerOverflowD
ScopedReport R(Opts, Loc, ET);
- Diag(Loc, DL_Error, "pointer index expression with base %0 overflowed to %1")
- << (void *)Base << (void*)Result;
+ if ((sptr(Base) >= 0) == (sptr(Result) >= 0))
+ Diag(Loc, DL_Error, "unsigned pointer index expression result is %0, "
+ "preceding its base %1")
+ << (void *)Result << (void *)Base;
+ else
+ Diag(Loc, DL_Error,
+ "pointer index expression with base %0 overflowed to %1")
+ << (void *)Base << (void *)Result;
}
void __ubsan::__ubsan_handle_pointer_overflow(PointerOverflowData *Data,
Modified: projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/compiler-rt/lib/ubsan/ubsan_type_hash_itanium.cc Sat Jun 17 00:09:34 2017 (r320041)
@@ -197,9 +197,9 @@ struct VtablePrefix {
};
VtablePrefix *getVtablePrefix(void *Vtable) {
VtablePrefix *Vptr = reinterpret_cast<VtablePrefix*>(Vtable);
- if (!IsAccessibleMemoryRange((uptr)Vptr, sizeof(VtablePrefix)))
- return nullptr;
VtablePrefix *Prefix = Vptr - 1;
+ if (!IsAccessibleMemoryRange((uptr)Prefix, sizeof(VtablePrefix)))
+ return nullptr;
if (!Prefix->TypeInfo)
// This can't possibly be a valid vtable.
return nullptr;
Modified: projects/clang500-import/contrib/libc++/include/__bsd_locale_fallbacks.h
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__bsd_locale_fallbacks.h Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/__bsd_locale_fallbacks.h Sat Jun 17 00:09:34 2017 (r320041)
@@ -15,6 +15,7 @@
#define _LIBCPP_BSD_LOCALE_FALLBACKS_DEFAULTS_H
#include <stdlib.h>
+#include <stdarg.h>
#include <memory>
_LIBCPP_BEGIN_NAMESPACE_STD
Modified: projects/clang500-import/contrib/libc++/include/__config
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__config Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/__config Sat Jun 17 00:09:34 2017 (r320041)
@@ -76,6 +76,9 @@
// its vtable and typeinfo to libc++ rather than having all other libraries
// using that class define their own copies.
#define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION
+
+// Enable optimized version of __do_get_(un)signed which avoids redundant copies.
+#define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
#elif _LIBCPP_ABI_VERSION == 1
#if !defined(_LIBCPP_OBJECT_FORMAT_COFF)
// Enable compiling copies of now inline methods into the dylib to support
@@ -289,7 +292,7 @@
# endif
#endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
-#if __has_attribute(__no_sanitize__)
+#if __has_attribute(__no_sanitize__) && !defined(_LIBCPP_COMPILER_GCC)
#define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi")))
#else
#define _LIBCPP_NO_CFI
@@ -1132,8 +1135,6 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_
# define _LIBCPP_HAS_NO_COROUTINES
#endif
-#endif // __cplusplus
-
// Decide whether to use availability macros.
#if !defined(_LIBCPP_BUILDING_LIBRARY) && \
!defined(_LIBCPP_DISABLE_AVAILABILITY) && \
@@ -1236,5 +1237,8 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_
_Pragma("pop_macro(\"max\")")
# endif
#endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO)
+
+
+#endif // __cplusplus
#endif // _LIBCPP_CONFIG
Modified: projects/clang500-import/contrib/libc++/include/__functional_03
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__functional_03 Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/__functional_03 Sat Jun 17 00:09:34 2017 (r320041)
@@ -704,7 +704,7 @@ function<_Rp()>::target()
{
if (__f_ == 0)
return (_Tp*)0;
- return (_Tp*)__f_->target(typeid(_Tp));
+ return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}
template<class _Rp>
@@ -980,7 +980,7 @@ function<_Rp(_A0)>::target()
{
if (__f_ == 0)
return (_Tp*)0;
- return (_Tp*)__f_->target(typeid(_Tp));
+ return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}
template<class _Rp, class _A0>
@@ -1256,7 +1256,7 @@ function<_Rp(_A0, _A1)>::target()
{
if (__f_ == 0)
return (_Tp*)0;
- return (_Tp*)__f_->target(typeid(_Tp));
+ return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}
template<class _Rp, class _A0, class _A1>
@@ -1532,7 +1532,7 @@ function<_Rp(_A0, _A1, _A2)>::target()
{
if (__f_ == 0)
return (_Tp*)0;
- return (_Tp*)__f_->target(typeid(_Tp));
+ return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}
template<class _Rp, class _A0, class _A1, class _A2>
Modified: projects/clang500-import/contrib/libc++/include/__functional_base
==============================================================================
--- projects/clang500-import/contrib/libc++/include/__functional_base Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/__functional_base Sat Jun 17 00:09:34 2017 (r320041)
@@ -548,16 +548,13 @@ template <class _Tp> void cref(const _Tp&&) = delete;
#endif
#if _LIBCPP_STD_VER > 11
-template <class _Tp1, class _Tp2 = void>
-struct __is_transparent
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_transparent* = 0);
-public:
- static const bool value = sizeof(__test<_Tp1>(0)) == 1;
-};
+template <class _Tp, class, class = void>
+struct __is_transparent : false_type {};
+
+template <class _Tp, class _Up>
+struct __is_transparent<_Tp, _Up,
+ typename __void_t<typename _Tp::is_transparent>::type>
+ : true_type {};
#endif
// allocator_arg_t
Modified: projects/clang500-import/contrib/libc++/include/array
==============================================================================
--- projects/clang500-import/contrib/libc++/include/array Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/array Sat Jun 17 00:09:34 2017 (r320041)
@@ -296,6 +296,7 @@ class _LIBCPP_TEMPLATE_VIS tuple_size<array<_Tp, _Size
template <size_t _Ip, class _Tp, size_t _Size>
class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, array<_Tp, _Size> >
{
+ static_assert(_Ip < _Size, "Index out of bounds in std::tuple_element<> (std::array)");
public:
typedef _Tp type;
};
Modified: projects/clang500-import/contrib/libc++/include/experimental/coroutine
==============================================================================
--- projects/clang500-import/contrib/libc++/include/experimental/coroutine Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/experimental/coroutine Sat Jun 17 00:09:34 2017 (r320041)
@@ -250,9 +250,11 @@ class _LIBCPP_TEMPLATE_VIS coroutine_handle : public c
_LIBCPP_ALWAYS_INLINE
static coroutine_handle from_promise(_Promise& __promise) _NOEXCEPT {
+ typedef typename remove_cv<_Promise>::type _RawPromise;
coroutine_handle __tmp;
- __tmp.__handle_ = __builtin_coro_promise(_VSTD::addressof(__promise),
- __alignof(_Promise), true);
+ __tmp.__handle_ = __builtin_coro_promise(
+ _VSTD::addressof(const_cast<_RawPromise&>(__promise)),
+ __alignof(_Promise), true);
return __tmp;
}
};
Modified: projects/clang500-import/contrib/libc++/include/fstream
==============================================================================
--- projects/clang500-import/contrib/libc++/include/fstream Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/fstream Sat Jun 17 00:09:34 2017 (r320041)
@@ -617,7 +617,7 @@ basic_filebuf<_CharT, _Traits>::underflow()
static_cast<size_t>(__extbufend_ - __extbufnext_));
codecvt_base::result __r;
__st_last_ = __st_;
- size_t __nr = fread((void*)__extbufnext_, 1, __nmemb, __file_);
+ size_t __nr = fread((void*) const_cast<char *>(__extbufnext_), 1, __nmemb, __file_);
if (__nr != 0)
{
if (!__cv_)
@@ -630,7 +630,8 @@ basic_filebuf<_CharT, _Traits>::underflow()
this->eback() + __ibs_, __inext);
if (__r == codecvt_base::noconv)
{
- this->setg((char_type*)__extbuf_, (char_type*)__extbuf_, (char_type*)__extbufend_);
+ this->setg((char_type*)__extbuf_, (char_type*)__extbuf_,
+ (char_type*)const_cast<char *>(__extbufend_));
__c = traits_type::to_int_type(*this->gptr());
}
else if (__inext != this->eback() + __unget_sz)
@@ -722,7 +723,7 @@ basic_filebuf<_CharT, _Traits>::overflow(int_type __c)
return traits_type::eof();
if (__r == codecvt_base::partial)
{
- this->setp((char_type*)__e, this->pptr());
+ this->setp(const_cast<char_type*>(__e), this->pptr());
this->pbump(this->epptr() - this->pbase());
}
}
Modified: projects/clang500-import/contrib/libc++/include/functional
==============================================================================
--- projects/clang500-import/contrib/libc++/include/functional Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/functional Sat Jun 17 00:09:34 2017 (r320041)
@@ -1941,8 +1941,8 @@ _Tp*
function<_Rp(_ArgTypes...)>::target() _NOEXCEPT
{
if (__f_ == 0)
- return (_Tp*)0;
- return (_Tp*)__f_->target(typeid(_Tp));
+ return nullptr;
+ return (_Tp*) const_cast<void *>(__f_->target(typeid(_Tp)));
}
template<class _Rp, class ..._ArgTypes>
@@ -1951,7 +1951,7 @@ const _Tp*
function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT
{
if (__f_ == 0)
- return (const _Tp*)0;
+ return nullptr;
return (const _Tp*)__f_->target(typeid(_Tp));
}
Modified: projects/clang500-import/contrib/libc++/include/locale
==============================================================================
--- projects/clang500-import/contrib/libc++/include/locale Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/locale Sat Jun 17 00:09:34 2017 (r320041)
@@ -372,19 +372,57 @@ template <class _CharT>
struct __num_get
: protected __num_get_base
{
- static string __stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep);
static string __stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point,
_CharT& __thousands_sep);
- static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
- unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
- unsigned* __g, unsigned*& __g_end, _CharT* __atoms);
+
static int __stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp,
char* __a, char*& __a_end,
_CharT __decimal_point, _CharT __thousands_sep,
const string& __grouping, unsigned* __g,
unsigned*& __g_end, unsigned& __dc, _CharT* __atoms);
+#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
+ static string __stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep);
+ static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
+ unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
+ unsigned* __g, unsigned*& __g_end, _CharT* __atoms);
+
+#else
+ static string __stage2_int_prep(ios_base& __iob, _CharT& __thousands_sep)
+ {
+ locale __loc = __iob.getloc();
+ const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
+ __thousands_sep = __np.thousands_sep();
+ return __np.grouping();
+ }
+
+ const _CharT* __do_widen(ios_base& __iob, _CharT* __atoms) const
+ {
+ return __do_widen_p(__iob, __atoms);
+ }
+
+
+ static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
+ unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
+ unsigned* __g, unsigned*& __g_end, const _CharT* __atoms);
+private:
+ template<typename T>
+ const T* __do_widen_p(ios_base& __iob, T* __atoms) const
+ {
+ locale __loc = __iob.getloc();
+ use_facet<ctype<T> >(__loc).widen(__src, __src + 26, __atoms);
+ return __atoms;
+ }
+
+ const char* __do_widen_p(ios_base& __iob, char* __atoms) const
+ {
+ (void)__iob;
+ (void)__atoms;
+ return __src;
+ }
+#endif
};
+#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
template <class _CharT>
string
__num_get<_CharT>::__stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep)
@@ -395,6 +433,7 @@ __num_get<_CharT>::__stage2_int_prep(ios_base& __iob,
__thousands_sep = __np.thousands_sep();
return __np.grouping();
}
+#endif
template <class _CharT>
string
@@ -411,9 +450,16 @@ __num_get<_CharT>::__stage2_float_prep(ios_base& __iob
template <class _CharT>
int
+#ifndef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
__num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
unsigned* __g, unsigned*& __g_end, _CharT* __atoms)
+#else
+__num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
+ unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
+ unsigned* __g, unsigned*& __g_end, const _CharT* __atoms)
+
+#endif
{
if (__a_end == __a && (__ct == __atoms[24] || __ct == __atoms[25]))
{
@@ -849,9 +895,16 @@ num_get<_CharT, _InputIterator>::__do_get_signed(iter_
// Stage 1
int __base = this->__get_base(__iob);
// Stage 2
- char_type __atoms[26];
char_type __thousands_sep;
+ const int __atoms_size = 26;
+#ifdef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
+ char_type __atoms1[__atoms_size];
+ const char_type *__atoms = this->__do_widen(__iob, __atoms1);
+ string __grouping = this->__stage2_int_prep(__iob, __thousands_sep);
+#else
+ char_type __atoms[__atoms_size];
string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
+#endif
string __buf;
__buf.resize(__buf.capacity());
char* __a = &__buf[0];
@@ -899,9 +952,16 @@ num_get<_CharT, _InputIterator>::__do_get_unsigned(ite
// Stage 1
int __base = this->__get_base(__iob);
// Stage 2
- char_type __atoms[26];
char_type __thousands_sep;
+ const int __atoms_size = 26;
+#ifdef _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
+ char_type __atoms1[__atoms_size];
+ const char_type *__atoms = this->__do_widen(__iob, __atoms1);
+ string __grouping = this->__stage2_int_prep(__iob, __thousands_sep);
+#else
+ char_type __atoms[__atoms_size];
string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
+#endif
string __buf;
__buf.resize(__buf.capacity());
char* __a = &__buf[0];
@@ -3960,7 +4020,8 @@ wbuffer_convert<_Codecvt, _Elem, _Tr>::underflow()
this->egptr(), __inext);
if (__r == codecvt_base::noconv)
{
- this->setg((char_type*)__extbuf_, (char_type*)__extbuf_, (char_type*)__extbufend_);
+ this->setg((char_type*)__extbuf_, (char_type*)__extbuf_,
+ (char_type*) const_cast<char *>(__extbufend_));
__c = *this->gptr();
}
else if (__inext != this->eback() + __unget_sz)
@@ -4048,7 +4109,7 @@ wbuffer_convert<_Codecvt, _Elem, _Tr>::overflow(int_ty
return traits_type::eof();
if (__r == codecvt_base::partial)
{
- this->setp((char_type*)__e, this->pptr());
+ this->setp(const_cast<char_type *>(__e), this->pptr());
this->pbump(this->epptr() - this->pbase());
}
}
Modified: projects/clang500-import/contrib/libc++/include/memory
==============================================================================
--- projects/clang500-import/contrib/libc++/include/memory Fri Jun 16 23:43:05 2017 (r320040)
+++ projects/clang500-import/contrib/libc++/include/memory Sat Jun 17 00:09:34 2017 (r320041)
@@ -720,16 +720,12 @@ class _LIBCPP_TEMPLATE_VIS allocator<const void> (publ
// pointer_traits
+template <class _Tp, class = void>
+struct __has_element_type : false_type {};
+
template <class _Tp>
-struct __has_element_type
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::element_type* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_element_type<_Tp,
+ typename __void_t<typename _Tp::element_type>::type> : true_type {};
template <class _Ptr, bool = __has_element_type<_Ptr>::value>
struct __pointer_traits_element_type;
@@ -808,16 +804,12 @@ struct __pointer_traits_element_type<_Sp<_Tp, _A0, _A1
#endif // _LIBCPP_HAS_NO_VARIADICS
+template <class _Tp, class = void>
+struct __has_difference_type : false_type {};
+
template <class _Tp>
-struct __has_difference_type
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::difference_type* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_difference_type<_Tp,
+ typename __void_t<typename _Tp::difference_type>::type> : true_type {};
template <class _Ptr, bool = __has_difference_type<_Ptr>::value>
struct __pointer_traits_difference_type
@@ -998,17 +990,12 @@ struct __rebind_pointer {
// allocator_traits
-struct __has_pointer_type_imp
-{
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::pointer* = 0);
-};
+template <class _Tp, class = void>
+struct __has_pointer_type : false_type {};
template <class _Tp>
-struct __has_pointer_type
- : public integral_constant<bool, sizeof(__has_pointer_type_imp::__test<_Tp>(0)) == 1>
-{
-};
+struct __has_pointer_type<_Tp,
+ typename __void_t<typename _Tp::pointer>::type> : true_type {};
namespace __pointer_type_imp
{
@@ -1033,16 +1020,12 @@ struct __pointer_type
typedef typename __pointer_type_imp::__pointer_type<_Tp, typename remove_reference<_Dp>::type>::type type;
};
+template <class _Tp, class = void>
+struct __has_const_pointer : false_type {};
+
template <class _Tp>
-struct __has_const_pointer
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::const_pointer* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_const_pointer<_Tp,
+ typename __void_t<typename _Tp::const_pointer>::type> : true_type {};
template <class _Tp, class _Ptr, class _Alloc, bool = __has_const_pointer<_Alloc>::value>
struct __const_pointer
@@ -1060,16 +1043,12 @@ struct __const_pointer<_Tp, _Ptr, _Alloc, false>
#endif
};
+template <class _Tp, class = void>
+struct __has_void_pointer : false_type {};
+
template <class _Tp>
-struct __has_void_pointer
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::void_pointer* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_void_pointer<_Tp,
+ typename __void_t<typename _Tp::void_pointer>::type> : true_type {};
template <class _Ptr, class _Alloc, bool = __has_void_pointer<_Alloc>::value>
struct __void_pointer
@@ -1087,16 +1066,12 @@ struct __void_pointer<_Ptr, _Alloc, false>
#endif
};
+template <class _Tp, class = void>
+struct __has_const_void_pointer : false_type {};
+
template <class _Tp>
-struct __has_const_void_pointer
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::const_void_pointer* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_const_void_pointer<_Tp,
+ typename __void_t<typename _Tp::const_void_pointer>::type> : true_type {};
template <class _Ptr, class _Alloc, bool = __has_const_void_pointer<_Alloc>::value>
struct __const_void_pointer
@@ -1130,16 +1105,12 @@ __to_raw_pointer(_Pointer __p) _NOEXCEPT
return _VSTD::__to_raw_pointer(__p.operator->());
}
+template <class _Tp, class = void>
+struct __has_size_type : false_type {};
+
template <class _Tp>
-struct __has_size_type
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::size_type* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_size_type<_Tp,
+ typename __void_t<typename _Tp::size_type>::type> : true_type {};
template <class _Alloc, class _DiffType, bool = __has_size_type<_Alloc>::value>
struct __size_type
@@ -1153,16 +1124,13 @@ struct __size_type<_Alloc, _DiffType, true>
typedef typename _Alloc::size_type type;
};
+template <class _Tp, class = void>
+struct __has_propagate_on_container_copy_assignment : false_type {};
+
template <class _Tp>
-struct __has_propagate_on_container_copy_assignment
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::propagate_on_container_copy_assignment* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_propagate_on_container_copy_assignment<_Tp,
+ typename __void_t<typename _Tp::propagate_on_container_copy_assignment>::type>
+ : true_type {};
template <class _Alloc, bool = __has_propagate_on_container_copy_assignment<_Alloc>::value>
struct __propagate_on_container_copy_assignment
@@ -1176,16 +1144,13 @@ struct __propagate_on_container_copy_assignment<_Alloc
typedef typename _Alloc::propagate_on_container_copy_assignment type;
};
+template <class _Tp, class = void>
+struct __has_propagate_on_container_move_assignment : false_type {};
+
template <class _Tp>
-struct __has_propagate_on_container_move_assignment
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::propagate_on_container_move_assignment* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_propagate_on_container_move_assignment<_Tp,
+ typename __void_t<typename _Tp::propagate_on_container_move_assignment>::type>
+ : true_type {};
template <class _Alloc, bool = __has_propagate_on_container_move_assignment<_Alloc>::value>
struct __propagate_on_container_move_assignment
@@ -1199,16 +1164,13 @@ struct __propagate_on_container_move_assignment<_Alloc
typedef typename _Alloc::propagate_on_container_move_assignment type;
};
+template <class _Tp, class = void>
+struct __has_propagate_on_container_swap : false_type {};
+
template <class _Tp>
-struct __has_propagate_on_container_swap
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::propagate_on_container_swap* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_propagate_on_container_swap<_Tp,
+ typename __void_t<typename _Tp::propagate_on_container_swap>::type>
+ : true_type {};
template <class _Alloc, bool = __has_propagate_on_container_swap<_Alloc>::value>
struct __propagate_on_container_swap
@@ -1222,16 +1184,13 @@ struct __propagate_on_container_swap<_Alloc, true>
typedef typename _Alloc::propagate_on_container_swap type;
};
+template <class _Tp, class = void>
+struct __has_is_always_equal : false_type {};
+
template <class _Tp>
-struct __has_is_always_equal
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_always_equal* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
+struct __has_is_always_equal<_Tp,
+ typename __void_t<typename _Tp::is_always_equal>::type>
+ : true_type {};
template <class _Alloc, bool = __has_is_always_equal<_Alloc>::value>
struct __is_always_equal
@@ -1884,7 +1843,7 @@ class _LIBCPP_TEMPLATE_VIS allocator<const _Tp> (publi
return static_cast<pointer>(_VSTD::__allocate(__n * sizeof(_Tp)));
}
_LIBCPP_INLINE_VISIBILITY void deallocate(pointer __p, size_type) _NOEXCEPT
- {_VSTD::__libcpp_deallocate((void*)__p);}
+ {_VSTD::__libcpp_deallocate((void*) const_cast<_Tp *>(__p));}
_LIBCPP_INLINE_VISIBILITY size_type max_size() const _NOEXCEPT
{return size_type(~0) / sizeof(_Tp);}
#if !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
@@ -1900,7 +1859,7 @@ class _LIBCPP_TEMPLATE_VIS allocator<const _Tp> (publi
void
construct(pointer __p)
{
- ::new((void*)__p) _Tp();
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp();
}
# if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
@@ -1909,14 +1868,14 @@ class _LIBCPP_TEMPLATE_VIS allocator<const _Tp> (publi
void
construct(pointer __p, _A0& __a0)
{
- ::new((void*)__p) _Tp(__a0);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0);
}
template <class _A0>
_LIBCPP_INLINE_VISIBILITY
void
construct(pointer __p, const _A0& __a0)
{
- ::new((void*)__p) _Tp(__a0);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0);
}
# endif // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
template <class _A0, class _A1>
@@ -1924,28 +1883,28 @@ class _LIBCPP_TEMPLATE_VIS allocator<const _Tp> (publi
void
construct(pointer __p, _A0& __a0, _A1& __a1)
{
- ::new((void*)__p) _Tp(__a0, __a1);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
}
template <class _A0, class _A1>
_LIBCPP_INLINE_VISIBILITY
void
construct(pointer __p, const _A0& __a0, _A1& __a1)
{
- ::new((void*)__p) _Tp(__a0, __a1);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
}
template <class _A0, class _A1>
_LIBCPP_INLINE_VISIBILITY
void
construct(pointer __p, _A0& __a0, const _A1& __a1)
{
- ::new((void*)__p) _Tp(__a0, __a1);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
}
template <class _A0, class _A1>
_LIBCPP_INLINE_VISIBILITY
void
construct(pointer __p, const _A0& __a0, const _A1& __a1)
{
- ::new((void*)__p) _Tp(__a0, __a1);
+ ::new((void*) const_cast<_Tp *>(__p)) _Tp(__a0, __a1);
}
#endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->~_Tp();}
@@ -3890,7 +3849,9 @@ class _LIBCPP_TEMPLATE_VIS shared_ptr (public)
template <class _Dp>
_LIBCPP_INLINE_VISIBILITY
_Dp* __get_deleter() const _NOEXCEPT
- {return (_Dp*)(__cntrl_ ? __cntrl_->__get_deleter(typeid(_Dp)) : 0);}
+ {return static_cast<_Dp*>(__cntrl_
+ ? const_cast<void *>(__cntrl_->__get_deleter(typeid(_Dp)))
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list