Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 May 2017 21:17:45 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   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...
Message-ID:  <201705222117.v4MLHjQX014222@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705222117.v4MLHjQX014222>