Date: Thu, 14 Jan 2016 17:42:47 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r294024 - in projects/clang380-import: contrib/llvm/include/llvm contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen contrib/llvm/include/... Message-ID: <201601141742.u0EHglUl087422@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Thu Jan 14 17:42:46 2016 New Revision: 294024 URL: https://svnweb.freebsd.org/changeset/base/294024 Log: Update llvm, clang and lldb to trunk r257626, and update build glue. Added: projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerEmbeddedInt.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ADT/PointerEmbeddedInt.h projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerSumType.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ADT/PointerSumType.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcArchitectureSupport.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcArchitectureSupport.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcError.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcError.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCChannel.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/RPCChannel.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h - copied unchanged from r293886, vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/RPCUtils.h projects/clang380-import/contrib/llvm/include/llvm/Support/ELFRelocs/WebAssembly.def - copied unchanged from r293886, vendor/llvm/dist/include/llvm/Support/ELFRelocs/WebAssembly.def projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcArchitectureSupport.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcArchitectureSupport.cpp projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcError.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcError.cpp projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AMDGPU/SIMachineScheduler.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIMachineScheduler.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AMDGPU/SIMachineScheduler.h projects/clang380-import/contrib/llvm/lib/Target/AVR/AVR.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AVR/AVR.h projects/clang380-import/contrib/llvm/lib/Target/AVR/AVRSelectionDAGInfo.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AVR/AVRSelectionDAGInfo.h projects/clang380-import/contrib/llvm/lib/Target/AVR/AVRTargetObjectFile.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AVR/AVRTargetObjectFile.cpp projects/clang380-import/contrib/llvm/lib/Target/AVR/AVRTargetObjectFile.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/AVR/AVRTargetObjectFile.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonRDF.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/HexagonRDF.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonRDF.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/HexagonRDF.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonRDFOpt.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/HexagonRDFOpt.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFCopy.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFCopy.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFCopy.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFCopy.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFDeadCode.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFDeadCode.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFDeadCode.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFDeadCode.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFGraph.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFGraph.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFGraph.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFGraph.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFLiveness.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFLiveness.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/RDFLiveness.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/Hexagon/RDFLiveness.h projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/Disassembler/ - copied from r293886, vendor/llvm/dist/lib/Target/WebAssembly/Disassembler/ projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp - copied unchanged from r293886, vendor/llvm/dist/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h - copied unchanged from r293886, vendor/llvm/dist/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Core/LoadedModuleInfoList.h - copied unchanged from r293913, vendor/lldb/dist/include/lldb/Core/LoadedModuleInfoList.h projects/clang380-import/contrib/llvm/tools/lli/RemoteJITUtils.h - copied unchanged from r293886, vendor/llvm/dist/tools/lli/RemoteJITUtils.h Deleted: projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/OrcTargetSupport.h projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp projects/clang380-import/contrib/llvm/tools/lli/RPCChannel.h projects/clang380-import/contrib/llvm/tools/lli/RemoteMemoryManager.cpp projects/clang380-import/contrib/llvm/tools/lli/RemoteMemoryManager.h projects/clang380-import/contrib/llvm/tools/lli/RemoteTarget.cpp projects/clang380-import/contrib/llvm/tools/lli/RemoteTarget.h projects/clang380-import/contrib/llvm/tools/lli/RemoteTargetExternal.cpp projects/clang380-import/contrib/llvm/tools/lli/RemoteTargetExternal.h projects/clang380-import/contrib/llvm/tools/lli/RemoteTargetMessage.h projects/clang380-import/contrib/llvm/tools/lli/Unix/ projects/clang380-import/contrib/llvm/tools/lli/Windows/ Modified: projects/clang380-import/contrib/llvm/include/llvm/ADT/IntEqClasses.h projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerIntPair.h projects/clang380-import/contrib/llvm/include/llvm/ADT/Twine.h projects/clang380-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h projects/clang380-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h projects/clang380-import/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h projects/clang380-import/contrib/llvm/include/llvm/CodeGen/DIE.h projects/clang380-import/contrib/llvm/include/llvm/CodeGen/LiveInterval.h projects/clang380-import/contrib/llvm/include/llvm/CodeGen/RegisterPressure.h projects/clang380-import/contrib/llvm/include/llvm/CodeGen/WinEHFuncInfo.h projects/clang380-import/contrib/llvm/include/llvm/DebugInfo/Symbolize/DIPrinter.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/RTDyldMemoryManager.h projects/clang380-import/contrib/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h projects/clang380-import/contrib/llvm/include/llvm/IR/Attributes.td projects/clang380-import/contrib/llvm/include/llvm/IR/Function.h projects/clang380-import/contrib/llvm/include/llvm/IR/IRBuilder.h projects/clang380-import/contrib/llvm/include/llvm/IR/Intrinsics.td projects/clang380-import/contrib/llvm/include/llvm/IR/IntrinsicsX86.td projects/clang380-import/contrib/llvm/include/llvm/IR/LLVMContext.h projects/clang380-import/contrib/llvm/include/llvm/IR/Metadata.h projects/clang380-import/contrib/llvm/include/llvm/InitializePasses.h projects/clang380-import/contrib/llvm/include/llvm/LinkAllPasses.h projects/clang380-import/contrib/llvm/include/llvm/Linker/Linker.h projects/clang380-import/contrib/llvm/include/llvm/MC/MCExpr.h projects/clang380-import/contrib/llvm/include/llvm/MC/MCObjectFileInfo.h projects/clang380-import/contrib/llvm/include/llvm/MC/MCStreamer.h projects/clang380-import/contrib/llvm/include/llvm/Object/COFF.h projects/clang380-import/contrib/llvm/include/llvm/Object/ELFObjectFile.h projects/clang380-import/contrib/llvm/include/llvm/Pass.h projects/clang380-import/contrib/llvm/include/llvm/ProfileData/CoverageMapping.h projects/clang380-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h projects/clang380-import/contrib/llvm/include/llvm/ProfileData/InstrProfData.inc projects/clang380-import/contrib/llvm/include/llvm/ProfileData/SampleProf.h projects/clang380-import/contrib/llvm/include/llvm/Support/Allocator.h projects/clang380-import/contrib/llvm/include/llvm/Support/COFF.h projects/clang380-import/contrib/llvm/include/llvm/Support/ELF.h projects/clang380-import/contrib/llvm/include/llvm/Support/GenericDomTree.h projects/clang380-import/contrib/llvm/include/llvm/Support/MathExtras.h projects/clang380-import/contrib/llvm/include/llvm/Transforms/IPO.h projects/clang380-import/contrib/llvm/include/llvm/Transforms/Utils/Cloning.h projects/clang380-import/contrib/llvm/include/llvm/Transforms/Utils/Local.h projects/clang380-import/contrib/llvm/include/llvm/module.modulemap projects/clang380-import/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp projects/clang380-import/contrib/llvm/lib/Analysis/CallGraphSCCPass.cpp projects/clang380-import/contrib/llvm/lib/Analysis/GlobalsModRef.cpp projects/clang380-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/clang380-import/contrib/llvm/lib/Analysis/LoopAccessAnalysis.cpp projects/clang380-import/contrib/llvm/lib/Analysis/LoopInfo.cpp projects/clang380-import/contrib/llvm/lib/Analysis/LoopPass.cpp projects/clang380-import/contrib/llvm/lib/Analysis/ScopedNoAliasAA.cpp projects/clang380-import/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp projects/clang380-import/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/clang380-import/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp projects/clang380-import/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIE.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h projects/clang380-import/contrib/llvm/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/BranchFolding.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/LiveInterval.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/MachineLICM.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/MachineVerifier.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/RegisterCoalescer.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/RegisterPressure.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/SelectionDAG/StatepointLowering.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/ShrinkWrap.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/StackColoring.cpp projects/clang380-import/contrib/llvm/lib/CodeGen/WinEHPrepare.cpp projects/clang380-import/contrib/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h projects/clang380-import/contrib/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h projects/clang380-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp projects/clang380-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h projects/clang380-import/contrib/llvm/lib/ExecutionEngine/SectionMemoryManager.cpp projects/clang380-import/contrib/llvm/lib/IR/AsmWriter.cpp projects/clang380-import/contrib/llvm/lib/IR/Core.cpp projects/clang380-import/contrib/llvm/lib/IR/Function.cpp projects/clang380-import/contrib/llvm/lib/IR/IRPrintingPasses.cpp projects/clang380-import/contrib/llvm/lib/IR/LLVMContext.cpp projects/clang380-import/contrib/llvm/lib/IR/LLVMContextImpl.h projects/clang380-import/contrib/llvm/lib/IR/LegacyPassManager.cpp projects/clang380-import/contrib/llvm/lib/IR/Metadata.cpp projects/clang380-import/contrib/llvm/lib/IR/Verifier.cpp projects/clang380-import/contrib/llvm/lib/LTO/LTOCodeGenerator.cpp projects/clang380-import/contrib/llvm/lib/Linker/IRMover.cpp projects/clang380-import/contrib/llvm/lib/Linker/LinkModules.cpp projects/clang380-import/contrib/llvm/lib/MC/MCExpr.cpp projects/clang380-import/contrib/llvm/lib/MC/MCObjectFileInfo.cpp projects/clang380-import/contrib/llvm/lib/MC/MCObjectStreamer.cpp projects/clang380-import/contrib/llvm/lib/MC/WinCOFFObjectWriter.cpp projects/clang380-import/contrib/llvm/lib/Object/COFFObjectFile.cpp projects/clang380-import/contrib/llvm/lib/Object/ELF.cpp projects/clang380-import/contrib/llvm/lib/ProfileData/CoverageMapping.cpp projects/clang380-import/contrib/llvm/lib/ProfileData/CoverageMappingReader.cpp projects/clang380-import/contrib/llvm/lib/ProfileData/InstrProf.cpp projects/clang380-import/contrib/llvm/lib/ProfileData/InstrProfWriter.cpp projects/clang380-import/contrib/llvm/lib/Support/Debug.cpp projects/clang380-import/contrib/llvm/lib/Support/IntEqClasses.cpp projects/clang380-import/contrib/llvm/lib/Support/Triple.cpp projects/clang380-import/contrib/llvm/lib/Support/Windows/Path.inc projects/clang380-import/contrib/llvm/lib/Support/Windows/Signals.inc projects/clang380-import/contrib/llvm/lib/Support/Windows/WindowsSupport.h projects/clang380-import/contrib/llvm/lib/Support/raw_ostream.cpp projects/clang380-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPU.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUCallingConv.td projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/EvergreenInstructions.td projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCAsmInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIDefines.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIInsertWaits.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SIRegisterInfo.h projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/SITypeRewriter.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMCallingConv.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMInstrVFP.td projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/ARMMachineFunctionInfo.h projects/clang380-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp projects/clang380-import/contrib/llvm/lib/Target/ARM/Thumb1FrameLowering.h projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonBitSimplify.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.cpp projects/clang380-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.h projects/clang380-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.h projects/clang380-import/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetObjectFile.h projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h projects/clang380-import/contrib/llvm/lib/Target/PowerPC/PPCTLSDynamicCall.cpp projects/clang380-import/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.h projects/clang380-import/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPrinter.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPrinter.h projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyAsmBackend.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyELFObjectWriter.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCAsmInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.h projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyCFGStackify.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyInstrMemory.td projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyMCInstLower.h projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyRegStackify.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp projects/clang380-import/contrib/llvm/lib/Target/WebAssembly/known_gcc_test_failures.txt projects/clang380-import/contrib/llvm/lib/Target/X86/X86.h projects/clang380-import/contrib/llvm/lib/Target/X86/X86CallingConv.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86FastISel.cpp projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang380-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrExtension.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrInfo.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrMPX.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td projects/clang380-import/contrib/llvm/lib/Target/X86/X86IntrinsicsInfo.h projects/clang380-import/contrib/llvm/lib/Target/X86/X86MachineFunctionInfo.h projects/clang380-import/contrib/llvm/lib/Target/X86/X86OptimizeLEAs.cpp projects/clang380-import/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp projects/clang380-import/contrib/llvm/lib/Target/X86/X86RegisterInfo.h projects/clang380-import/contrib/llvm/lib/Transforms/IPO/ForceFunctionAttrs.cpp projects/clang380-import/contrib/llvm/lib/Transforms/IPO/FunctionAttrs.cpp projects/clang380-import/contrib/llvm/lib/Transforms/IPO/FunctionImport.cpp projects/clang380-import/contrib/llvm/lib/Transforms/IPO/IPO.cpp projects/clang380-import/contrib/llvm/lib/Transforms/IPO/LoopExtractor.cpp projects/clang380-import/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp projects/clang380-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp projects/clang380-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp projects/clang380-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/LICM.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp projects/clang380-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/ASTMutationListener.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/BuiltinTypes.def projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/Expr.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/OperationKinds.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/Stmt.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/Type.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/AST/TypeNodes.def projects/clang380-import/contrib/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchersInternal.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def projects/clang380-import/contrib/llvm/tools/clang/include/clang/Basic/VirtualFileSystem.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/CodeGen/BackendUtil.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Driver/Action.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Driver/Driver.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/clang380-import/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Lex/LiteralSupport.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Sema/Overload.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h projects/clang380-import/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ASTDumper.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/Decl.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/Expr.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/Type.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Basic/VirtualFileSystem.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprComplex.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenCLRuntime.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenCLRuntime.h projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.h projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenPGO.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CoverageMappingGen.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/CoverageMappingGen.h projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/Action.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/InputInfo.h projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/MSVCToolChain.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/MinGWToolChain.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/Tools.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Driver/Tools.h projects/clang380-import/contrib/llvm/tools/clang/lib/Edit/RewriteObjCFoundationAPI.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/Format.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/TokenAnnotator.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/UnwrappedLineParser.h projects/clang380-import/contrib/llvm/tools/clang/lib/Format/WhitespaceManager.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Format/WhitespaceManager.h projects/clang380-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Frontend/MultiplexConsumer.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Headers/altivec.h projects/clang380-import/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaCast.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateVariadic.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTCommon.h projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ProgramState.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SVals.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Store.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp projects/clang380-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Interpreter/CommandReturnObject.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Symbol/ClangASTContext.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Symbol/CompilerDeclContext.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Symbol/GoASTContext.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Symbol/SymbolFile.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Symbol/TypeSystem.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Target/CPPLanguageRuntime.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Target/Process.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Target/SystemRuntime.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Target/Thread.h projects/clang380-import/contrib/llvm/tools/lldb/include/lldb/Target/ThreadPlanStepOut.h projects/clang380-import/contrib/llvm/tools/lldb/source/Commands/CommandObjectProcess.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Core/StringList.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Host/common/HostInfoBase.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Interpreter/CommandInterpreter.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Interpreter/CommandReturnObject.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ABI/SysV-mips64/ABISysV_mips64.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Instruction/MIPS64/EmulateInstructionMIPS64.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/InferiorCallPOSIX.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DIERef.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h projects/clang380-import/contrib/llvm/tools/lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Symbol/CompilerDeclContext.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Symbol/LineTable.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Symbol/SymbolFile.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Target/Process.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Target/Thread.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Target/ThreadPlanShouldStopHere.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepOut.cpp projects/clang380-import/contrib/llvm/tools/lldb/source/Target/ThreadPlanStepOverRange.cpp projects/clang380-import/contrib/llvm/tools/lli/ChildTarget/ChildTarget.cpp projects/clang380-import/contrib/llvm/tools/lli/OrcLazyJIT.cpp projects/clang380-import/contrib/llvm/tools/lli/OrcLazyJIT.h projects/clang380-import/contrib/llvm/tools/lli/lli.cpp projects/clang380-import/contrib/llvm/tools/llvm-lto/llvm-lto.cpp projects/clang380-import/contrib/llvm/tools/llvm-objdump/COFFDump.cpp projects/clang380-import/contrib/llvm/tools/llvm-objdump/MachODump.cpp projects/clang380-import/contrib/llvm/tools/llvm-objdump/llvm-objdump.cpp projects/clang380-import/contrib/llvm/tools/llvm-objdump/llvm-objdump.h projects/clang380-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp projects/clang380-import/contrib/llvm/tools/llvm-readobj/ELFDumper.cpp projects/clang380-import/contrib/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp projects/clang380-import/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp projects/clang380-import/contrib/llvm/utils/TableGen/AsmWriterInst.cpp projects/clang380-import/lib/clang/include/clang/Basic/Version.inc projects/clang380-import/lib/clang/libllvmorcjit/Makefile projects/clang380-import/lib/clang/libllvmsupport/Makefile projects/clang380-import/usr.bin/clang/lli/Makefile Directory Properties: projects/clang380-import/contrib/llvm/ (props changed) projects/clang380-import/contrib/llvm/tools/clang/ (props changed) projects/clang380-import/contrib/llvm/tools/lldb/ (props changed) projects/clang380-import/contrib/llvm/tools/llvm-lto/ (props changed) Modified: projects/clang380-import/contrib/llvm/include/llvm/ADT/IntEqClasses.h ============================================================================== --- projects/clang380-import/contrib/llvm/include/llvm/ADT/IntEqClasses.h Thu Jan 14 17:16:47 2016 (r294023) +++ projects/clang380-import/contrib/llvm/include/llvm/ADT/IntEqClasses.h Thu Jan 14 17:42:46 2016 (r294024) @@ -53,10 +53,10 @@ public: NumClasses = 0; } - /// join - Join the equivalence classes of a and b. After joining classes, - /// findLeader(a) == findLeader(b). - /// This requires an uncompressed map. - void join(unsigned a, unsigned b); + /// Join the equivalence classes of a and b. After joining classes, + /// findLeader(a) == findLeader(b). This requires an uncompressed map. + /// Returns the new leader. + unsigned join(unsigned a, unsigned b); /// findLeader - Compute the leader of a's equivalence class. This is the /// smallest member of the class. Copied: projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerEmbeddedInt.h (from r293886, vendor/llvm/dist/include/llvm/ADT/PointerEmbeddedInt.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerEmbeddedInt.h Thu Jan 14 17:42:46 2016 (r294024, copy of r293886, vendor/llvm/dist/include/llvm/ADT/PointerEmbeddedInt.h) @@ -0,0 +1,103 @@ +//===- llvm/ADT/PointerEmbeddedInt.h ----------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_POINTEREMBEDDEDINT_H +#define LLVM_ADT_POINTEREMBEDDEDINT_H + +#include "llvm/ADT/DenseMapInfo.h" +#include "llvm/Support/PointerLikeTypeTraits.h" +#include <climits> + +namespace llvm { + +/// Utility to embed an integer into a pointer-like type. This is specifically +/// intended to allow embedding integers where fewer bits are required than +/// exist in a pointer, and the integer can participate in abstractions along +/// side other pointer-like types. For example it can be placed into a \c +/// PointerSumType or \c PointerUnion. +/// +/// Note that much like pointers, an integer value of zero has special utility +/// due to boolean conversions. For example, a non-null value can be tested for +/// in the above abstractions without testing the particular active member. +/// Also, the default constructed value zero initializes the integer. +template <typename IntT, int Bits = sizeof(IntT) * CHAR_BIT> +class PointerEmbeddedInt { + uintptr_t Value; + + static_assert(Bits < sizeof(uintptr_t) * CHAR_BIT, + "Cannot embed more bits than we have in a pointer!"); + + enum : uintptr_t { + // We shift as many zeros into the value as we can while preserving the + // number of bits desired for the integer. + Shift = sizeof(uintptr_t) * CHAR_BIT - Bits, + + // We also want to be able to mask out the preserved bits for asserts. + Mask = static_cast<uintptr_t>(-1) << Bits + }; + + friend class PointerLikeTypeTraits<PointerEmbeddedInt>; + + explicit PointerEmbeddedInt(uintptr_t Value) : Value(Value) {} + +public: + PointerEmbeddedInt() : Value(0) {} + + PointerEmbeddedInt(IntT I) : Value(static_cast<uintptr_t>(I) << Shift) { + assert((I & Mask) == 0 && "Integer has bits outside those preserved!"); + } + + PointerEmbeddedInt &operator=(IntT I) { + assert((I & Mask) == 0 && "Integer has bits outside those preserved!"); + Value = static_cast<uintptr_t>(I) << Shift; + } + + // Note that this imilict conversion additionally allows all of the basic + // comparison operators to work transparently, etc. + operator IntT() const { return static_cast<IntT>(Value >> Shift); } +}; + +// Provide pointer like traits to support use with pointer unions and sum +// types. +template <typename IntT, int Bits> +class PointerLikeTypeTraits<PointerEmbeddedInt<IntT, Bits>> { + typedef PointerEmbeddedInt<IntT, Bits> T; + +public: + static inline void *getAsVoidPointer(const T &P) { + return reinterpret_cast<void *>(P.Value); + } + static inline T getFromVoidPointer(void *P) { + return T(reinterpret_cast<uintptr_t>(P)); + } + static inline T getFromVoidPointer(const void *P) { + return T(reinterpret_cast<uintptr_t>(P)); + } + + enum { NumLowBitsAvailable = T::Shift }; +}; + +// Teach DenseMap how to use PointerEmbeddedInt objects as keys if the Int type +// itself can be a key. +template <typename IntT, int Bits> +struct DenseMapInfo<PointerEmbeddedInt<IntT, Bits>> { + typedef PointerEmbeddedInt<IntT, Bits> T; + + typedef DenseMapInfo<IntT> IntInfo; + + static inline T getEmptyKey() { return IntInfo::getEmptyKey(); } + static inline T getTombstoneKey() { return IntInfo::getTombstoneKey(); } + static unsigned getHashValue(const T &Arg) { + return IntInfo::getHashValue(Arg); + } + static bool isEqual(const T &LHS, const T &RHS) { return LHS == RHS; } +}; +} + +#endif Modified: projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerIntPair.h ============================================================================== --- projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerIntPair.h Thu Jan 14 17:16:47 2016 (r294023) +++ projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerIntPair.h Thu Jan 14 17:42:46 2016 (r294024) @@ -55,20 +55,25 @@ public: PointerTy getPointer() const { return Info::getPointer(Value); } - IntType getInt() const { return (IntType)Info::getInt(Value); } + IntType getInt() const { + return (IntType)Info::getInt(Value); + } void setPointer(PointerTy PtrVal) { Value = Info::updatePointer(Value, PtrVal); } - void setInt(IntType IntVal) { Value = Info::updateInt(Value, IntVal); } + void setInt(IntType IntVal) { + Value = Info::updateInt(Value, static_cast<intptr_t>(IntVal)); + } void initWithPointer(PointerTy PtrVal) { Value = Info::updatePointer(0, PtrVal); } void setPointerAndInt(PointerTy PtrVal, IntType IntVal) { - Value = Info::updateInt(Info::updatePointer(0, PtrVal), IntVal); + Value = Info::updateInt(Info::updatePointer(0, PtrVal), + static_cast<intptr_t>(IntVal)); } PointerTy const *getAddrOfPointer() const { Copied: projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerSumType.h (from r293886, vendor/llvm/dist/include/llvm/ADT/PointerSumType.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang380-import/contrib/llvm/include/llvm/ADT/PointerSumType.h Thu Jan 14 17:42:46 2016 (r294024, copy of r293886, vendor/llvm/dist/include/llvm/ADT/PointerSumType.h) @@ -0,0 +1,205 @@ +//===- llvm/ADT/PointerSumType.h --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_POINTERSUMTYPE_H +#define LLVM_ADT_POINTERSUMTYPE_H + +#include "llvm/ADT/DenseMapInfo.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/PointerLikeTypeTraits.h" + +namespace llvm { + +/// A compile time pair of an integer tag and the pointer-like type which it +/// indexes within a sum type. Also allows the user to specify a particular +/// traits class for pointer types with custom behavior such as over-aligned +/// allocation. +template <uintptr_t N, typename PointerArgT, + typename TraitsArgT = PointerLikeTypeTraits<PointerArgT>> +struct PointerSumTypeMember { + enum { Tag = N }; + typedef PointerArgT PointerT; + typedef TraitsArgT TraitsT; +}; + +namespace detail { + +template <typename TagT, typename... MemberTs> +struct PointerSumTypeHelper; + +} + +/// A sum type over pointer-like types. +/// +/// This is a normal tagged union across pointer-like types that uses the low +/// bits of the pointers to store the tag. +/// +/// Each member of the sum type is specified by passing a \c +/// PointerSumTypeMember specialization in the variadic member argument list. +/// This allows the user to control the particular tag value associated with +/// a particular type, use the same type for multiple different tags, and +/// customize the pointer-like traits used for a particular member. Note that +/// these *must* be specializations of \c PointerSumTypeMember, no other type +/// will suffice, even if it provides a compatible interface. +/// +/// This type implements all of the comparison operators and even hash table +/// support by comparing the underlying storage of the pointer values. It +/// doesn't support delegating to particular members for comparisons. +/// +/// It also default constructs to a zero tag with a null pointer, whatever that +/// would be. This means that the zero value for the tag type is significant +/// and may be desireable to set to a state that is particularly desirable to +/// default construct. +/// +/// There is no support for constructing or accessing with a dynamic tag as +/// that would fundamentally violate the type safety provided by the sum type. +template <typename TagT, typename... MemberTs> class PointerSumType { + uintptr_t Value; + + typedef detail::PointerSumTypeHelper<TagT, MemberTs...> HelperT; + +public: + PointerSumType() : Value(0) {} + + /// A typed constructor for a specific tagged member of the sum type. + template <TagT N> + static PointerSumType + create(typename HelperT::template Lookup<N>::PointerT Pointer) { + PointerSumType Result; + void *V = HelperT::template Lookup<N>::TraitsT::getAsVoidPointer(Pointer); + assert((reinterpret_cast<uintptr_t>(V) & HelperT::TagMask) == 0 && + "Pointer is insufficiently aligned to store the discriminant!"); + Result.Value = reinterpret_cast<uintptr_t>(V) | N; + return Result; + } + + TagT getTag() const { return static_cast<TagT>(Value & HelperT::TagMask); } + + template <TagT N> bool is() const { return N == getTag(); } + + template <TagT N> typename HelperT::template Lookup<N>::PointerT get() const { + void *P = is<N>() ? getImpl() : nullptr; + return HelperT::template Lookup<N>::TraitsT::getFromVoidPointer(P); + } + + template <TagT N> + typename HelperT::template Lookup<N>::PointerT cast() const { + assert(is<N>() && "This instance has a different active member."); + return HelperT::template Lookup<N>::TraitsT::getFromVoidPointer(getImpl()); + } + + operator bool() const { return Value & HelperT::PointerMask; } + bool operator==(const PointerSumType &R) const { return Value == R.Value; } + bool operator!=(const PointerSumType &R) const { return Value != R.Value; } + bool operator<(const PointerSumType &R) const { return Value < R.Value; } + bool operator>(const PointerSumType &R) const { return Value > R.Value; } + bool operator<=(const PointerSumType &R) const { return Value <= R.Value; } + bool operator>=(const PointerSumType &R) const { return Value >= R.Value; } + + uintptr_t getOpaqueValue() const { return Value; } + +protected: + void *getImpl() const { + return reinterpret_cast<void *>(Value & HelperT::PointerMask); + } +}; + +namespace detail { + +/// A helper template for implementing \c PointerSumType. It provides fast +/// compile-time lookup of the member from a particular tag value, along with +/// useful constants and compile time checking infrastructure.. +template <typename TagT, typename... MemberTs> +struct PointerSumTypeHelper : MemberTs... { + // First we use a trick to allow quickly looking up information about + // a particular member of the sum type. This works because we arranged to + // have this type derive from all of the member type templates. We can select + // the matching member for a tag using type deduction during overload + // resolution. + template <TagT N, typename PointerT, typename TraitsT> + static PointerSumTypeMember<N, PointerT, TraitsT> + LookupOverload(PointerSumTypeMember<N, PointerT, TraitsT> *); + template <TagT N> static void LookupOverload(...); + template <TagT N> struct Lookup { + // Compute a particular member type by resolving the lookup helper ovorload. + typedef decltype(LookupOverload<N>( + static_cast<PointerSumTypeHelper *>(nullptr))) MemberT; + + /// The Nth member's pointer type. + typedef typename MemberT::PointerT PointerT; + + /// The Nth member's traits type. + typedef typename MemberT::TraitsT TraitsT; + }; + + // Next we need to compute the number of bits available for the discriminant + // by taking the min of the bits available for each member. Much of this + // would be amazingly easier with good constexpr support. + template <uintptr_t V, uintptr_t... Vs> + struct Min : std::integral_constant< + uintptr_t, (V < Min<Vs...>::value ? V : Min<Vs...>::value)> { + }; + template <uintptr_t V> + struct Min<V> : std::integral_constant<uintptr_t, V> {}; + enum { NumTagBits = Min<MemberTs::TraitsT::NumLowBitsAvailable...>::value }; + + // Also compute the smallest discriminant and various masks for convenience. + enum : uint64_t { + MinTag = Min<MemberTs::Tag...>::value, + PointerMask = static_cast<uint64_t>(-1) << NumTagBits, + TagMask = ~PointerMask + }; + + // Finally we need a recursive template to do static checks of each + // member. + template <typename MemberT, typename... InnerMemberTs> + struct Checker : Checker<InnerMemberTs...> { + static_assert(MemberT::Tag < (1 << NumTagBits), + "This discriminant value requires too many bits!"); + }; + template <typename MemberT> struct Checker<MemberT> : std::true_type { + static_assert(MemberT::Tag < (1 << NumTagBits), + "This discriminant value requires too many bits!"); + }; + static_assert(Checker<MemberTs...>::value, + "Each member must pass the checker."); +}; + +} + +// Teach DenseMap how to use PointerSumTypes as keys. +template <typename TagT, typename... MemberTs> +struct DenseMapInfo<PointerSumType<TagT, MemberTs...>> { + typedef PointerSumType<TagT, MemberTs...> SumType; + + typedef detail::PointerSumTypeHelper<TagT, MemberTs...> HelperT; + enum { SomeTag = HelperT::MinTag }; + typedef typename HelperT::template Lookup<HelperT::MinTag>::PointerT + SomePointerT; + typedef DenseMapInfo<SomePointerT> SomePointerInfo; + + static inline SumType getEmptyKey() { + return SumType::create<SomeTag>(SomePointerInfo::getEmptyKey()); + } + static inline SumType getTombstoneKey() { + return SumType::create<SomeTag>( + SomePointerInfo::getTombstoneKey()); + } + static unsigned getHashValue(const SumType &Arg) { + uintptr_t OpaqueValue = Arg.getOpaqueValue(); + return DenseMapInfo<uintptr_t>::getHashValue(OpaqueValue); + } + static bool isEqual(const SumType &LHS, const SumType &RHS) { + return LHS == RHS; + } +}; + +} + +#endif Modified: projects/clang380-import/contrib/llvm/include/llvm/ADT/Twine.h ============================================================================== --- projects/clang380-import/contrib/llvm/include/llvm/ADT/Twine.h Thu Jan 14 17:16:47 2016 (r294023) +++ projects/clang380-import/contrib/llvm/include/llvm/ADT/Twine.h Thu Jan 14 17:42:46 2016 (r294024) @@ -101,15 +101,13 @@ namespace llvm { /// A pointer to a SmallString instance. SmallStringKind, - /// A char value reinterpreted as a pointer, to render as a character. + /// A char value, to render as a character. CharKind, - /// An unsigned int value reinterpreted as a pointer, to render as an - /// unsigned decimal integer. + /// An unsigned int value, to render as an unsigned decimal integer. DecUIKind, - /// An int value reinterpreted as a pointer, to render as a signed - /// decimal integer. + /// An int value, to render as a signed decimal integer. DecIKind, /// A pointer to an unsigned long value, to render as an unsigned decimal Modified: projects/clang380-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h ============================================================================== --- projects/clang380-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h Thu Jan 14 17:16:47 2016 (r294023) +++ projects/clang380-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h Thu Jan 14 17:42:46 2016 (r294024) @@ -104,54 +104,10 @@ class LazyCallGraph { public: class Node; class SCC; + class iterator; typedef SmallVector<PointerUnion<Function *, Node *>, 4> NodeVectorT; typedef SmallVectorImpl<PointerUnion<Function *, Node *>> NodeVectorImplT; - /// A lazy iterator used for both the entry nodes and child nodes. - /// - /// When this iterator is dereferenced, if not yet available, a function will - /// be scanned for "calls" or uses of functions and its child information - /// will be constructed. All of these results are accumulated and cached in - /// the graph. - class iterator - : public iterator_adaptor_base<iterator, NodeVectorImplT::iterator, - std::forward_iterator_tag, Node> { - friend class LazyCallGraph; - friend class LazyCallGraph::Node; - - LazyCallGraph *G; - NodeVectorImplT::iterator E; - - // Build the iterator for a specific position in a node list. - iterator(LazyCallGraph &G, NodeVectorImplT::iterator NI, - NodeVectorImplT::iterator E) - : iterator_adaptor_base(NI), G(&G), E(E) { - while (I != E && I->isNull()) - ++I; - } - - public: - iterator() {} - - using iterator_adaptor_base::operator++; - iterator &operator++() { - do { - ++I; - } while (I != E && I->isNull()); - return *this; - } - - reference operator*() const { - if (I->is<Node *>()) - return *I->get<Node *>(); - - Function *F = I->get<Function *>(); - Node &ChildN = G->get(*F); - *I = &ChildN; - return ChildN; - } - }; - /// A node in the call graph. /// /// This represents a single node. It's primary roles are to cache the list of @@ -200,6 +156,51 @@ public: bool operator!=(const Node &N) const { return !operator==(N); } }; + /// A lazy iterator used for both the entry nodes and child nodes. + /// + /// When this iterator is dereferenced, if not yet available, a function will + /// be scanned for "calls" or uses of functions and its child information + /// will be constructed. All of these results are accumulated and cached in + /// the graph. + class iterator + : public iterator_adaptor_base<iterator, NodeVectorImplT::iterator, + std::forward_iterator_tag, Node> { + friend class LazyCallGraph; + friend class LazyCallGraph::Node; + + LazyCallGraph *G; + NodeVectorImplT::iterator E; + + // Build the iterator for a specific position in a node list. + iterator(LazyCallGraph &G, NodeVectorImplT::iterator NI, + NodeVectorImplT::iterator E) + : iterator_adaptor_base(NI), G(&G), E(E) { + while (I != E && I->isNull()) + ++I; + } + + public: + iterator() {} + + using iterator_adaptor_base::operator++; + iterator &operator++() { + do { + ++I; + } while (I != E && I->isNull()); + return *this; + } + + reference operator*() const { + if (I->is<Node *>()) + return *I->get<Node *>(); + + Function *F = I->get<Function *>(); + Node &ChildN = G->get(*F); + *I = &ChildN; + return ChildN; + } + }; + /// An SCC of the call graph. /// /// This represents a Strongly Connected Component of the call graph as Modified: projects/clang380-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h ============================================================================== --- projects/clang380-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h Thu Jan 14 17:16:47 2016 (r294023) +++ projects/clang380-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h Thu Jan 14 17:42:46 2016 (r294024) @@ -59,38 +59,37 @@ template<class N, class M> class LoopInf template<class N, class M> class LoopBase; //===----------------------------------------------------------------------===// -/// LoopBase class - Instances of this class are used to represent loops that -/// are detected in the flow graph +/// Instances of this class are used to represent loops that are detected in the +/// flow graph. /// template<class BlockT, class LoopT> class LoopBase { LoopT *ParentLoop; - // SubLoops - Loops contained entirely within this one. + // Loops contained entirely within this one. std::vector<LoopT *> SubLoops; - // Blocks - The list of blocks in this loop. First entry is the header node. + // The list of blocks in this loop. First entry is the header node. std::vector<BlockT*> Blocks; SmallPtrSet<const BlockT*, 8> DenseBlockSet; - /// Indicator that this loops has been "unlooped", so there's no loop here - /// anymore. - bool IsUnloop = false; + /// Indicator that this loop is no longer a valid loop. + bool IsInvalid = false; LoopBase(const LoopBase<BlockT, LoopT> &) = delete; const LoopBase<BlockT, LoopT>& operator=(const LoopBase<BlockT, LoopT> &) = delete; public: - /// Loop ctor - This creates an empty loop. + /// This creates an empty loop. LoopBase() : ParentLoop(nullptr) {} ~LoopBase() { for (size_t i = 0, e = SubLoops.size(); i != e; ++i) delete SubLoops[i]; } - /// getLoopDepth - Return the nesting level of this loop. An outer-most - /// loop has depth 1, for consistency with loop depth values used for basic - /// blocks, where depth 0 is used for blocks not inside any loops. + /// Return the nesting level of this loop. An outer-most loop has depth 1, + /// for consistency with loop depth values used for basic blocks, where depth + /// 0 is used for blocks not inside any loops. unsigned getLoopDepth() const { unsigned D = 1; for (const LoopT *CurLoop = ParentLoop; CurLoop; @@ -101,33 +100,28 @@ public: BlockT *getHeader() const { return Blocks.front(); } LoopT *getParentLoop() const { return ParentLoop; } - /// setParentLoop is a raw interface for bypassing addChildLoop. + /// This is a raw interface for bypassing addChildLoop. void setParentLoop(LoopT *L) { ParentLoop = L; } - /// contains - Return true if the specified loop is contained within in - /// this loop. - /// + /// Return true if the specified loop is contained within in this loop. bool contains(const LoopT *L) const { if (L == this) return true; if (!L) return false; return contains(L->getParentLoop()); } - /// contains - Return true if the specified basic block is in this loop. - /// + /// Return true if the specified basic block is in this loop. bool contains(const BlockT *BB) const { return DenseBlockSet.count(BB); } - /// contains - Return true if the specified instruction is in this loop. - /// + /// Return true if the specified instruction is in this loop. template<class InstT> bool contains(const InstT *Inst) const { return contains(Inst->getParent()); } - /// iterator/begin/end - Return the loops contained entirely within this loop. - /// + /// Return the loops contained entirely within this loop. const std::vector<LoopT *> &getSubLoops() const { return SubLoops; } std::vector<LoopT *> &getSubLoopsVector() { return SubLoops; } typedef typename std::vector<LoopT *>::const_iterator iterator; @@ -139,8 +133,7 @@ public: reverse_iterator rend() const { return SubLoops.rend(); } bool empty() const { return SubLoops.empty(); } - /// getBlocks - Get a list of the basic blocks which make up this loop. - /// + /// Get a list of the basic blocks which make up this loop. const std::vector<BlockT*> &getBlocks() const { return Blocks; } typedef typename std::vector<BlockT*>::const_iterator block_iterator; block_iterator block_begin() const { return Blocks.begin(); } @@ -149,21 +142,19 @@ public: return make_range(block_begin(), block_end()); } - /// getNumBlocks - Get the number of blocks in this loop in constant time. + /// Get the number of blocks in this loop in constant time. unsigned getNumBlocks() const { return Blocks.size(); } - /// Mark this loop as having been unlooped - the last backedge was removed and - /// we no longer have a loop. - void markUnlooped() { IsUnloop = true; } + /// Invalidate the loop, indicating that it is no longer a loop. + void invalidate() { IsInvalid = true; } - /// Return true if this no longer represents a loop. - bool isUnloop() const { return IsUnloop; } + /// Return true if this loop is no longer valid. + bool isInvalid() { return IsInvalid; } - /// isLoopExiting - True if terminator in the block can branch to another - /// block that is outside of the current loop. - /// + /// True if terminator in the block can branch to another block that is + /// outside of the current loop. bool isLoopExiting(const BlockT *BB) const { typedef GraphTraits<const BlockT*> BlockTraits; for (typename BlockTraits::ChildIteratorType SI = @@ -175,8 +166,7 @@ public: return false; } - /// getNumBackEdges - Calculate the number of back edges to the loop header - /// + /// Calculate the number of back edges to the loop header. unsigned getNumBackEdges() const { unsigned NumBackEdges = 0; BlockT *H = getHeader(); @@ -199,53 +189,49 @@ public: // induction variable canonicalization pass should be used to normalize loops // for easy analysis. These methods assume canonical loops. - /// getExitingBlocks - Return all blocks inside the loop that have successors - /// outside of the loop. These are the blocks _inside of the current loop_ - /// which branch out. The returned list is always unique. - /// + /// Return all blocks inside the loop that have successors outside of the + /// loop. These are the blocks _inside of the current loop_ which branch out. + /// The returned list is always unique. void getExitingBlocks(SmallVectorImpl<BlockT *> &ExitingBlocks) const; - /// getExitingBlock - If getExitingBlocks would return exactly one block, - /// return that block. Otherwise return null. + /// If getExitingBlocks would return exactly one block, return that block. + /// Otherwise return null. BlockT *getExitingBlock() const; - /// getExitBlocks - Return all of the successor blocks of this loop. These - /// are the blocks _outside of the current loop_ which are branched to. - /// + /// Return all of the successor blocks of this loop. These are the blocks + /// _outside of the current loop_ which are branched to. void getExitBlocks(SmallVectorImpl<BlockT*> &ExitBlocks) const; - /// getExitBlock - If getExitBlocks would return exactly one block, - /// return that block. Otherwise return null. + /// If getExitBlocks would return exactly one block, return that block. + /// Otherwise return null. BlockT *getExitBlock() const; /// Edge type. typedef std::pair<const BlockT*, const BlockT*> Edge; - /// getExitEdges - Return all pairs of (_inside_block_,_outside_block_). + /// Return all pairs of (_inside_block_,_outside_block_). void getExitEdges(SmallVectorImpl<Edge> &ExitEdges) const; - /// getLoopPreheader - If there is a preheader for this loop, return it. A - /// loop has a preheader if there is only one edge to the header of the loop - /// from outside of the loop. If this is the case, the block branching to the - /// header of the loop is the preheader node. + /// If there is a preheader for this loop, return it. A loop has a preheader + /// if there is only one edge to the header of the loop from outside of the + /// loop. If this is the case, the block branching to the header of the loop + /// is the preheader node. /// /// This method returns null if there is no preheader for the loop. - /// BlockT *getLoopPreheader() const; - /// getLoopPredecessor - If the given loop's header has exactly one unique - /// predecessor outside the loop, return it. Otherwise return null. - /// This is less strict that the loop "preheader" concept, which requires + /// If the given loop's header has exactly one unique predecessor outside the + /// loop, return it. Otherwise return null. + /// This is less strict that the loop "preheader" concept, which requires /// the predecessor to have exactly one successor. - /// BlockT *getLoopPredecessor() const; - /// getLoopLatch - If there is a single latch block for this loop, return it. + /// If there is a single latch block for this loop, return it. /// A latch block is a block that contains a branch back to the header. BlockT *getLoopLatch() const; - /// getLoopLatches - Return all loop latch blocks of this loop. A latch block - /// is a block that contains a branch back to the header. + /// Return all loop latch blocks of this loop. A latch block is a block that + /// contains a branch back to the header. void getLoopLatches(SmallVectorImpl<BlockT *> &LoopLatches) const { BlockT *H = getHeader(); typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits; @@ -260,32 +246,29 @@ public: // APIs for updating loop information after changing the CFG // - /// addBasicBlockToLoop - This method is used by other analyses to update loop - /// information. NewBB is set to be a new member of the current loop. + /// This method is used by other analyses to update loop information. + /// NewBB is set to be a new member of the current loop. /// Because of this, it is added as a member of all parent loops, and is added /// to the specified LoopInfo object as being in the current basic block. It /// is not valid to replace the loop header with this method. - /// void addBasicBlockToLoop(BlockT *NewBB, LoopInfoBase<BlockT, LoopT> &LI); - /// replaceChildLoopWith - This is used when splitting loops up. It replaces - /// the OldChild entry in our children list with NewChild, and updates the - /// parent pointer of OldChild to be null and the NewChild to be this loop. + /// This is used when splitting loops up. It replaces the OldChild entry in + /// our children list with NewChild, and updates the parent pointer of + /// OldChild to be null and the NewChild to be this loop. /// This updates the loop depth of the new child. void replaceChildLoopWith(LoopT *OldChild, LoopT *NewChild); - /// addChildLoop - Add the specified loop to be a child of this loop. This - /// updates the loop depth of the new child. - /// + /// Add the specified loop to be a child of this loop. + /// This updates the loop depth of the new child. void addChildLoop(LoopT *NewChild) { assert(!NewChild->ParentLoop && "NewChild already has a parent!"); NewChild->ParentLoop = static_cast<LoopT *>(this); SubLoops.push_back(NewChild); } - /// removeChildLoop - This removes the specified child from being a subloop of - /// this loop. The loop is not deleted, as it will presumably be inserted - /// into another loop. + /// This removes the specified child from being a subloop of this loop. The + /// loop is not deleted, as it will presumably be inserted into another loop. LoopT *removeChildLoop(iterator I) { assert(I != SubLoops.end() && "Cannot remove end iterator!"); LoopT *Child = *I; @@ -295,7 +278,7 @@ public: return Child; } - /// addBlockEntry - This adds a basic block directly to the basic block list. + /// This adds a basic block directly to the basic block list. /// This should only be used by transformations that create new loops. Other /// transformations should use addBasicBlockToLoop. void addBlockEntry(BlockT *BB) { @@ -303,19 +286,18 @@ public: DenseBlockSet.insert(BB); } - /// reverseBlocks - interface to reverse Blocks[from, end of loop] in this loop + /// interface to reverse Blocks[from, end of loop] in this loop void reverseBlock(unsigned from) { std::reverse(Blocks.begin() + from, Blocks.end()); } - /// reserveBlocks- interface to do reserve() for Blocks + /// interface to do reserve() for Blocks void reserveBlocks(unsigned size) { Blocks.reserve(size); } - /// moveToHeader - This method is used to move BB (which must be part of this - /// loop) to be the loop header of the loop (the block that dominates all - /// others). + /// This method is used to move BB (which must be part of this loop) to be the + /// loop header of the loop (the block that dominates all others). void moveToHeader(BlockT *BB) { if (Blocks[0] == BB) return; for (unsigned i = 0; ; ++i) { @@ -328,9 +310,9 @@ public: } } - /// removeBlockFromLoop - This removes the specified basic block from the - /// current loop, updating the Blocks as appropriate. This does not update - /// the mapping in the LoopInfo class. + /// This removes the specified basic block from the current loop, updating the + /// Blocks as appropriate. This does not update the mapping in the LoopInfo + /// class. void removeBlockFromLoop(BlockT *BB) { auto I = std::find(Blocks.begin(), Blocks.end(), BB); assert(I != Blocks.end() && "N is not in this list!"); @@ -339,10 +321,10 @@ public: DenseBlockSet.erase(BB); } - /// verifyLoop - Verify loop structure + /// Verify loop structure void verifyLoop() const; - /// verifyLoop - Verify loop structure of this loop and all nested loops. + /// Verify loop structure of this loop and all nested loops. void verifyLoopNest(DenseSet<const LoopT*> *Loops) const; void print(raw_ostream &OS, unsigned Depth = 0) const; @@ -368,28 +350,26 @@ class Loop : public LoopBase<BasicBlock, public: Loop() {} - /// isLoopInvariant - Return true if the specified value is loop invariant - /// + /// Return true if the specified value is loop invariant. bool isLoopInvariant(const Value *V) const; - /// hasLoopInvariantOperands - Return true if all the operands of the - /// specified instruction are loop invariant. + /// Return true if all the operands of the specified instruction are loop + /// invariant. bool hasLoopInvariantOperands(const Instruction *I) const; - /// makeLoopInvariant - If the given value is an instruction inside of the - /// loop and it can be hoisted, do so to make it trivially loop-invariant. + /// If the given value is an instruction inside of the loop and it can be + /// hoisted, do so to make it trivially loop-invariant. /// Return true if the value after any hoisting is loop invariant. This /// function can be used as a slightly more aggressive replacement for /// isLoopInvariant. /// /// If InsertPt is specified, it is the point to hoist instructions to. /// If null, the terminator of the loop preheader is used. - /// bool makeLoopInvariant(Value *V, bool &Changed, Instruction *InsertPt = nullptr) const; - /// makeLoopInvariant - If the given instruction is inside of the - /// loop and it can be hoisted, do so to make it trivially loop-invariant. + /// If the given instruction is inside of the loop and it can be hoisted, do + /// so to make it trivially loop-invariant. /// Return true if the instruction after any hoisting is loop invariant. This /// function can be used as a slightly more aggressive replacement for /// isLoopInvariant. @@ -400,28 +380,26 @@ public: bool makeLoopInvariant(Instruction *I, bool &Changed, Instruction *InsertPt = nullptr) const; - /// getCanonicalInductionVariable - Check to see if the loop has a canonical - /// induction variable: an integer recurrence that starts at 0 and increments - /// by one each time through the loop. If so, return the phi node that - /// corresponds to it. + /// Check to see if the loop has a canonical induction variable: an integer + /// recurrence that starts at 0 and increments by one each time through the + /// loop. If so, return the phi node that corresponds to it. /// /// The IndVarSimplify pass transforms loops to have a canonical induction /// variable. /// PHINode *getCanonicalInductionVariable() const; - /// isLCSSAForm - Return true if the Loop is in LCSSA form + /// Return true if the Loop is in LCSSA form. bool isLCSSAForm(DominatorTree &DT) const; - /// \brief Return true if this Loop and all inner subloops are in LCSSA form. + /// Return true if this Loop and all inner subloops are in LCSSA form. bool isRecursivelyLCSSAForm(DominatorTree &DT) const; - /// isLoopSimplifyForm - Return true if the Loop is in the form that - /// the LoopSimplify form transforms loops to, which is sometimes called - /// normal form. + /// Return true if the Loop is in the form that the LoopSimplify form + /// transforms loops to, which is sometimes called normal form. bool isLoopSimplifyForm() const; - /// isSafeToClone - Return true if the loop body is safe to clone in practice. + /// Return true if the loop body is safe to clone in practice. bool isSafeToClone() const; /// Returns true if the loop is annotated parallel. @@ -454,23 +432,22 @@ public: /// operand should should be the node itself. void setLoopID(MDNode *LoopID) const; - /// hasDedicatedExits - Return true if no exit block for the loop - /// has a predecessor that is outside the loop. + /// Return true if no exit block for the loop has a predecessor that is + /// outside the loop. bool hasDedicatedExits() const; - /// getUniqueExitBlocks - Return all unique successor blocks of this loop. + /// Return all unique successor blocks of this loop. /// These are the blocks _outside of the current loop_ which are branched to. /// This assumes that loop exits are in canonical form. - /// void getUniqueExitBlocks(SmallVectorImpl<BasicBlock *> &ExitBlocks) const; - /// getUniqueExitBlock - If getUniqueExitBlocks would return exactly one - /// block, return that block. Otherwise return null. + /// If getUniqueExitBlocks would return exactly one block, return that block. + /// Otherwise return null. BasicBlock *getUniqueExitBlock() const; void dump() const; - /// \brief Return the debug location of the start of this loop. + /// Return the debug location of the start of this loop. /// This looks for a BB terminating instruction with a known debug /// location by looking at the preheader and header blocks. If it /// cannot find a terminating instruction with location information, @@ -498,7 +475,7 @@ private: }; //===----------------------------------------------------------------------===// -/// LoopInfo - This class builds and contains all of the top level loop +/// This class builds and contains all of the top-level loop /// structures in the specified function. /// @@ -507,6 +484,8 @@ class LoopInfoBase { // BBMap - Mapping of basic blocks to the inner most loop they occur in DenseMap<const BlockT *, LoopT *> BBMap; std::vector<LoopT *> TopLevelLoops; + std::vector<LoopT *> RemovedLoops; + friend class LoopBase<BlockT, LoopT>; friend class LoopInfo; @@ -538,6 +517,9 @@ public: for (auto *L : TopLevelLoops) delete L; TopLevelLoops.clear(); + for (auto *L : RemovedLoops) + delete L; + RemovedLoops.clear(); } /// iterator/begin/end - The interface to the top-level loops in the current @@ -552,33 +534,30 @@ public: reverse_iterator rend() const { return TopLevelLoops.rend(); } bool empty() const { return TopLevelLoops.empty(); } - /// getLoopFor - Return the inner most loop that BB lives in. If a basic - /// block is in no loop (for example the entry node), null is returned. - /// + /// Return the inner most loop that BB lives in. If a basic block is in no + /// loop (for example the entry node), null is returned. LoopT *getLoopFor(const BlockT *BB) const { return BBMap.lookup(BB); } - /// operator[] - same as getLoopFor... - /// + /// Same as getLoopFor. const LoopT *operator[](const BlockT *BB) const { return getLoopFor(BB); } - /// getLoopDepth - Return the loop nesting level of the specified block. A - /// depth of 0 means the block is not inside any loop. - /// + /// Return the loop nesting level of the specified block. A depth of 0 means + /// the block is not inside any loop. unsigned getLoopDepth(const BlockT *BB) const { const LoopT *L = getLoopFor(BB); return L ? L->getLoopDepth() : 0; } - // isLoopHeader - True if the block is a loop header node + // True if the block is a loop header node bool isLoopHeader(const BlockT *BB) const { const LoopT *L = getLoopFor(BB); return L && L->getHeader() == BB; } - /// removeLoop - This removes the specified top-level loop from this loop info - /// object. The loop is not deleted, as it will presumably be inserted into + /// This removes the specified top-level loop from this loop info object. + /// The loop is not deleted, as it will presumably be inserted into /// another loop. LoopT *removeLoop(iterator I) { assert(I != end() && "Cannot remove end iterator!"); @@ -588,9 +567,9 @@ public: return L; } - /// changeLoopFor - Change the top-level loop that contains BB to the - /// specified loop. This should be used by transformations that restructure - /// the loop hierarchy tree. + /// Change the top-level loop that contains BB to the specified loop. + /// This should be used by transformations that restructure the loop hierarchy + /// tree. void changeLoopFor(BlockT *BB, LoopT *L) { if (!L) { BBMap.erase(BB); @@ -599,8 +578,8 @@ public: BBMap[BB] = L; } - /// changeTopLevelLoop - Replace the specified loop in the top-level loops - /// list with the indicated loop. + /// Replace the specified loop in the top-level loops list with the indicated *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601141742.u0EHglUl087422>