svn commit: r318681 - in projects/clang500-import: contrib/compiler-rt/include/xray contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/lsan contrib/compiler-rt/lib/msan contrib/compiler-rt/lib/sa...
Dimitry Andric
dim at FreeBSD.org
Mon May 22 21:17:49 UTC 2017
Author: dim
Date: Mon May 22 21:17:44 2017
New Revision: 318681
URL: https://svnweb.freebsd.org/changeset/base/318681
Log:
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r303571, and update
build glue.
Added:
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeCollection.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeCollection.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
projects/clang500-import/contrib/llvm/include/llvm/IR/DerivedUser.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/IR/DerivedUser.h
projects/clang500-import/contrib/llvm/include/llvm/Object/COFFModuleDefinition.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/Object/COFFModuleDefinition.h
projects/clang500-import/contrib/llvm/include/llvm/Object/WindowsResource.h
- copied unchanged from r318674, vendor/llvm/dist/include/llvm/Object/WindowsResource.h
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeIndex.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeIndex.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeTableCollection.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeTableCollection.cpp
projects/clang500-import/contrib/llvm/lib/Object/COFFImportFile.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/Object/COFFImportFile.cpp
projects/clang500-import/contrib/llvm/lib/Object/COFFModuleDefinition.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/Object/COFFModuleDefinition.cpp
projects/clang500-import/contrib/llvm/lib/Object/WindowsResource.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/Object/WindowsResource.cpp
projects/clang500-import/contrib/llvm/lib/Support/BinaryStreamRef.cpp
- copied unchanged from r318674, vendor/llvm/dist/lib/Support/BinaryStreamRef.cpp
Deleted:
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/RandomAccessTypeVisitor.h
projects/clang500-import/contrib/llvm/lib/CodeGen/LiveRangeShrink.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeDumper.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/RandomAccessTypeVisitor.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/Librarian.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/ModuleDef.cpp
Modified:
projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
projects/clang500-import/contrib/compiler-rt/lib/asan/asan_flags.cc
projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc
projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
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_libcdep.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc
projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_flags.cpp
projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc
projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallPtrSet.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/Statistic.h
projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.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/TargetLibraryInfo.h
projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/MachineValueType.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/Passes.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/StackProtector.h
projects/clang500-import/contrib/llvm/include/llvm/CodeGen/ValueTypes.td
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/SymbolDumper.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeIndex.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/TypeVisitorCallbacks.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/PDBTypeServerHandler.h
projects/clang500-import/contrib/llvm/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Argument.h
projects/clang500-import/contrib/llvm/include/llvm/IR/BasicBlock.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Constant.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Constants.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Function.h
projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalValue.h
projects/clang500-import/contrib/llvm/include/llvm/IR/GlobalVariable.h
projects/clang500-import/contrib/llvm/include/llvm/IR/InlineAsm.h
projects/clang500-import/contrib/llvm/include/llvm/IR/InstrTypes.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Instruction.def
projects/clang500-import/contrib/llvm/include/llvm/IR/Instruction.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Instructions.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Metadata.h
projects/clang500-import/contrib/llvm/include/llvm/IR/OperandTraits.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Operator.h
projects/clang500-import/contrib/llvm/include/llvm/IR/PatternMatch.h
projects/clang500-import/contrib/llvm/include/llvm/IR/User.h
projects/clang500-import/contrib/llvm/include/llvm/IR/Value.def
projects/clang500-import/contrib/llvm/include/llvm/IR/Value.h
projects/clang500-import/contrib/llvm/include/llvm/InitializePasses.h
projects/clang500-import/contrib/llvm/include/llvm/Object/Binary.h
projects/clang500-import/contrib/llvm/include/llvm/Object/COFFImportFile.h
projects/clang500-import/contrib/llvm/include/llvm/Object/Decompressor.h
projects/clang500-import/contrib/llvm/include/llvm/Object/ELF.h
projects/clang500-import/contrib/llvm/include/llvm/Object/RelocVisitor.h
projects/clang500-import/contrib/llvm/include/llvm/PassInfo.h
projects/clang500-import/contrib/llvm/include/llvm/PassSupport.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamReader.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamRef.h
projects/clang500-import/contrib/llvm/include/llvm/Support/BinaryStreamWriter.h
projects/clang500-import/contrib/llvm/include/llvm/Support/FileSystem.h
projects/clang500-import/contrib/llvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
projects/clang500-import/contrib/llvm/include/llvm/Transforms/IPO/FunctionImport.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Scalar/GVNExpression.h
projects/clang500-import/contrib/llvm/include/llvm/Transforms/Utils/SimplifyLibCalls.h
projects/clang500-import/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/CallGraphSCCPass.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/InstructionSimplify.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/TargetLibraryInfo.cpp
projects/clang500-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
projects/clang500-import/contrib/llvm/lib/AsmParser/LLParser.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
projects/clang500-import/contrib/llvm/lib/Bitcode/Reader/ValueList.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/AtomicExpandPass.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGen.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/InterleavedAccessPass.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/LowerEmuTLS.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/PrologEpilogInserter.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/RegisterCoalescer.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SafeStack.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SafeStackColoring.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/StackProtector.cpp
projects/clang500-import/contrib/llvm/lib/CodeGen/TargetPassConfig.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/SymbolDumper.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.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/DWARF/DWARFContext.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/DbiStream.cpp
projects/clang500-import/contrib/llvm/lib/DebugInfo/PDB/Native/PDBFileBuilder.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/DebugInfo/PDB/Native/TpiStreamBuilder.cpp
projects/clang500-import/contrib/llvm/lib/Demangle/ItaniumDemangle.cpp
projects/clang500-import/contrib/llvm/lib/IR/Attributes.cpp
projects/clang500-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
projects/clang500-import/contrib/llvm/lib/IR/Constants.cpp
projects/clang500-import/contrib/llvm/lib/IR/ConstantsContext.h
projects/clang500-import/contrib/llvm/lib/IR/DataLayout.cpp
projects/clang500-import/contrib/llvm/lib/IR/Function.cpp
projects/clang500-import/contrib/llvm/lib/IR/IRBuilder.cpp
projects/clang500-import/contrib/llvm/lib/IR/InlineAsm.cpp
projects/clang500-import/contrib/llvm/lib/IR/Instruction.cpp
projects/clang500-import/contrib/llvm/lib/IR/Instructions.cpp
projects/clang500-import/contrib/llvm/lib/IR/LLVMContextImpl.cpp
projects/clang500-import/contrib/llvm/lib/IR/PassRegistry.cpp
projects/clang500-import/contrib/llvm/lib/IR/User.cpp
projects/clang500-import/contrib/llvm/lib/IR/Value.cpp
projects/clang500-import/contrib/llvm/lib/IR/ValueTypes.cpp
projects/clang500-import/contrib/llvm/lib/IR/Verifier.cpp
projects/clang500-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
projects/clang500-import/contrib/llvm/lib/Linker/IRMover.cpp
projects/clang500-import/contrib/llvm/lib/Object/Binary.cpp
projects/clang500-import/contrib/llvm/lib/Object/Decompressor.cpp
projects/clang500-import/contrib/llvm/lib/Passes/PassBuilder.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/BinaryStreamWriter.cpp
projects/clang500-import/contrib/llvm/lib/Support/FormattedStream.cpp
projects/clang500-import/contrib/llvm/lib/Support/Triple.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.cpp
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64Subtarget.h
projects/clang500-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUCallLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPURegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPURegisterInfo.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/BUFInstructions.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/GCNRegPressure.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/GCNRegPressure.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ClauseMergePass.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600OptimizeVectorRegisters.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600Packetizer.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600RegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/R600RegisterInfo.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIFrameLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIInstrFormats.td
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.h
projects/clang500-import/contrib/llvm/lib/Target/AMDGPU/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/ARM/ARMTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
projects/clang500-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips.h
projects/clang500-import/contrib/llvm/lib/Target/Mips/Mips16HardFloat.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsOptimizePICCall.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsOs16.cpp
projects/clang500-import/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrAltivec.td
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/Sparc/DelaySlotFiller.cpp
projects/clang500-import/contrib/llvm/lib/Target/Sparc/LeonPasses.cpp
projects/clang500-import/contrib/llvm/lib/Target/Sparc/LeonPasses.h
projects/clang500-import/contrib/llvm/lib/Target/Sparc/Sparc.h
projects/clang500-import/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86CallingConv.td
projects/clang500-import/contrib/llvm/lib/Target/X86/X86FastISel.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86FixupLEAs.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/X86InstrFragmentsSIMD.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/X86InstrTSX.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/X86RegisterInfo.td
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/Target/X86/X86TargetMachine.cpp
projects/clang500-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
projects/clang500-import/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.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/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/Scalar/EarlyCSE.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/GVN.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoadCombine.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopPredication.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
projects/clang500-import/contrib/llvm/lib/Transforms/Utils/CloneFunction.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/lib/Transforms/Vectorize/SLPVectorizer.cpp
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/CXXInheritance.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/AST/Type.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/AddressSpaces.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/Attr.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Format/Format.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/ModuleMap.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h
projects/clang500-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/CXXInheritance.cpp
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/Type.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGAtomic.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CGValue.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypeCache.h
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.h
projects/clang500-import/contrib/llvm/tools/clang/lib/Format/BreakableToken.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/Format/UnwrappedLineFormatter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Index/IndexBody.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/Index/USRGeneration.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/PPLexerChange.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Parse/Parser.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/SemaLookup.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
projects/clang500-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
projects/clang500-import/contrib/llvm/tools/llc/llc.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/CMakeLists.txt
projects/clang500-import/contrib/llvm/tools/lld/COFF/Config.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/DLL.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/DLL.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/Driver.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/DriverUtils.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/InputFiles.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/Options.td
projects/clang500-import/contrib/llvm/tools/lld/COFF/PDB.cpp
projects/clang500-import/contrib/llvm/tools/lld/COFF/SymbolTable.h
projects/clang500-import/contrib/llvm/tools/lld/COFF/Writer.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/LinkerScript.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/MapFile.cpp
projects/clang500-import/contrib/llvm/tools/lld/ELF/MapFile.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/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/Writer.cpp
projects/clang500-import/contrib/llvm/tools/lldb/include/lldb/Utility/Status.h
projects/clang500-import/contrib/llvm/tools/lldb/source/Core/IOHandler.cpp
projects/clang500-import/contrib/llvm/tools/lldb/source/Utility/Status.cpp
projects/clang500-import/contrib/llvm/tools/llvm-lto/llvm-lto.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/Analyze.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/CompactTypeDumpVisitor.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/PdbYaml.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.h
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/YamlTypeDumper.cpp
projects/clang500-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
projects/clang500-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
projects/clang500-import/contrib/llvm/tools/opt/opt.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/CodeGenTarget.cpp
projects/clang500-import/contrib/llvm/utils/TableGen/GlobalISelEmitter.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
Directory Properties:
projects/clang500-import/contrib/compiler-rt/ (props changed)
projects/clang500-import/contrib/libc++/ (props changed)
projects/clang500-import/contrib/llvm/ (props changed)
projects/clang500-import/contrib/llvm/tools/clang/ (props changed)
projects/clang500-import/contrib/llvm/tools/lld/ (props changed)
projects/clang500-import/contrib/llvm/tools/lldb/ (props changed)
Modified: projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/include/xray/xray_interface.h Mon May 22 21:17:44 2017 (r318681)
@@ -69,6 +69,10 @@ extern int __xray_remove_handler_arg1();
/// Provide a function to invoke when XRay encounters a custom event.
extern int __xray_set_customevent_handler(void (*entry)(void*, std::size_t));
+/// This removes whatever the currently provided custom event handler is.
+/// Returns 1 on success, 0 on error.
+extern int __xray_remove_customevent_handler();
+
enum XRayPatchingStatus {
NOT_INITIALIZED = 0,
SUCCESS = 1,
Modified: projects/clang500-import/contrib/compiler-rt/lib/asan/asan_flags.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/asan/asan_flags.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/asan/asan_flags.cc Mon May 22 21:17:44 2017 (r318681)
@@ -194,10 +194,6 @@ void InitializeFlags() {
Report("WARNING: strchr* interceptors are enabled even though "
"replace_str=0. Use intercept_strchr=0 to disable them.");
}
- if (!f->replace_str && common_flags()->intercept_strndup) {
- Report("WARNING: strndup* interceptors are enabled even though "
- "replace_str=0. Use intercept_strndup=0 to disable them.");
- }
}
} // namespace __asan
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/lsan/lsan_common_mac.cc Mon May 22 21:17:44 2017 (r318681)
@@ -110,7 +110,8 @@ void ProcessGlobalRegions(Frontier *fron
for (const __sanitizer::LoadedModule::AddressRange &range :
modules[i].ranges()) {
- if (range.executable || !range.readable) continue;
+ // Sections storing global variables are writable and non-executable
+ if (range.executable || !range.writable) continue;
ScanGlobalRange(range.beg, range.end, frontier);
}
Modified: projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/msan/msan_interceptors.cc Mon May 22 21:17:44 2017 (r318681)
@@ -341,6 +341,33 @@ INTERCEPTOR(char *, __strdup, char *src)
#define MSAN_MAYBE_INTERCEPT___STRDUP
#endif
+INTERCEPTOR(char *, strndup, char *src, SIZE_T n) {
+ ENSURE_MSAN_INITED();
+ GET_STORE_STACK_TRACE;
+ // On FreeBSD strndup() leverages strnlen().
+ InterceptorScope interceptor_scope;
+ SIZE_T copy_size = REAL(strnlen)(src, n);
+ char *res = REAL(strndup)(src, n);
+ CopyShadowAndOrigin(res, src, copy_size, &stack);
+ __msan_unpoison(res + copy_size, 1); // \0
+ return res;
+}
+
+#if !SANITIZER_FREEBSD
+INTERCEPTOR(char *, __strndup, char *src, SIZE_T n) {
+ ENSURE_MSAN_INITED();
+ GET_STORE_STACK_TRACE;
+ SIZE_T copy_size = REAL(strnlen)(src, n);
+ char *res = REAL(__strndup)(src, n);
+ CopyShadowAndOrigin(res, src, copy_size, &stack);
+ __msan_unpoison(res + copy_size, 1); // \0
+ return res;
+}
+#define MSAN_MAYBE_INTERCEPT___STRNDUP INTERCEPT_FUNCTION(__strndup)
+#else
+#define MSAN_MAYBE_INTERCEPT___STRNDUP
+#endif
+
INTERCEPTOR(char *, gcvt, double number, SIZE_T ndigit, char *buf) {
ENSURE_MSAN_INITED();
char *res = REAL(gcvt)(number, ndigit, buf);
@@ -1344,13 +1371,6 @@ int OnExit() {
return __msan_memcpy(to, from, size); \
}
-#define COMMON_INTERCEPTOR_COPY_STRING(ctx, to, from, size) \
- do { \
- GET_STORE_STACK_TRACE; \
- CopyShadowAndOrigin(to, from, size, &stack); \
- __msan_unpoison(to + size, 1); \
- } while (false)
-
#include "sanitizer_common/sanitizer_platform_interceptors.h"
#include "sanitizer_common/sanitizer_common_interceptors.inc"
@@ -1518,6 +1538,8 @@ void InitializeInterceptors() {
INTERCEPT_FUNCTION(stpcpy); // NOLINT
INTERCEPT_FUNCTION(strdup);
MSAN_MAYBE_INTERCEPT___STRDUP;
+ INTERCEPT_FUNCTION(strndup);
+ MSAN_MAYBE_INTERCEPT___STRNDUP;
INTERCEPT_FUNCTION(strncpy); // NOLINT
INTERCEPT_FUNCTION(gcvt);
INTERCEPT_FUNCTION(strcat); // NOLINT
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.cc Mon May 22 21:17:44 2017 (r318681)
@@ -285,9 +285,9 @@ void LoadedModule::clear() {
}
void LoadedModule::addAddressRange(uptr beg, uptr end, bool executable,
- bool readable) {
+ bool writable) {
void *mem = InternalAlloc(sizeof(AddressRange));
- AddressRange *r = new(mem) AddressRange(beg, end, executable, readable);
+ AddressRange *r = new(mem) AddressRange(beg, end, executable, writable);
ranges_.push_back(r);
if (executable && end > max_executable_address_)
max_executable_address_ = end;
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common.h Mon May 22 21:17:44 2017 (r318681)
@@ -717,7 +717,7 @@ class LoadedModule {
void set(const char *module_name, uptr base_address, ModuleArch arch,
u8 uuid[kModuleUUIDSize], bool instrumented);
void clear();
- void addAddressRange(uptr beg, uptr end, bool executable, bool readable);
+ void addAddressRange(uptr beg, uptr end, bool executable, bool writable);
bool containsAddress(uptr address) const;
const char *full_name() const { return full_name_; }
@@ -732,14 +732,14 @@ class LoadedModule {
uptr beg;
uptr end;
bool executable;
- bool readable;
+ bool writable;
- AddressRange(uptr beg, uptr end, bool executable, bool readable)
+ AddressRange(uptr beg, uptr end, bool executable, bool writable)
: next(nullptr),
beg(beg),
end(end),
executable(executable),
- readable(readable) {}
+ writable(writable) {}
};
const IntrusiveList<AddressRange> &ranges() const { return ranges_; }
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc Mon May 22 21:17:44 2017 (r318681)
@@ -34,8 +34,6 @@
// COMMON_INTERCEPTOR_MEMSET_IMPL
// COMMON_INTERCEPTOR_MEMMOVE_IMPL
// COMMON_INTERCEPTOR_MEMCPY_IMPL
-// COMMON_INTERCEPTOR_COPY_STRING
-// COMMON_INTERCEPTOR_STRNDUP_IMPL
//===----------------------------------------------------------------------===//
#include "interception/interception.h"
@@ -219,25 +217,6 @@ bool PlatformHasDifferentMemcpyAndMemmov
}
#endif
-#ifndef COMMON_INTERCEPTOR_COPY_STRING
-#define COMMON_INTERCEPTOR_COPY_STRING(ctx, to, from, size) {}
-#endif
-
-#ifndef COMMON_INTERCEPTOR_STRNDUP_IMPL
-#define COMMON_INTERCEPTOR_STRNDUP_IMPL(ctx, s, size) \
- COMMON_INTERCEPTOR_ENTER(ctx, strndup, s, size); \
- uptr from_length = internal_strnlen(s, size); \
- uptr copy_length = Min(size, from_length); \
- char *new_mem = (char *)WRAP(malloc)(copy_length + 1); \
- if (common_flags()->intercept_strndup) { \
- COMMON_INTERCEPTOR_READ_RANGE(ctx, s, copy_length + 1); \
- } \
- COMMON_INTERCEPTOR_COPY_STRING(ctx, new_mem, s, copy_length); \
- internal_memcpy(new_mem, s, copy_length); \
- new_mem[copy_length] = '\0'; \
- return new_mem;
-#endif
-
struct FileMetadata {
// For open_memstream().
char **addr;
@@ -321,26 +300,6 @@ INTERCEPTOR(SIZE_T, strnlen, const char
#define INIT_STRNLEN
#endif
-#if SANITIZER_INTERCEPT_STRNDUP
-INTERCEPTOR(char*, strndup, const char *s, uptr size) {
- void *ctx;
- COMMON_INTERCEPTOR_STRNDUP_IMPL(ctx, s, size);
-}
-#define INIT_STRNDUP COMMON_INTERCEPT_FUNCTION(strndup)
-#else
-#define INIT_STRNDUP
-#endif // SANITIZER_INTERCEPT_STRNDUP
-
-#if SANITIZER_INTERCEPT___STRNDUP
-INTERCEPTOR(char*, __strndup, const char *s, uptr size) {
- void *ctx;
- COMMON_INTERCEPTOR_STRNDUP_IMPL(ctx, s, size);
-}
-#define INIT___STRNDUP COMMON_INTERCEPT_FUNCTION(__strndup)
-#else
-#define INIT___STRNDUP
-#endif // SANITIZER_INTERCEPT___STRNDUP
-
#if SANITIZER_INTERCEPT_TEXTDOMAIN
INTERCEPTOR(char*, textdomain, const char *domainname) {
void *ctx;
@@ -6204,8 +6163,6 @@ static void InitializeCommonInterceptors
INIT_TEXTDOMAIN;
INIT_STRLEN;
INIT_STRNLEN;
- INIT_STRNDUP;
- INIT___STRNDUP;
INIT_STRCMP;
INIT_STRNCMP;
INIT_STRCASECMP;
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flag_parser.h Mon May 22 21:17:44 2017 (r318681)
@@ -34,25 +34,41 @@ class FlagHandler : public FlagHandlerBa
bool Parse(const char *value) final;
};
-template <>
-inline bool FlagHandler<bool>::Parse(const char *value) {
+inline bool ParseBool(const char *value, bool *b) {
if (internal_strcmp(value, "0") == 0 ||
internal_strcmp(value, "no") == 0 ||
internal_strcmp(value, "false") == 0) {
- *t_ = false;
+ *b = false;
return true;
}
if (internal_strcmp(value, "1") == 0 ||
internal_strcmp(value, "yes") == 0 ||
internal_strcmp(value, "true") == 0) {
- *t_ = true;
+ *b = true;
return true;
}
+ return false;
+}
+
+template <>
+inline bool FlagHandler<bool>::Parse(const char *value) {
+ if (ParseBool(value, t_)) return true;
Printf("ERROR: Invalid value for bool option: '%s'\n", value);
return false;
}
template <>
+inline bool FlagHandler<HandleSignalMode>::Parse(const char *value) {
+ bool b;
+ if (ParseBool(value, &b)) {
+ *t_ = b ? kHandleSignalYes : kHandleSignalNo;
+ return true;
+ }
+ Printf("ERROR: Invalid value for signal handler option: '%s'\n", value);
+ return false;
+}
+
+template <>
inline bool FlagHandler<const char *>::Parse(const char *value) {
*t_ = internal_strdup(value);
return true;
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.h Mon May 22 21:17:44 2017 (r318681)
@@ -18,6 +18,11 @@
namespace __sanitizer {
+enum HandleSignalMode {
+ kHandleSignalNo,
+ kHandleSignalYes,
+};
+
struct CommonFlags {
#define COMMON_FLAG(Type, Name, DefaultValue, Description) Type Name;
#include "sanitizer_flags.inc"
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc Mon May 22 21:17:44 2017 (r318681)
@@ -78,16 +78,20 @@ 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.")
COMMON_FLAG(bool, check_printf, true, "Check printf arguments.")
-COMMON_FLAG(bool, handle_segv, true,
- "If set, registers the tool's custom SIGSEGV handler.")
-COMMON_FLAG(bool, handle_sigbus, true,
- "If set, registers the tool's custom SIGBUS handler.")
-COMMON_FLAG(bool, handle_abort, false,
- "If set, registers the tool's custom SIGABRT handler.")
-COMMON_FLAG(bool, handle_sigill, false,
- "If set, registers the tool's custom SIGILL handler.")
-COMMON_FLAG(bool, handle_sigfpe, true,
- "If set, registers the tool's custom SIGFPE handler.")
+#define COMMON_FLAG_HANDLE_SIGNAL_HELP(signal) \
+ "Controls custom tool's " #signal " handler (0 - do not registers the " \
+ "handler, 1 - register the handler). "
+COMMON_FLAG(HandleSignalMode, handle_segv, kHandleSignalYes,
+ COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGSEGV))
+COMMON_FLAG(HandleSignalMode, handle_sigbus, kHandleSignalYes,
+ COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGBUS))
+COMMON_FLAG(HandleSignalMode, handle_abort, kHandleSignalNo,
+ COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGABRT))
+COMMON_FLAG(HandleSignalMode, handle_sigill, kHandleSignalNo,
+ COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGILL))
+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.")
@@ -195,9 +199,6 @@ COMMON_FLAG(bool, intercept_strpbrk, tru
COMMON_FLAG(bool, intercept_strlen, true,
"If set, uses custom wrappers for strlen and strnlen functions "
"to find more errors.")
-COMMON_FLAG(bool, intercept_strndup, true,
- "If set, uses custom wrappers for strndup functions "
- "to find more errors.")
COMMON_FLAG(bool, intercept_strchr, true,
"If set, uses custom wrappers for strchr, strchrnul, and strrchr "
"functions to find more errors.")
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon May 22 21:17:44 2017 (r318681)
@@ -1395,15 +1395,19 @@ AndroidApiLevel AndroidGetApiLevel() {
#endif
bool IsHandledDeadlySignal(int signum) {
- if (common_flags()->handle_abort && signum == SIGABRT)
- return true;
- if (common_flags()->handle_sigill && signum == SIGILL)
- return true;
- if (common_flags()->handle_sigfpe && signum == SIGFPE)
- return true;
- if (common_flags()->handle_segv && signum == SIGSEGV)
- return true;
- return common_flags()->handle_sigbus && signum == SIGBUS;
+ switch (signum) {
+ case SIGABRT:
+ return common_flags()->handle_abort;
+ case SIGILL:
+ return common_flags()->handle_sigill;
+ case SIGFPE:
+ return common_flags()->handle_sigfpe;
+ case SIGSEGV:
+ return common_flags()->handle_segv;
+ case SIGBUS:
+ return common_flags()->handle_sigbus;
+ }
+ return false;
}
#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 Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc Mon May 22 21:17:44 2017 (r318681)
@@ -447,9 +447,9 @@ static int dl_iterate_phdr_cb(dl_phdr_in
uptr cur_beg = info->dlpi_addr + phdr->p_vaddr;
uptr cur_end = cur_beg + phdr->p_memsz;
bool executable = phdr->p_flags & PF_X;
- bool readable = phdr->p_flags & PF_R;
+ bool writable = phdr->p_flags & PF_W;
cur_module.addAddressRange(cur_beg, cur_end, executable,
- readable);
+ writable);
}
}
data->modules->push_back(cur_module);
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc Mon May 22 21:17:44 2017 (r318681)
@@ -394,18 +394,22 @@ void ListOfModules::init() {
}
bool IsHandledDeadlySignal(int signum) {
+ // Handling fatal signals on watchOS and tvOS devices is disallowed.
if ((SANITIZER_WATCHOS || SANITIZER_TVOS) && !(SANITIZER_IOSSIM))
- // Handling fatal signals on watchOS and tvOS devices is disallowed.
return false;
- if (common_flags()->handle_abort && signum == SIGABRT)
- return true;
- if (common_flags()->handle_sigill && signum == SIGILL)
- return true;
- if (common_flags()->handle_sigfpe && signum == SIGFPE)
- return true;
- if (common_flags()->handle_segv && signum == SIGSEGV)
- return true;
- return common_flags()->handle_sigbus && signum == SIGBUS;
+ switch (signum) {
+ case SIGABRT:
+ return common_flags()->handle_abort;
+ case SIGILL:
+ return common_flags()->handle_sigill;
+ case SIGFPE:
+ return common_flags()->handle_sigfpe;
+ case SIGSEGV:
+ return common_flags()->handle_segv;
+ case SIGBUS:
+ return common_flags()->handle_sigbus;
+ }
+ return false;
}
MacosVersion cached_macos_version = MACOS_VERSION_UNINITIALIZED;
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h Mon May 22 21:17:44 2017 (r318681)
@@ -25,12 +25,6 @@
# define SI_NOT_WINDOWS 0
#endif
-#if SANITIZER_POSIX
-# define SI_POSIX 1
-#else
-# define SI_POSIX 0
-#endif
-
#if SANITIZER_LINUX && !SANITIZER_ANDROID
# define SI_LINUX_NOT_ANDROID 1
#else
@@ -75,12 +69,6 @@
# define SI_UNIX_NOT_MAC 0
#endif
-#if SANITIZER_LINUX && !SANITIZER_FREEBSD
-# define SI_LINUX_NOT_FREEBSD 1
-# else
-# define SI_LINUX_NOT_FREEBSD 0
-#endif
-
#define SANITIZER_INTERCEPT_STRLEN 1
#define SANITIZER_INTERCEPT_STRNLEN SI_NOT_MAC
#define SANITIZER_INTERCEPT_STRCMP 1
@@ -98,8 +86,6 @@
#define SANITIZER_INTERCEPT_MEMMOVE 1
#define SANITIZER_INTERCEPT_MEMCPY 1
#define SANITIZER_INTERCEPT_MEMCMP 1
-#define SANITIZER_INTERCEPT_STRNDUP SI_POSIX
-#define SANITIZER_INTERCEPT___STRNDUP SI_LINUX_NOT_FREEBSD
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
# define SI_MAC_DEPLOYMENT_BELOW_10_7 1
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_common.cc Mon May 22 21:17:44 2017 (r318681)
@@ -142,7 +142,7 @@ void MemoryMappingLayout::DumpListOfModu
LoadedModule cur_module;
cur_module.set(cur_name, base_address);
cur_module.addAddressRange(cur_beg, cur_end, prot & kProtectionExecute,
- prot & kProtectionRead);
+ prot & kProtectionWrite);
modules->push_back(cur_module);
}
}
Modified: projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_mac.cc Mon May 22 21:17:44 2017 (r318681)
@@ -336,7 +336,7 @@ void MemoryMappingLayout::DumpListOfModu
current_instrumented_);
}
cur_module->addAddressRange(cur_beg, cur_end, prot & kProtectionExecute,
- prot & kProtectionRead);
+ prot & kProtectionWrite);
}
}
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 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_win.cc Mon May 22 21:17:44 2017 (r318681)
@@ -554,7 +554,7 @@ void ListOfModules::init() {
cur_module.set(module_name, adjusted_base);
// We add the whole module as one single address range.
cur_module.addAddressRange(base_address, end_address, /*executable*/ true,
- /*readable*/ true);
+ /*writable*/ true);
modules_.push_back(cur_module);
}
UnmapOrDie(hmodules, modules_buffer_size);
Modified: projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_flags.cpp
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_flags.cpp Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/scudo/scudo_flags.cpp Mon May 22 21:17:44 2017 (r318681)
@@ -68,7 +68,7 @@ void initFlags() {
// Sanity checks and default settings for the Quarantine parameters.
if (f->QuarantineSizeMb < 0) {
- const int DefaultQuarantineSizeMb = FIRST_32_SECOND_64(16, 64);
+ const int DefaultQuarantineSizeMb = FIRST_32_SECOND_64(4, 16);
f->QuarantineSizeMb = DefaultQuarantineSizeMb;
}
// We enforce an upper limit for the quarantine size of 4Gb.
@@ -77,7 +77,7 @@ void initFlags() {
}
if (f->ThreadLocalQuarantineSizeKb < 0) {
const int DefaultThreadLocalQuarantineSizeKb =
- FIRST_32_SECOND_64(256, 1024);
+ FIRST_32_SECOND_64(64, 256);
f->ThreadLocalQuarantineSizeKb = DefaultThreadLocalQuarantineSizeKb;
}
// And an upper limit of 128Mb for the thread quarantine cache.
Modified: projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc
==============================================================================
--- projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/compiler-rt/lib/xray/xray_interface.cc Mon May 22 21:17:44 2017 (r318681)
@@ -119,10 +119,15 @@ int __xray_set_customevent_handler(void
return 0;
}
+
int __xray_remove_handler() XRAY_NEVER_INSTRUMENT {
return __xray_set_handler(nullptr);
}
+int __xray_remove_customevent_handler() XRAY_NEVER_INSTRUMENT {
+ return __xray_set_customevent_handler(nullptr);
+}
+
__sanitizer::atomic_uint8_t XRayPatching{0};
using namespace __xray;
@@ -326,7 +331,14 @@ uintptr_t __xray_function_address(int32_
__sanitizer::SpinMutexLock Guard(&XRayInstrMapMutex);
if (FuncId <= 0 || static_cast<size_t>(FuncId) > XRayInstrMap.Functions)
return 0;
- return XRayInstrMap.SledsIndex[FuncId - 1].Begin->Address;
+ return XRayInstrMap.SledsIndex[FuncId - 1].Begin->Address
+// On PPC, function entries are always aligned to 16 bytes. The beginning of a
+// sled might be a local entry, which is always +8 based on the global entry.
+// Always return the global entry.
+#ifdef __PPC__
+ & ~0xf
+#endif
+ ;
}
size_t __xray_max_function_id() XRAY_NEVER_INSTRUMENT {
Modified: projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/ADT/APInt.h Mon May 22 21:17:44 2017 (r318681)
@@ -182,8 +182,9 @@ private:
/// provides a more convenient form of divide for internal use since KnuthDiv
/// has specific constraints on its inputs. If those constraints are not met
/// then it provides a simpler form of divide.
- static void divide(const APInt &LHS, unsigned lhsWords, const APInt &RHS,
- unsigned rhsWords, APInt *Quotient, APInt *Remainder);
+ static void divide(const WordType *LHS, unsigned lhsWords,
+ const WordType *RHS, unsigned rhsWords, WordType *Quotient,
+ WordType *Remainder);
/// out-of-line slow case for inline constructor
void initSlowCase(uint64_t val, bool isSigned);
@@ -1016,11 +1017,13 @@ public:
///
/// \returns a new APInt value containing the division result
APInt udiv(const APInt &RHS) const;
+ APInt udiv(uint64_t RHS) const;
/// \brief Signed division function for APInt.
///
/// Signed divide this APInt by APInt RHS.
APInt sdiv(const APInt &RHS) const;
+ APInt sdiv(int64_t RHS) const;
/// \brief Unsigned remainder operation.
///
@@ -1032,11 +1035,13 @@ public:
///
/// \returns a new APInt value containing the remainder result
APInt urem(const APInt &RHS) const;
+ uint64_t urem(uint64_t RHS) const;
/// \brief Function for signed remainder operation.
///
/// Signed remainder operation on APInt.
APInt srem(const APInt &RHS) const;
+ int64_t srem(int64_t RHS) const;
/// \brief Dual division/remainder interface.
///
@@ -1047,9 +1052,13 @@ public:
/// udivrem(X, Y, X, Y), for example.
static void udivrem(const APInt &LHS, const APInt &RHS, APInt &Quotient,
APInt &Remainder);
+ static void udivrem(const APInt &LHS, uint64_t RHS, APInt &Quotient,
+ uint64_t &Remainder);
static void sdivrem(const APInt &LHS, const APInt &RHS, APInt &Quotient,
APInt &Remainder);
+ static void sdivrem(const APInt &LHS, int64_t RHS, APInt &Quotient,
+ int64_t &Remainder);
// Operations that return overflow indicators.
APInt sadd_ov(const APInt &RHS, bool &Overflow) const;
@@ -2015,7 +2024,7 @@ inline APInt operator-(APInt a, const AP
}
inline APInt operator-(const APInt &a, APInt &&b) {
- b = -std::move(b);
+ b.negate();
b += a;
return std::move(b);
}
@@ -2026,7 +2035,7 @@ inline APInt operator-(APInt a, uint64_t
}
inline APInt operator-(uint64_t LHS, APInt b) {
- b = -std::move(b);
+ b.negate();
b += LHS;
return b;
}
Modified: projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallPtrSet.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallPtrSet.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/ADT/SmallPtrSet.h Mon May 22 21:17:44 2017 (r318681)
@@ -365,6 +365,8 @@ protected:
public:
using iterator = SmallPtrSetIterator<PtrType>;
using const_iterator = SmallPtrSetIterator<PtrType>;
+ using key_type = ConstPtrType;
+ using value_type = PtrType;
SmallPtrSetImpl(const SmallPtrSetImpl &) = delete;
Modified: projects/clang500-import/contrib/llvm/include/llvm/ADT/Statistic.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/ADT/Statistic.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/ADT/Statistic.h Mon May 22 21:17:44 2017 (r318681)
@@ -101,6 +101,16 @@ public:
return init();
}
+ void updateMax(unsigned V) {
+ unsigned PrevMax = Value.load(std::memory_order_relaxed);
+ // Keep trying to update max until we succeed or another thread produces
+ // a bigger max than us.
+ while (V > PrevMax && !Value.compare_exchange_weak(
+ PrevMax, V, std::memory_order_relaxed)) {
+ }
+ init();
+ }
+
#else // Statistics are disabled in release builds.
const Statistic &operator=(unsigned Val) {
@@ -131,6 +141,8 @@ public:
return *this;
}
+ void updateMax(unsigned V) {}
+
#endif // !defined(NDEBUG) || defined(LLVM_ENABLE_STATS)
protected:
Modified: projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/ADT/Triple.h Mon May 22 21:17:44 2017 (r318681)
@@ -252,6 +252,10 @@ public:
ObjectFormat == Other.ObjectFormat;
}
+ bool operator!=(const Triple &Other) const {
+ return !(*this == Other);
+ }
+
/// @}
/// @name Normalization
/// @{
@@ -722,6 +726,12 @@ public:
/// \returns true if the triple is little endian, false otherwise.
bool isLittleEndian() const;
+ /// Test whether target triples are compatible.
+ bool isCompatibleWith(const Triple &Other) const;
+
+ /// Merge target triples.
+ std::string merge(const Triple &Other) const;
+
/// @}
/// @name Static helpers for IDs.
/// @{
Modified: projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemorySSA.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemorySSA.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/Analysis/MemorySSA.h Mon May 22 21:17:44 2017 (r318681)
@@ -84,6 +84,7 @@
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/Analysis/PHITransAddr.h"
#include "llvm/IR/BasicBlock.h"
+#include "llvm/IR/DerivedUser.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/OperandTraits.h"
@@ -127,7 +128,7 @@ using const_memoryaccess_def_iterator =
// \brief The base for all memory accesses. All memory accesses in a block are
// linked together using an intrusive list.
class MemoryAccess
- : public User,
+ : public DerivedUser,
public ilist_node<MemoryAccess, ilist_tag<MSSAHelpers::AllAccessTag>>,
public ilist_node<MemoryAccess, ilist_tag<MSSAHelpers::DefsOnlyTag>> {
public:
@@ -145,15 +146,14 @@ public:
MemoryAccess(const MemoryAccess &) = delete;
MemoryAccess &operator=(const MemoryAccess &) = delete;
- ~MemoryAccess() override;
void *operator new(size_t, unsigned) = delete;
void *operator new(size_t) = delete;
BasicBlock *getBlock() const { return Block; }
- virtual void print(raw_ostream &OS) const = 0;
- virtual void dump() const;
+ void print(raw_ostream &OS) const;
+ void dump() const;
/// \brief The user iterators for a memory access
typedef user_iterator iterator;
@@ -207,11 +207,12 @@ protected:
/// \brief Used for debugging and tracking things about MemoryAccesses.
/// Guaranteed unique among MemoryAccesses, no guarantees otherwise.
- virtual unsigned getID() const = 0;
+ inline unsigned getID() const;
- MemoryAccess(LLVMContext &C, unsigned Vty, BasicBlock *BB,
- unsigned NumOperands)
- : User(Type::getVoidTy(C), Vty, nullptr, NumOperands), Block(BB) {}
+ MemoryAccess(LLVMContext &C, unsigned Vty, DeleteValueTy DeleteValue,
+ BasicBlock *BB, unsigned NumOperands)
+ : DerivedUser(Type::getVoidTy(C), Vty, nullptr, NumOperands, DeleteValue),
+ Block(BB) {}
private:
BasicBlock *Block;
@@ -248,21 +249,21 @@ public:
// Sadly, these have to be public because they are needed in some of the
// iterators.
- virtual bool isOptimized() const = 0;
- virtual MemoryAccess *getOptimized() const = 0;
- virtual void setOptimized(MemoryAccess *) = 0;
+ inline bool isOptimized() const;
+ inline MemoryAccess *getOptimized() const;
+ inline void setOptimized(MemoryAccess *);
/// \brief Reset the ID of what this MemoryUse was optimized to, causing it to
/// be rewalked by the walker if necessary.
/// This really should only be called by tests.
- virtual void resetOptimized() = 0;
+ inline void resetOptimized();
protected:
friend class MemorySSA;
friend class MemorySSAUpdater;
MemoryUseOrDef(LLVMContext &C, MemoryAccess *DMA, unsigned Vty,
- Instruction *MI, BasicBlock *BB)
- : MemoryAccess(C, Vty, BB, 1), MemoryInst(MI) {
+ DeleteValueTy DeleteValue, Instruction *MI, BasicBlock *BB)
+ : MemoryAccess(C, Vty, DeleteValue, BB, 1), MemoryInst(MI) {
setDefiningAccess(DMA);
}
void setDefiningAccess(MemoryAccess *DMA, bool Optimized = false) {
@@ -292,7 +293,8 @@ public:
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(MemoryAccess);
MemoryUse(LLVMContext &C, MemoryAccess *DMA, Instruction *MI, BasicBlock *BB)
- : MemoryUseOrDef(C, DMA, MemoryUseVal, MI, BB), OptimizedID(0) {}
+ : MemoryUseOrDef(C, DMA, MemoryUseVal, deleteMe, MI, BB),
+ OptimizedID(0) {}
// allocate space for exactly one operand
void *operator new(size_t s) { return User::operator new(s, 1); }
@@ -302,32 +304,30 @@ public:
return MA->getValueID() == MemoryUseVal;
}
- void print(raw_ostream &OS) const override;
+ void print(raw_ostream &OS) const;
- virtual void setOptimized(MemoryAccess *DMA) override {
+ void setOptimized(MemoryAccess *DMA) {
OptimizedID = DMA->getID();
setOperand(0, DMA);
}
- virtual bool isOptimized() const override {
+ bool isOptimized() const {
return getDefiningAccess() && OptimizedID == getDefiningAccess()->getID();
}
- virtual MemoryAccess *getOptimized() const override {
+ MemoryAccess *getOptimized() const {
return getDefiningAccess();
}
- virtual void resetOptimized() override {
+ void resetOptimized() {
OptimizedID = INVALID_MEMORYACCESS_ID;
}
protected:
friend class MemorySSA;
- unsigned getID() const override {
- llvm_unreachable("MemoryUses do not have IDs");
- }
-
private:
+ static void deleteMe(DerivedUser *Self);
+
unsigned int OptimizedID;
};
@@ -350,8 +350,8 @@ public:
MemoryDef(LLVMContext &C, MemoryAccess *DMA, Instruction *MI, BasicBlock *BB,
unsigned Ver)
- : MemoryUseOrDef(C, DMA, MemoryDefVal, MI, BB), ID(Ver),
- Optimized(nullptr), OptimizedID(INVALID_MEMORYACCESS_ID) {}
+ : MemoryUseOrDef(C, DMA, MemoryDefVal, deleteMe, MI, BB),
+ ID(Ver), Optimized(nullptr), OptimizedID(INVALID_MEMORYACCESS_ID) {}
// allocate space for exactly one operand
void *operator new(size_t s) { return User::operator new(s, 1); }
@@ -361,27 +361,28 @@ public:
return MA->getValueID() == MemoryDefVal;
}
- virtual void setOptimized(MemoryAccess *MA) override {
+ void setOptimized(MemoryAccess *MA) {
Optimized = MA;
OptimizedID = getDefiningAccess()->getID();
}
- virtual MemoryAccess *getOptimized() const override { return Optimized; }
- virtual bool isOptimized() const override {
+ MemoryAccess *getOptimized() const { return Optimized; }
+ bool isOptimized() const {
return getOptimized() && getDefiningAccess() &&
OptimizedID == getDefiningAccess()->getID();
}
- virtual void resetOptimized() override {
+ void resetOptimized() {
OptimizedID = INVALID_MEMORYACCESS_ID;
}
- void print(raw_ostream &OS) const override;
+ void print(raw_ostream &OS) const;
-protected:
friend class MemorySSA;
- unsigned getID() const override { return ID; }
+ unsigned getID() const { return ID; }
private:
+ static void deleteMe(DerivedUser *Self);
+
const unsigned ID;
MemoryAccess *Optimized;
unsigned int OptimizedID;
@@ -432,7 +433,8 @@ public:
DECLARE_TRANSPARENT_OPERAND_ACCESSORS(MemoryAccess);
MemoryPhi(LLVMContext &C, BasicBlock *BB, unsigned Ver, unsigned NumPreds = 0)
- : MemoryAccess(C, MemoryPhiVal, BB, 0), ID(Ver), ReservedSpace(NumPreds) {
+ : MemoryAccess(C, MemoryPhiVal, deleteMe, BB, 0), ID(Ver),
+ ReservedSpace(NumPreds) {
allocHungoffUses(ReservedSpace);
}
@@ -534,7 +536,9 @@ public:
return V->getValueID() == MemoryPhiVal;
}
- void print(raw_ostream &OS) const override;
+ void print(raw_ostream &OS) const;
+
+ unsigned getID() const { return ID; }
protected:
friend class MemorySSA;
@@ -546,8 +550,6 @@ protected:
User::allocHungoffUses(N, /* IsPhi */ true);
}
- unsigned getID() const final { return ID; }
-
private:
// For debugging only
const unsigned ID;
@@ -561,8 +563,45 @@ private:
ReservedSpace = std::max(E + E / 2, 2u);
growHungoffUses(ReservedSpace, /* IsPhi */ true);
}
+
+ static void deleteMe(DerivedUser *Self);
};
+inline unsigned MemoryAccess::getID() const {
+ assert((isa<MemoryDef>(this) || isa<MemoryPhi>(this)) &&
+ "only memory defs and phis have ids");
+ if (const auto *MD = dyn_cast<MemoryDef>(this))
+ return MD->getID();
+ return cast<MemoryPhi>(this)->getID();
+}
+
+inline bool MemoryUseOrDef::isOptimized() const {
+ if (const auto *MD = dyn_cast<MemoryDef>(this))
+ return MD->isOptimized();
+ return cast<MemoryUse>(this)->isOptimized();
+}
+
+inline MemoryAccess *MemoryUseOrDef::getOptimized() const {
+ if (const auto *MD = dyn_cast<MemoryDef>(this))
+ return MD->getOptimized();
+ return cast<MemoryUse>(this)->getOptimized();
+}
+
+inline void MemoryUseOrDef::setOptimized(MemoryAccess *MA) {
+ if (auto *MD = dyn_cast<MemoryDef>(this))
+ MD->setOptimized(MA);
+ else
+ cast<MemoryUse>(this)->setOptimized(MA);
+}
+
+inline void MemoryUseOrDef::resetOptimized() {
+ if (auto *MD = dyn_cast<MemoryDef>(this))
+ MD->resetOptimized();
+ else
+ cast<MemoryUse>(this)->resetOptimized();
+}
+
+
template <> struct OperandTraits<MemoryPhi> : public HungoffOperandTraits<2> {};
DEFINE_TRANSPARENT_OPERAND_ACCESSORS(MemoryPhi, MemoryAccess)
Modified: projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h Mon May 22 21:17:44 2017 (r318681)
@@ -656,10 +656,12 @@ private:
/// Test whether this BackedgeTakenInfo contains complete information.
bool hasFullInfo() const { return isComplete(); }
- /// Return an expression indicating the exact backedge-taken count of the
- /// loop if it is known or SCEVCouldNotCompute otherwise. This is the
- /// number of times the loop header can be guaranteed to execute, minus
- /// one.
+ /// Return an expression indicating the exact *backedge-taken*
+ /// count of the loop if it is known or SCEVCouldNotCompute
+ /// otherwise. If execution makes it to the backedge on every
+ /// iteration (i.e. there are no abnormal exists like exception
+ /// throws and thread exits) then this is the number of times the
+ /// loop header will execute minus one.
///
/// If the SCEV predicate associated with the answer can be different
/// from AlwaysTrue, we must add a (non null) Predicates argument.
@@ -1398,11 +1400,11 @@ public:
const SCEV *getExitCount(const Loop *L, BasicBlock *ExitingBlock);
/// If the specified loop has a predictable backedge-taken count, return it,
- /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count
- /// is the number of times the loop header will be branched to from within
- /// the loop. This is one less than the trip count of the loop, since it
- /// doesn't count the first iteration, when the header is branched to from
- /// outside the loop.
+ /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count is
+ /// the number of times the loop header will be branched to from within the
+ /// loop, assuming there are no abnormal exists like exception throws. This is
+ /// one less than the trip count of the loop, since it doesn't count the first
+ /// iteration, when the header is branched to from outside the loop.
///
/// Note that it is not valid to call this method on a loop without a
/// loop-invariant backedge-taken count (see
@@ -1417,8 +1419,10 @@ public:
const SCEV *getPredicatedBackedgeTakenCount(const Loop *L,
SCEVUnionPredicate &Predicates);
- /// Similar to getBackedgeTakenCount, except return the least SCEV value
- /// that is known never to be less than the actual backedge taken count.
+ /// When successful, this returns a SCEVConstant that is greater than or equal
+ /// to (i.e. a "conservative over-approximation") of the value returend by
+ /// getBackedgeTakenCount. If such a value cannot be computed, it returns the
+ /// SCEVCouldNotCompute object.
const SCEV *getMaxBackedgeTakenCount(const Loop *L);
/// Return true if the backedge taken count is either the value returned by
Modified: projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/Analysis/TargetLibraryInfo.h Mon May 22 21:17:44 2017 (r318681)
@@ -191,6 +191,14 @@ public:
void setShouldSignExtI32Param(bool Val) {
ShouldSignExtI32Param = Val;
}
+
+ /// Returns the size of the wchar_t type in bytes.
+ unsigned getWCharSize(const Module &M) const;
+
+ /// Returns size of the default wchar_t type on target \p T. This is mostly
+ /// intended to verify that the size in the frontend matches LLVM. All other
+ /// queries should use getWCharSize() instead.
+ static unsigned getTargetWCharSize(const Triple &T);
};
/// Provides information about what library functions are available for
@@ -307,6 +315,11 @@ public:
return Attribute::None;
}
+ /// \copydoc TargetLibraryInfoImpl::getWCharSize()
+ unsigned getWCharSize(const Module &M) const {
+ return Impl->getWCharSize(M);
+ }
+
/// Handle invalidation from the pass manager.
///
/// If we try to invalidate this info, just return false. It cannot become
Modified: projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h Mon May 22 20:34:51 2017 (r318680)
+++ projects/clang500-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h Mon May 22 21:17:44 2017 (r318681)
@@ -218,9 +218,38 @@ template <typename T> class ArrayRef;
DL);
}
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list