From owner-svn-src-projects@freebsd.org Mon May 22 21:17:49 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ACB2DD77F21 for ; Mon, 22 May 2017 21:17:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 40C571252; Mon, 22 May 2017 21:17:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4MLHmer014250; Mon, 22 May 2017 21:17:48 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4MLHjQX014222; Mon, 22 May 2017 21:17:45 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705222117.v4MLHjQX014222@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 22 May 2017 21:17:45 +0000 (UTC) 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... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 May 2017 21:17:49 -0000 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 &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::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::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::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::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(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; using const_iterator = SmallPtrSetIterator; + 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>, public ilist_node> { 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(this) || isa(this)) && + "only memory defs and phis have ids"); + if (const auto *MD = dyn_cast(this)) + return MD->getID(); + return cast(this)->getID(); +} + +inline bool MemoryUseOrDef::isOptimized() const { + if (const auto *MD = dyn_cast(this)) + return MD->isOptimized(); + return cast(this)->isOptimized(); +} + +inline MemoryAccess *MemoryUseOrDef::getOptimized() const { + if (const auto *MD = dyn_cast(this)) + return MD->getOptimized(); + return cast(this)->getOptimized(); +} + +inline void MemoryUseOrDef::setOptimized(MemoryAccess *MA) { + if (auto *MD = dyn_cast(this)) + MD->setOptimized(MA); + else + cast(this)->setOptimized(MA); +} + +inline void MemoryUseOrDef::resetOptimized() { + if (auto *MD = dyn_cast(this)) + MD->resetOptimized(); + else + cast(this)->resetOptimized(); +} + + template <> struct OperandTraits : 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 class ArrayRef; DL); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***