svn commit: r312197 - in projects/clang400-import: contrib/llvm contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/CodeGen/...
Dimitry Andric
dim at FreeBSD.org
Sat Jan 14 22:12:17 UTC 2017
Author: dim
Date: Sat Jan 14 22:12:13 2017
New Revision: 312197
URL: https://svnweb.freebsd.org/changeset/base/312197
Log:
Merge llvm, clang, lld and lldb release_40 branch r292009. Also update
build glue.
Added:
projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumperBase.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumperBase.h
projects/clang400-import/contrib/llvm/include/llvm/Object/Decompressor.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/Object/Decompressor.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/IVUsersPrinter.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/IVUsersPrinter.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h
- copied unchanged from r312186, vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopPassManager.h
projects/clang400-import/contrib/llvm/include/llvm/XRay/
- copied from r312186, vendor/llvm/dist/include/llvm/XRay/
projects/clang400-import/contrib/llvm/lib/Analysis/LoopAnalysisManager.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/Analysis/LoopAnalysisManager.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/CVTypeDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeDumper.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabase.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
projects/clang400-import/contrib/llvm/lib/Object/Decompressor.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/Object/Decompressor.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/IVUsersPrinter.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/IVUsersPrinter.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopPassManager.cpp
- copied unchanged from r312186, vendor/llvm/dist/lib/Transforms/Scalar/LoopPassManager.cpp
projects/clang400-import/contrib/llvm/lib/XRay/
- copied from r312186, vendor/llvm/dist/lib/XRay/
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyBuiltinDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyBuiltinDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyClassDefinitionDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyClassDefinitionDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyCompilandDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyCompilandDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyEnumDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyEnumDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyExternalSymbolDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyExternalSymbolDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyFunctionDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyFunctionDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypeDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypeDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypedefDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyTypedefDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyVariableDumper.cpp
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/PrettyVariableDumper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-xray/func-id-helper.cc
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/func-id-helper.cc
projects/clang400-import/contrib/llvm/tools/llvm-xray/func-id-helper.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/func-id-helper.h
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-account.cc
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-account.cc
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-account.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-account.h
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-converter.cc
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-converter.cc
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-converter.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-converter.h
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-record-yaml.h
- copied unchanged from r312186, vendor/llvm/dist/tools/llvm-xray/xray-record-yaml.h
Deleted:
projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopPassManager.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDumper.h
projects/clang400-import/contrib/llvm/lib/Analysis/LoopPassManager.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/TypeDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/BuiltinDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/BuiltinDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ClassDefinitionDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/CompilandDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/CompilandDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/EnumDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/EnumDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ExternalSymbolDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/ExternalSymbolDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/FunctionDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/FunctionDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypeDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypeDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypedefDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/TypedefDumper.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/VariableDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/VariableDumper.h
Modified:
projects/clang400-import/contrib/llvm/LICENSE.TXT
projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h
projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/MSF/StreamArray.h
projects/clang400-import/contrib/llvm/include/llvm/IR/DIBuilder.h
projects/clang400-import/contrib/llvm/include/llvm/IR/DebugInfoMetadata.h
projects/clang400-import/contrib/llvm/include/llvm/IR/GlobalObject.h
projects/clang400-import/contrib/llvm/include/llvm/IR/Intrinsics.td
projects/clang400-import/contrib/llvm/include/llvm/IR/IntrinsicsAArch64.td
projects/clang400-import/contrib/llvm/include/llvm/IR/IntrinsicsARM.td
projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndex.h
projects/clang400-import/contrib/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h
projects/clang400-import/contrib/llvm/include/llvm/ObjectYAML/DWARFYAML.h
projects/clang400-import/contrib/llvm/include/llvm/ObjectYAML/MachOYAML.h
projects/clang400-import/contrib/llvm/include/llvm/Passes/PassBuilder.h
projects/clang400-import/contrib/llvm/include/llvm/ProfileData/InstrProf.h
projects/clang400-import/contrib/llvm/include/llvm/Support/CommandLine.h
projects/clang400-import/contrib/llvm/include/llvm/Support/Dwarf.h
projects/clang400-import/contrib/llvm/include/llvm/Support/FileOutputBuffer.h
projects/clang400-import/contrib/llvm/include/llvm/Support/GenericDomTree.h
projects/clang400-import/contrib/llvm/include/llvm/Target/TargetLowering.h
projects/clang400-import/contrib/llvm/include/llvm/Target/TargetMachine.h
projects/clang400-import/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td
projects/clang400-import/contrib/llvm/include/llvm/Target/TargetSubtargetInfo.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/IndVarSimplify.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LICM.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopDeletion.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopInstSimplify.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopRotation.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Utils/LoopUtils.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Utils/UnrollLoop.h
projects/clang400-import/contrib/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
projects/clang400-import/contrib/llvm/lib/Analysis/AssumptionCache.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/CostModel.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/IVUsers.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/InlineCost.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/LazyValueInfo.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/LoopAccessAnalysis.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/LoopInfo.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/LoopPass.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/TargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Analysis/ValueTracking.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/DIE.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegBankSelect.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegisterBank.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/MachineInstr.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/ScheduleDAG.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
projects/clang400-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/CodeView/SymbolDumper.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
projects/clang400-import/contrib/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
projects/clang400-import/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
projects/clang400-import/contrib/llvm/lib/IR/AutoUpgrade.cpp
projects/clang400-import/contrib/llvm/lib/IR/DIBuilder.cpp
projects/clang400-import/contrib/llvm/lib/IR/Globals.cpp
projects/clang400-import/contrib/llvm/lib/IR/LLVMContextImpl.h
projects/clang400-import/contrib/llvm/lib/LTO/LTOBackend.cpp
projects/clang400-import/contrib/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
projects/clang400-import/contrib/llvm/lib/ObjectYAML/DWARFYAML.cpp
projects/clang400-import/contrib/llvm/lib/Passes/PassBuilder.cpp
projects/clang400-import/contrib/llvm/lib/ProfileData/InstrProf.cpp
projects/clang400-import/contrib/llvm/lib/Support/FileOutputBuffer.cpp
projects/clang400-import/contrib/llvm/lib/Support/Host.cpp
projects/clang400-import/contrib/llvm/lib/Support/TarWriter.cpp
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64GenRegisterBankInfo.def
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUInstructions.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/EvergreenInstructions.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIInstrInfo.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIInstructions.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOP1Instructions.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOP2Instructions.td
projects/clang400-import/contrib/llvm/lib/Target/AMDGPU/VOPCInstructions.td
projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.h
projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/ManagedStringPool.h
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXSection.h
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetObjectFile.h
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/TargetMachine.cpp
projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Target/X86/X86.td
projects/clang400-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
projects/clang400-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td
projects/clang400-import/contrib/llvm/lib/Target/X86/X86InstrSSE.td
projects/clang400-import/contrib/llvm/lib/Target/X86/X86Subtarget.h
projects/clang400-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.cpp
projects/clang400-import/contrib/llvm/lib/Target/X86/X86TargetTransformInfo.h
projects/clang400-import/contrib/llvm/lib/Transforms/IPO/LowerTypeTests.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineInternal.h
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LICM.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopDistribute.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopInstSimplify.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopSink.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/NewGVN.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
projects/clang400-import/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
projects/clang400-import/contrib/llvm/tools/clang/include/clang-c/Index.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/Decl.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/StmtOpenMP.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/AttrDocs.td
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/OpenMPKinds.def
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Driver/CLCompatOptions.td
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Index/IndexSymbol.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Lex/ModuleMap.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
projects/clang400-import/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/Decl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/Expr.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtOpenMP.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/BodyFarm.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Analysis/ReachableCode.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/OpenMPKinds.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Basic/Version.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.h
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.h
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Format/ContinuationIndenter.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Headers/altivec.h
projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexSymbol.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexTypeSourceInfo.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexingContext.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Index/IndexingContext.h
projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/ModuleMap.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Parse/Parser.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaCoroutine.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
projects/clang400-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
projects/clang400-import/contrib/llvm/tools/lld/CMakeLists.txt
projects/clang400-import/contrib/llvm/tools/lld/COFF/PDB.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Driver.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Error.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Error.h
projects/clang400-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/InputSection.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/InputSection.h
projects/clang400-import/contrib/llvm/tools/lld/ELF/LinkerScript.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/OutputSections.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/OutputSections.h
projects/clang400-import/contrib/llvm/tools/lld/ELF/Relocations.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Symbols.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Symbols.h
projects/clang400-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Target.cpp
projects/clang400-import/contrib/llvm/tools/lld/ELF/Writer.cpp
projects/clang400-import/contrib/llvm/tools/lldb/include/lldb/Core/Error.h
projects/clang400-import/contrib/llvm/tools/lldb/include/lldb/Symbol/Type.h
projects/clang400-import/contrib/llvm/tools/lldb/source/Core/Module.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Plugins/ExpressionParser/Clang/ASTResultSynthesizer.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Plugins/InstrumentationRuntime/ThreadSanitizer/ThreadSanitizerRuntime.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/ClangASTContext.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/Type.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/TypeList.cpp
projects/clang400-import/contrib/llvm/tools/lldb/source/Symbol/TypeMap.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/LLVMOutputStyle.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/YAMLOutputStyle.h
projects/clang400-import/contrib/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
projects/clang400-import/contrib/llvm/tools/llvm-readobj/COFFDumper.cpp
projects/clang400-import/contrib/llvm/tools/llvm-xray/xray-extract.cc
projects/clang400-import/contrib/llvm/tools/opt/NewPMDriver.cpp
projects/clang400-import/lib/clang/include/clang/Basic/Version.inc
projects/clang400-import/lib/clang/include/clang/Config/config.h
projects/clang400-import/lib/clang/include/lld/Config/Version.inc
projects/clang400-import/lib/clang/include/llvm/Config/config.h
projects/clang400-import/lib/clang/include/llvm/Config/llvm-config.h
projects/clang400-import/lib/clang/libclang/Makefile
projects/clang400-import/lib/clang/libllvm/Makefile
projects/clang400-import/usr.bin/clang/llvm-pdbdump/Makefile
Directory Properties:
projects/clang400-import/contrib/llvm/ (props changed)
projects/clang400-import/contrib/llvm/tools/clang/ (props changed)
projects/clang400-import/contrib/llvm/tools/lld/ (props changed)
projects/clang400-import/contrib/llvm/tools/lldb/ (props changed)
Modified: projects/clang400-import/contrib/llvm/LICENSE.TXT
==============================================================================
--- projects/clang400-import/contrib/llvm/LICENSE.TXT Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/LICENSE.TXT Sat Jan 14 22:12:13 2017 (r312197)
@@ -4,7 +4,7 @@ LLVM Release License
University of Illinois/NCSA
Open Source License
-Copyright (c) 2003-2016 University of Illinois at Urbana-Champaign.
+Copyright (c) 2003-2017 University of Illinois at Urbana-Champaign.
All rights reserved.
Developed by:
Modified: projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/ADT/PointerSumType.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -94,7 +94,7 @@ public:
return HelperT::template Lookup<N>::TraitsT::getFromVoidPointer(getImpl());
}
- operator bool() const { return Value & HelperT::PointerMask; }
+ explicit 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; }
Modified: projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/ADT/iterator.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -33,6 +33,32 @@ namespace llvm {
/// Another abstraction that this doesn't provide is implementing increment in
/// terms of addition of one. These aren't equivalent for all iterator
/// categories, and respecting that adds a lot of complexity for little gain.
+///
+/// Classes wishing to use `iterator_facade_base` should implement the following
+/// methods:
+///
+/// Forward Iterators:
+/// (All of the following methods)
+/// - DerivedT &operator=(const DerivedT &R);
+/// - bool operator==(const DerivedT &R) const;
+/// - const T &operator*() const;
+/// - T &operator*();
+/// - DerivedT &operator++();
+///
+/// Bidirectional Iterators:
+/// (All methods of forward iterators, plus the following)
+/// - DerivedT &operator--();
+///
+/// Random-access Iterators:
+/// (All methods of bidirectional iterators excluding the following)
+/// - DerivedT &operator++();
+/// - DerivedT &operator--();
+/// (and plus the following)
+/// - bool operator<(const DerivedT &RHS) const;
+/// - DifferenceTypeT operator-(const DerivedT &R) const;
+/// - DerivedT &operator+=(DifferenceTypeT N);
+/// - DerivedT &operator-=(DifferenceTypeT N);
+///
template <typename DerivedT, typename IteratorCategoryT, typename T,
typename DifferenceTypeT = std::ptrdiff_t, typename PointerT = T *,
typename ReferenceT = T &>
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/AssumptionCache.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -46,6 +46,30 @@ class AssumptionCache {
/// intrinsic.
SmallVector<WeakVH, 4> AssumeHandles;
+ class AffectedValueCallbackVH final : public CallbackVH {
+ AssumptionCache *AC;
+ void deleted() override;
+ void allUsesReplacedWith(Value *) override;
+
+ public:
+ using DMI = DenseMapInfo<Value *>;
+
+ AffectedValueCallbackVH(Value *V, AssumptionCache *AC = nullptr)
+ : CallbackVH(V), AC(AC) {}
+ };
+
+ friend AffectedValueCallbackVH;
+
+ /// \brief A map of values about which an assumption might be providing
+ /// information to the relevant set of assumptions.
+ using AffectedValuesMap =
+ DenseMap<AffectedValueCallbackVH, SmallVector<WeakVH, 1>,
+ AffectedValueCallbackVH::DMI>;
+ AffectedValuesMap AffectedValues;
+
+ /// Get the vector of assumptions which affect a value from the cache.
+ SmallVector<WeakVH, 1> &getAffectedValues(Value *V);
+
/// \brief Flag tracking whether we have scanned the function yet.
///
/// We want to be as lazy about this as possible, and so we scan the function
@@ -66,11 +90,16 @@ public:
/// not already be in the cache.
void registerAssumption(CallInst *CI);
+ /// \brief Update the cache of values being affected by this assumption (i.e.
+ /// the values about which this assumption provides information).
+ void updateAffectedValues(CallInst *CI);
+
/// \brief Clear the cache of @llvm.assume intrinsics for a function.
///
/// It will be re-scanned the next time it is requested.
void clear() {
AssumeHandles.clear();
+ AffectedValues.clear();
Scanned = false;
}
@@ -87,6 +116,18 @@ public:
scanFunction();
return AssumeHandles;
}
+
+ /// \brief Access the list of assumptions which affect this value.
+ MutableArrayRef<WeakVH> assumptionsFor(const Value *V) {
+ if (!Scanned)
+ scanFunction();
+
+ auto AVI = AffectedValues.find_as(const_cast<Value *>(V));
+ if (AVI == AffectedValues.end())
+ return MutableArrayRef<WeakVH>();
+
+ return AVI->second;
+ }
};
/// \brief A function analysis which provides an \c AssumptionCache.
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/IVUsers.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -15,8 +15,8 @@
#ifndef LLVM_ANALYSIS_IVUSERS_H
#define LLVM_ANALYSIS_IVUSERS_H
+#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/Analysis/LoopPass.h"
-#include "llvm/Analysis/LoopPassManager.h"
#include "llvm/Analysis/ScalarEvolutionNormalization.h"
#include "llvm/IR/ValueHandle.h"
@@ -193,17 +193,10 @@ class IVUsersAnalysis : public AnalysisI
public:
typedef IVUsers Result;
- IVUsers run(Loop &L, LoopAnalysisManager &AM);
+ IVUsers run(Loop &L, LoopAnalysisManager &AM,
+ LoopStandardAnalysisResults &AR);
};
-/// Printer pass for the \c IVUsers for a loop.
-class IVUsersPrinterPass : public PassInfoMixin<IVUsersPrinterPass> {
- raw_ostream &OS;
-
-public:
- explicit IVUsersPrinterPass(raw_ostream &OS) : OS(OS) {}
- PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM);
-};
}
#endif
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LazyCallGraph.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -148,7 +148,7 @@ public:
///
/// This happens when an edge has been deleted. We leave the edge objects
/// around but clear them.
- operator bool() const;
+ explicit operator bool() const;
/// Returnss the \c Kind of the edge.
Kind getKind() const;
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAccessAnalysis.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -20,7 +20,7 @@
#include "llvm/ADT/SetVector.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/AliasSetTracker.h"
-#include "llvm/Analysis/LoopPassManager.h"
+#include "llvm/Analysis/LoopAnalysisManager.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/ValueHandle.h"
@@ -753,18 +753,8 @@ class LoopAccessAnalysis
public:
typedef LoopAccessInfo Result;
- Result run(Loop &, LoopAnalysisManager &);
- static StringRef name() { return "LoopAccessAnalysis"; }
-};
-
-/// \brief Printer pass for the \c LoopAccessInfo results.
-class LoopAccessInfoPrinterPass
- : public PassInfoMixin<LoopAccessInfoPrinterPass> {
- raw_ostream &OS;
-public:
- explicit LoopAccessInfoPrinterPass(raw_ostream &OS) : OS(OS) {}
- PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM);
+ Result run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR);
};
inline Instruction *MemoryDepChecker::Dependence::getSource(
Copied: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h (from r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopAnalysisManager.h Sat Jan 14 22:12:13 2017 (r312197, copy of r312186, vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h)
@@ -0,0 +1,155 @@
+//===- LoopAnalysisManager.h - Loop analysis management ---------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+/// \file
+///
+/// This header provides classes for managing per-loop analyses. These are
+/// typically used as part of a loop pass pipeline over the loop nests of
+/// a function.
+///
+/// Loop analyses are allowed to make some simplifying assumptions:
+/// 1) Loops are, where possible, in simplified form.
+/// 2) Loops are *always* in LCSSA form.
+/// 3) A collection of analysis results are available:
+/// - LoopInfo
+/// - DominatorTree
+/// - ScalarEvolution
+/// - AAManager
+///
+/// The primary mechanism to provide these invariants is the loop pass manager,
+/// but they can also be manually provided in order to reason about a loop from
+/// outside of a dedicated pass manager.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
+#define LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
+
+#include "llvm/ADT/PostOrderIterator.h"
+#include "llvm/ADT/PriorityWorklist.h"
+#include "llvm/ADT/STLExtras.h"
+#include "llvm/Analysis/AliasAnalysis.h"
+#include "llvm/Analysis/BasicAliasAnalysis.h"
+#include "llvm/Analysis/GlobalsModRef.h"
+#include "llvm/Analysis/LoopInfo.h"
+#include "llvm/Analysis/ScalarEvolution.h"
+#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
+#include "llvm/Analysis/TargetLibraryInfo.h"
+#include "llvm/Analysis/TargetTransformInfo.h"
+#include "llvm/IR/Dominators.h"
+#include "llvm/IR/PassManager.h"
+
+namespace llvm {
+
+/// The adaptor from a function pass to a loop pass computes these analyses and
+/// makes them available to the loop passes "for free". Each loop pass is
+/// expected expected to update these analyses if necessary to ensure they're
+/// valid after it runs.
+struct LoopStandardAnalysisResults {
+ AAResults &AA;
+ AssumptionCache &AC;
+ DominatorTree &DT;
+ LoopInfo &LI;
+ ScalarEvolution &SE;
+ TargetLibraryInfo &TLI;
+ TargetTransformInfo &TTI;
+};
+
+/// Extern template declaration for the analysis set for this IR unit.
+extern template class AllAnalysesOn<Loop>;
+
+extern template class AnalysisManager<Loop, LoopStandardAnalysisResults &>;
+/// \brief The loop analysis manager.
+///
+/// See the documentation for the AnalysisManager template for detail
+/// documentation. This typedef serves as a convenient way to refer to this
+/// construct in the adaptors and proxies used to integrate this into the larger
+/// pass manager infrastructure.
+typedef AnalysisManager<Loop, LoopStandardAnalysisResults &>
+ LoopAnalysisManager;
+
+/// A proxy from a \c LoopAnalysisManager to a \c Function.
+typedef InnerAnalysisManagerProxy<LoopAnalysisManager, Function>
+ LoopAnalysisManagerFunctionProxy;
+
+/// A specialized result for the \c LoopAnalysisManagerFunctionProxy which
+/// retains a \c LoopInfo reference.
+///
+/// This allows it to collect loop objects for which analysis results may be
+/// cached in the \c LoopAnalysisManager.
+template <> class LoopAnalysisManagerFunctionProxy::Result {
+public:
+ explicit Result(LoopAnalysisManager &InnerAM, LoopInfo &LI)
+ : InnerAM(&InnerAM), LI(&LI) {}
+ Result(Result &&Arg) : InnerAM(std::move(Arg.InnerAM)), LI(Arg.LI) {
+ // We have to null out the analysis manager in the moved-from state
+ // because we are taking ownership of the responsibilty to clear the
+ // analysis state.
+ Arg.InnerAM = nullptr;
+ }
+ Result &operator=(Result &&RHS) {
+ InnerAM = RHS.InnerAM;
+ LI = RHS.LI;
+ // We have to null out the analysis manager in the moved-from state
+ // because we are taking ownership of the responsibilty to clear the
+ // analysis state.
+ RHS.InnerAM = nullptr;
+ return *this;
+ }
+ ~Result() {
+ // InnerAM is cleared in a moved from state where there is nothing to do.
+ if (!InnerAM)
+ return;
+
+ // Clear out the analysis manager if we're being destroyed -- it means we
+ // didn't even see an invalidate call when we got invalidated.
+ InnerAM->clear();
+ }
+
+ /// Accessor for the analysis manager.
+ LoopAnalysisManager &getManager() { return *InnerAM; }
+
+ /// Handler for invalidation of the proxy for a particular function.
+ ///
+ /// If the proxy, \c LoopInfo, and associated analyses are preserved, this
+ /// will merely forward the invalidation event to any cached loop analysis
+ /// results for loops within this function.
+ ///
+ /// If the necessary loop infrastructure is not preserved, this will forcibly
+ /// clear all of the cached analysis results that are keyed on the \c
+ /// LoopInfo for this function.
+ bool invalidate(Function &F, const PreservedAnalyses &PA,
+ FunctionAnalysisManager::Invalidator &Inv);
+
+private:
+ LoopAnalysisManager *InnerAM;
+ LoopInfo *LI;
+};
+
+/// Provide a specialized run method for the \c LoopAnalysisManagerFunctionProxy
+/// so it can pass the \c LoopInfo to the result.
+template <>
+LoopAnalysisManagerFunctionProxy::Result
+LoopAnalysisManagerFunctionProxy::run(Function &F, FunctionAnalysisManager &AM);
+
+// Ensure the \c LoopAnalysisManagerFunctionProxy is provided as an extern
+// template.
+extern template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;
+
+extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
+ LoopStandardAnalysisResults &>;
+/// A proxy from a \c FunctionAnalysisManager to a \c Loop.
+typedef OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,
+ LoopStandardAnalysisResults &>
+ FunctionAnalysisManagerLoopProxy;
+
+/// Returns the minimum set of Analyses that all loop passes must preserve.
+PreservedAnalyses getLoopPassPreservedAnalyses();
+}
+
+#endif // LLVM_ANALYSIS_LOOPANALYSISMANAGER_H
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/LoopInfo.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -853,17 +853,8 @@ public:
void getAnalysisUsage(AnalysisUsage &AU) const override;
};
-/// \brief Pass for printing a loop's contents as LLVM's text IR assembly.
-class PrintLoopPass : public PassInfoMixin<PrintLoopPass> {
- raw_ostream &OS;
- std::string Banner;
-
-public:
- PrintLoopPass();
- PrintLoopPass(raw_ostream &OS, const std::string &Banner = "");
-
- PreservedAnalyses run(Loop &L, AnalysisManager<Loop> &);
-};
+/// Function to print a loop's contents as LLVM's text IR assembly.
+void printLoop(Loop &L, raw_ostream &OS, const std::string &Banner = "");
} // End llvm namespace
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -302,6 +302,10 @@ private:
NonLocalPointerInfo() : Size(MemoryLocation::UnknownSize) {}
};
+ /// Cache storing single nonlocal def for the instruction.
+ /// It is set when nonlocal def would be found in function returning only
+ /// local dependencies.
+ DenseMap<Instruction *, NonLocalDepResult> NonLocalDefsCache;
/// This map stores the cached results of doing a pointer lookup at the
/// bottom of a block.
///
@@ -441,9 +445,9 @@ public:
/// This analysis looks for other loads and stores with invariant.group
/// metadata and the same pointer operand. Returns Unknown if it does not
/// find anything, and Def if it can be assumed that 2 instructions load or
- /// store the same value.
- /// FIXME: This analysis works only on single block because of restrictions
- /// at the call site.
+ /// store the same value and NonLocal which indicate that non-local Def was
+ /// found, which can be retrieved by calling getNonLocalPointerDependency
+ /// with the same queried instruction.
MemDepResult getInvariantGroupPointerDependency(LoadInst *LI, BasicBlock *BB);
/// Looks at a memory location for a load (specified by MemLocBase, Offs, and
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfo.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -55,6 +55,11 @@ struct MemIntrinsicInfo {
// Same Id is set by the target for corresponding load/store intrinsics.
unsigned short MatchingId;
int NumMemRefs;
+
+ /// This is the pointer that the intrinsic is loading from or storing to.
+ /// If this is non-null, then analysis/optimization passes can assume that
+ /// this intrinsic is functionally equivalent to a load/store from this
+ /// pointer.
Value *PtrVal;
};
@@ -518,11 +523,15 @@ public:
unsigned getMaxInterleaveFactor(unsigned VF) const;
/// \return The expected cost of arithmetic ops, such as mul, xor, fsub, etc.
+ /// \p Args is an optional argument which holds the instruction operands
+ /// values so the TTI can analyize those values searching for special
+ /// cases\optimizations based on those values.
int getArithmeticInstrCost(
unsigned Opcode, Type *Ty, OperandValueKind Opd1Info = OK_AnyValue,
OperandValueKind Opd2Info = OK_AnyValue,
OperandValueProperties Opd1PropInfo = OP_None,
- OperandValueProperties Opd2PropInfo = OP_None) const;
+ OperandValueProperties Opd2PropInfo = OP_None,
+ ArrayRef<const Value *> Args = ArrayRef<const Value *>()) const;
/// \return The cost of a shuffle instruction of kind Kind and of type Tp.
/// The index and subtype parameters are used by the subvector insertion and
@@ -763,7 +772,8 @@ public:
getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
OperandValueKind Opd2Info,
OperandValueProperties Opd1PropInfo,
- OperandValueProperties Opd2PropInfo) = 0;
+ OperandValueProperties Opd2PropInfo,
+ ArrayRef<const Value *> Args) = 0;
virtual int getShuffleCost(ShuffleKind Kind, Type *Tp, int Index,
Type *SubTp) = 0;
virtual int getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src) = 0;
@@ -984,9 +994,10 @@ public:
getArithmeticInstrCost(unsigned Opcode, Type *Ty, OperandValueKind Opd1Info,
OperandValueKind Opd2Info,
OperandValueProperties Opd1PropInfo,
- OperandValueProperties Opd2PropInfo) override {
+ OperandValueProperties Opd2PropInfo,
+ ArrayRef<const Value *> Args) override {
return Impl.getArithmeticInstrCost(Opcode, Ty, Opd1Info, Opd2Info,
- Opd1PropInfo, Opd2PropInfo);
+ Opd1PropInfo, Opd2PropInfo, Args);
}
int getShuffleCost(ShuffleKind Kind, Type *Tp, int Index,
Type *SubTp) override {
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -306,7 +306,8 @@ public:
TTI::OperandValueKind Opd1Info,
TTI::OperandValueKind Opd2Info,
TTI::OperandValueProperties Opd1PropInfo,
- TTI::OperandValueProperties Opd2PropInfo) {
+ TTI::OperandValueProperties Opd2PropInfo,
+ ArrayRef<const Value *> Args) {
return 1;
}
@@ -427,6 +428,63 @@ public:
return VF;
}
protected:
+ // Obtain the minimum required size to hold the value (without the sign)
+ // In case of a vector it returns the min required size for one element.
+ unsigned minRequiredElementSize(const Value* Val, bool &isSigned) {
+ if (isa<ConstantDataVector>(Val) || isa<ConstantVector>(Val)) {
+ const auto* VectorValue = cast<Constant>(Val);
+
+ // In case of a vector need to pick the max between the min
+ // required size for each element
+ auto *VT = cast<VectorType>(Val->getType());
+
+ // Assume unsigned elements
+ isSigned = false;
+
+ // The max required size is the total vector width divided by num
+ // of elements in the vector
+ unsigned MaxRequiredSize = VT->getBitWidth() / VT->getNumElements();
+
+ unsigned MinRequiredSize = 0;
+ for(unsigned i = 0, e = VT->getNumElements(); i < e; ++i) {
+ if (auto* IntElement =
+ dyn_cast<ConstantInt>(VectorValue->getAggregateElement(i))) {
+ bool signedElement = IntElement->getValue().isNegative();
+ // Get the element min required size.
+ unsigned ElementMinRequiredSize =
+ IntElement->getValue().getMinSignedBits() - 1;
+ // In case one element is signed then all the vector is signed.
+ isSigned |= signedElement;
+ // Save the max required bit size between all the elements.
+ MinRequiredSize = std::max(MinRequiredSize, ElementMinRequiredSize);
+ }
+ else {
+ // not an int constant element
+ return MaxRequiredSize;
+ }
+ }
+ return MinRequiredSize;
+ }
+
+ if (const auto* CI = dyn_cast<ConstantInt>(Val)) {
+ isSigned = CI->getValue().isNegative();
+ return CI->getValue().getMinSignedBits() - 1;
+ }
+
+ if (const auto* Cast = dyn_cast<SExtInst>(Val)) {
+ isSigned = true;
+ return Cast->getSrcTy()->getScalarSizeInBits() - 1;
+ }
+
+ if (const auto* Cast = dyn_cast<ZExtInst>(Val)) {
+ isSigned = false;
+ return Cast->getSrcTy()->getScalarSizeInBits();
+ }
+
+ isSigned = false;
+ return Val->getType()->getScalarSizeInBits();
+ }
+
bool isStridedAccess(const SCEV *Ptr) {
return Ptr && isa<SCEVAddRecExpr>(Ptr);
}
Modified: projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/Analysis/ValueTracking.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -169,8 +169,12 @@ template <typename T> class ArrayRef;
/// Return true if we can prove that the specified FP value is either a NaN or
/// never less than 0.0.
- bool CannotBeOrderedLessThanZero(const Value *V, const TargetLibraryInfo *TLI,
- unsigned Depth = 0);
+ /// If \p IncludeNeg0 is false, -0.0 is considered less than 0.0.
+ bool CannotBeOrderedLessThanZero(const Value *V, const TargetLibraryInfo *TLI);
+
+ /// \returns true if we can prove that the specified FP value has a 0 sign
+ /// bit.
+ bool SignBitMustBeZero(const Value *V, const TargetLibraryInfo *TLI);
/// If the specified value can be set by repeating the same byte in memory,
/// return the i8 value that it is represented with. This is true for all i8
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/BasicTTIImpl.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -308,7 +308,8 @@ public:
TTI::OperandValueKind Opd1Info = TTI::OK_AnyValue,
TTI::OperandValueKind Opd2Info = TTI::OK_AnyValue,
TTI::OperandValueProperties Opd1PropInfo = TTI::OP_None,
- TTI::OperandValueProperties Opd2PropInfo = TTI::OP_None) {
+ TTI::OperandValueProperties Opd2PropInfo = TTI::OP_None,
+ ArrayRef<const Value *> Args = ArrayRef<const Value *>()) {
// Check if any of the operands are vector operands.
const TargetLoweringBase *TLI = getTLI();
int ISD = TLI->InstructionOpcodeToISD(Opcode);
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/DIE.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -52,13 +52,20 @@ class DIEAbbrevData {
/// Dwarf form code.
dwarf::Form Form;
+ /// Dwarf attribute value for DW_FORM_implicit_const
+ int64_t Value;
+
public:
- DIEAbbrevData(dwarf::Attribute A, dwarf::Form F) : Attribute(A), Form(F) {}
+ DIEAbbrevData(dwarf::Attribute A, dwarf::Form F)
+ : Attribute(A), Form(F), Value(0) {}
+ DIEAbbrevData(dwarf::Attribute A, int64_t V)
+ : Attribute(A), Form(dwarf::DW_FORM_implicit_const), Value(V) {}
/// Accessors.
/// @{
dwarf::Attribute getAttribute() const { return Attribute; }
dwarf::Form getForm() const { return Form; }
+ int64_t getValue() const { return Value; }
/// @}
/// Used to gather unique data for the abbreviation folding set.
@@ -102,6 +109,11 @@ public:
Data.push_back(DIEAbbrevData(Attribute, Form));
}
+ /// Adds attribute with DW_FORM_implicit_const value
+ void AddImplicitConstAttribute(dwarf::Attribute Attribute, int64_t Value) {
+ Data.push_back(DIEAbbrevData(Attribute, Value));
+ }
+
/// Used to gather unique data for the abbreviation folding set.
void Profile(FoldingSetNodeID &ID) const;
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -76,6 +76,7 @@ class MachineBlockFrequencyInfo;
class MachineRegisterInfo;
class TargetPassConfig;
class TargetRegisterInfo;
+class raw_ostream;
/// This pass implements the reg bank selector pass used in the GlobalISel
/// pipeline. At the end of this pass, all register operands have been assigned
@@ -450,6 +451,18 @@ private:
bool operator>(const MappingCost &Cost) const {
return *this != Cost && Cost < *this;
}
+
+ /// Print this on dbgs() stream.
+ void dump() const;
+
+ /// Print this on \p OS;
+ void print(raw_ostream &OS) const;
+
+ /// Overload the stream operator for easy debug printing.
+ friend raw_ostream &operator<<(raw_ostream &OS, const MappingCost &Cost) {
+ Cost.print(OS);
+ return OS;
+ }
};
/// Interface to the target lowering info related
@@ -626,6 +639,7 @@ public:
/// \endcode
bool runOnMachineFunction(MachineFunction &MF) override;
};
+
} // End namespace llvm.
#endif
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBank.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -41,11 +41,8 @@ private:
friend RegisterBankInfo;
public:
- /// The default constructor will leave the object in
- /// an invalid state. I.e. isValid() == false.
- /// The fields must be updated to fix that and only
- /// RegisterBankInfo instances are allowed to do that
- RegisterBank();
+ RegisterBank(unsigned ID, const char *Name, unsigned Size,
+ const uint32_t *ContainedRegClasses);
/// Get the identifier of this register bank.
unsigned getID() const { return ID; }
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -384,10 +384,6 @@ protected:
/// Create a RegisterBankInfo that can accomodate up to \p NumRegBanks
/// RegisterBank instances.
- ///
- /// \note For the verify method to succeed all the \p NumRegBanks
- /// must be initialized by createRegisterBank and updated with
- /// addRegBankCoverage RegisterBank.
RegisterBankInfo(RegisterBank **RegBanks, unsigned NumRegBanks);
/// This constructor is meaningless.
@@ -400,31 +396,6 @@ protected:
llvm_unreachable("This constructor should not be executed");
}
- /// Create a new register bank with the given parameter and add it
- /// to RegBanks.
- /// \pre \p ID must not already be used.
- /// \pre \p ID < NumRegBanks.
- void createRegisterBank(unsigned ID, const char *Name);
-
- /// Add \p RCId to the set of register class that the register bank,
- /// identified \p ID, covers.
- /// This method transitively adds all the sub classes and the subreg-classes
- /// of \p RCId to the set of covered register classes.
- /// It also adjusts the size of the register bank to reflect the maximal
- /// size of a value that can be hold into that register bank.
- ///
- /// \note This method does *not* add the super classes of \p RCId.
- /// The rationale is if \p ID covers the registers of \p RCId, that
- /// does not necessarily mean that \p ID covers the set of registers
- /// of RCId's superclasses.
- /// This method does *not* add the superreg classes as well for consistents.
- /// The expected use is to add the coverage top-down with respect to the
- /// register hierarchy.
- ///
- /// \todo TableGen should just generate the BitSet vector for us.
- void addRegBankCoverage(unsigned ID, unsigned RCId,
- const TargetRegisterInfo &TRI);
-
/// Get the register bank identified by \p ID.
RegisterBank &getRegBank(unsigned ID) {
assert(ID < getNumRegBanks() && "Accessing an unknown register bank");
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -503,19 +503,6 @@ namespace ISD {
/// address spaces.
ADDRSPACECAST,
- /// CONVERT_RNDSAT - This operator is used to support various conversions
- /// between various types (float, signed, unsigned and vectors of those
- /// types) with rounding and saturation. NOTE: Avoid using this operator as
- /// most target don't support it and the operator might be removed in the
- /// future. It takes the following arguments:
- /// 0) value
- /// 1) dest type (type to convert to)
- /// 2) src type (type to convert from)
- /// 3) rounding imm
- /// 4) saturation imm
- /// 5) ISD::CvtCode indicating the type of conversion to do
- CONVERT_RNDSAT,
-
/// FP16_TO_FP, FP_TO_FP16 - These operators are used to perform promotions
/// and truncation for half-precision (16 bit) floating numbers. These nodes
/// form a semi-softened interface for dealing with f16 (as an i16), which
@@ -927,21 +914,6 @@ namespace ISD {
/// SETCC_INVALID if it is not possible to represent the resultant comparison.
CondCode getSetCCAndOperation(CondCode Op1, CondCode Op2, bool isInteger);
- //===--------------------------------------------------------------------===//
- /// This enum defines the various converts CONVERT_RNDSAT supports.
- enum CvtCode {
- CVT_FF, /// Float from Float
- CVT_FS, /// Float from Signed
- CVT_FU, /// Float from Unsigned
- CVT_SF, /// Signed from Float
- CVT_UF, /// Unsigned from Float
- CVT_SS, /// Signed from Signed
- CVT_SU, /// Signed from Unsigned
- CVT_US, /// Unsigned from Signed
- CVT_UU, /// Unsigned from Unsigned
- CVT_INVALID /// Marker - Invalid opcode
- };
-
} // end llvm::ISD namespace
} // end llvm namespace
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -626,12 +626,6 @@ public:
SDValue getCondCode(ISD::CondCode Cond);
- /// Returns the ConvertRndSat Note: Avoid using this node because it may
- /// disappear in the future and most targets don't support it.
- SDValue getConvertRndSat(EVT VT, const SDLoc &dl, SDValue Val, SDValue DTy,
- SDValue STy, SDValue Rnd, SDValue Sat,
- ISD::CvtCode Code);
-
/// Return an ISD::VECTOR_SHUFFLE node. The number of elements in VT,
/// which must be a vector type, must match the number of mask elements
/// NumElts. An integer mask element equal to -1 is treated as undefined.
Modified: projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -1860,26 +1860,6 @@ public:
}
};
-/// NOTE: avoid using this node as this may disappear in the
-/// future and most targets don't support it.
-class CvtRndSatSDNode : public SDNode {
- ISD::CvtCode CvtCode;
-
- friend class SelectionDAG;
-
- explicit CvtRndSatSDNode(EVT VT, unsigned Order, const DebugLoc &dl,
- ISD::CvtCode Code)
- : SDNode(ISD::CONVERT_RNDSAT, Order, dl, getSDVTList(VT)), CvtCode(Code) {
- }
-
-public:
- ISD::CvtCode getCvtCode() const { return CvtCode; }
-
- static bool classof(const SDNode *N) {
- return N->getOpcode() == ISD::CONVERT_RNDSAT;
- }
-};
-
/// This class is used to represent EVT's, which are used
/// to parameterize some operations.
class VTSDNode : public SDNode {
@@ -2041,7 +2021,7 @@ public:
friend class SelectionDAG;
MaskedStoreSDNode(unsigned Order, const DebugLoc &dl, SDVTList VTs,
- bool isTrunc, bool isCompressing, EVT MemVT,
+ bool isTrunc, bool isCompressing, EVT MemVT,
MachineMemOperand *MMO)
: MaskedLoadStoreSDNode(ISD::MSTORE, Order, dl, VTs, MemVT, MMO) {
StoreSDNodeBits.IsTruncating = isTrunc;
@@ -2054,8 +2034,8 @@ public:
bool isTruncatingStore() const { return StoreSDNodeBits.IsTruncating; }
/// Returns true if the op does a compression to the vector before storing.
- /// The node contiguously stores the active elements (integers or floats)
- /// in src (those with their respective bit set in writemask k) to unaligned
+ /// The node contiguously stores the active elements (integers or floats)
+ /// in src (those with their respective bit set in writemask k) to unaligned
/// memory at base_addr.
bool isCompressingStore() const { return StoreSDNodeBits.IsCompressing; }
Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/CVTypeDumper.h Sat Jan 14 22:12:13 2017 (r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h)
@@ -0,0 +1,56 @@
+//===-- CVTypeDumper.h - CodeView type info dumper --------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_CVTYPEDUMPER_H
+#define LLVM_DEBUGINFO_CODEVIEW_CVTYPEDUMPER_H
+
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/StringSet.h"
+#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
+#include "llvm/Support/ScopedPrinter.h"
+
+namespace llvm {
+
+namespace codeview {
+
+/// Dumper for CodeView type streams found in COFF object files and PDB files.
+class CVTypeDumper {
+public:
+ explicit CVTypeDumper(TypeDatabase &TypeDB) : TypeDB(TypeDB) {}
+
+ /// Dumps one type record. Returns false if there was a type parsing error,
+ /// and true otherwise. This should be called in order, since the dumper
+ /// maintains state about previous records which are necessary for cross
+ /// type references.
+ Error dump(const CVType &Record, TypeVisitorCallbacks &Dumper);
+
+ /// Dumps the type records in Types. Returns false if there was a type stream
+ /// parse error, and true otherwise.
+ Error dump(const CVTypeArray &Types, TypeVisitorCallbacks &Dumper);
+
+ /// Dumps the type records in Data. Returns false if there was a type stream
+ /// parse error, and true otherwise. Use this method instead of the
+ /// CVTypeArray overload when type records are laid out contiguously in
+ /// memory.
+ Error dump(ArrayRef<uint8_t> Data, TypeVisitorCallbacks &Dumper);
+
+ static void printTypeIndex(ScopedPrinter &Printer, StringRef FieldName,
+ TypeIndex TI, TypeDatabase &DB);
+
+private:
+ TypeDatabase &TypeDB;
+};
+
+} // end namespace codeview
+} // end namespace llvm
+
+#endif // LLVM_DEBUGINFO_CODEVIEW_TYPEDUMPER_H
Modified: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h
==============================================================================
--- projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h Sat Jan 14 22:06:25 2017 (r312196)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/SymbolDumper.h Sat Jan 14 22:12:13 2017 (r312197)
@@ -20,15 +20,15 @@ namespace llvm {
class ScopedPrinter;
namespace codeview {
-class CVTypeDumper;
+class TypeDatabase;
/// Dumper for CodeView symbol streams found in COFF object files and PDB files.
class CVSymbolDumper {
public:
- CVSymbolDumper(ScopedPrinter &W, CVTypeDumper &CVTD,
+ CVSymbolDumper(ScopedPrinter &W, TypeDatabase &TypeDB,
std::unique_ptr<SymbolDumpDelegate> ObjDelegate,
bool PrintRecordBytes)
- : W(W), CVTD(CVTD), ObjDelegate(std::move(ObjDelegate)),
+ : W(W), TypeDB(TypeDB), ObjDelegate(std::move(ObjDelegate)),
PrintRecordBytes(PrintRecordBytes) {}
/// Dumps one type record. Returns false if there was a type parsing error,
@@ -43,7 +43,7 @@ public:
private:
ScopedPrinter &W;
- CVTypeDumper &CVTD;
+ TypeDatabase &TypeDB;
std::unique_ptr<SymbolDumpDelegate> ObjDelegate;
bool PrintRecordBytes;
Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabase.h Sat Jan 14 22:12:13 2017 (r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h)
@@ -0,0 +1,55 @@
+//===- TypeDatabase.h - A collection of CodeView type records ---*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASE_H
+#define LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASE_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/Support/Allocator.h"
+#include "llvm/Support/StringSaver.h"
+
+namespace llvm {
+namespace codeview {
+class TypeDatabase {
+public:
+ TypeDatabase() : TypeNameStorage(Allocator) {}
+
+ /// Gets the type index for the next type record.
+ TypeIndex getNextTypeIndex() const;
+
+ /// Records the name of a type, and reserves its type index.
+ void recordType(StringRef Name, CVType Data);
+
+ /// Saves the name in a StringSet and creates a stable StringRef.
+ StringRef saveTypeName(StringRef TypeName);
+
+ StringRef getTypeName(TypeIndex Index) const;
+
+ bool containsTypeIndex(TypeIndex Index) const;
+
+ uint32_t size() const;
+
+private:
+ BumpPtrAllocator Allocator;
+
+ /// All user defined type records in .debug$T live in here. Type indices
+ /// greater than 0x1000 are user defined. Subtract 0x1000 from the index to
+ /// index into this vector.
+ SmallVector<StringRef, 10> CVUDTNames;
+ SmallVector<CVType, 10> TypeRecords;
+
+ StringSaver TypeNameStorage;
+};
+}
+}
+
+#endif
\ No newline at end of file
Copied: projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h (from r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/clang400-import/contrib/llvm/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h Sat Jan 14 22:12:13 2017 (r312197, copy of r312186, vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h)
@@ -0,0 +1,53 @@
+//===-- TypeDatabaseVisitor.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_DEBUGINFO_CODEVIEW_TYPEDATABASEVISITOR_H
+#define LLVM_DEBUGINFO_CODEVIEW_TYPEDATABASEVISITOR_H
+
+#include "llvm/DebugInfo/CodeView/TypeDatabase.h"
+#include "llvm/DebugInfo/CodeView/TypeIndex.h"
+#include "llvm/DebugInfo/CodeView/TypeRecord.h"
+#include "llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h"
+
+namespace llvm {
+namespace codeview {
+
+/// Dumper for CodeView type streams found in COFF object files and PDB files.
+class TypeDatabaseVisitor : public TypeVisitorCallbacks {
+public:
+ explicit TypeDatabaseVisitor(TypeDatabase &TypeDB) : TypeDB(TypeDB) {}
+
+ /// Paired begin/end actions for all types. Receives all record data,
+ /// including the fixed-length record prefix.
+ Error visitTypeBegin(CVType &Record) override;
+ Error visitTypeEnd(CVType &Record) override;
+ Error visitMemberBegin(CVMemberRecord &Record) override;
+ Error visitMemberEnd(CVMemberRecord &Record) override;
+
+#define TYPE_RECORD(EnumName, EnumVal, Name) \
+ Error visitKnownRecord(CVType &CVR, Name##Record &Record) override;
+#define MEMBER_RECORD(EnumName, EnumVal, Name) \
+ Error visitKnownMember(CVMemberRecord &CVR, Name##Record &Record) override;
+#define TYPE_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#define MEMBER_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
+#include "TypeRecords.def"
+
+private:
+ bool IsInFieldList = false;
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list