From owner-svn-src-projects@freebsd.org Sat Jan 14 22:12:17 2017 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C6D93CAFD28 for ; Sat, 14 Jan 2017 22:12:17 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 607021CAD; Sat, 14 Jan 2017 22:12:17 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0EMCGuY092712; Sat, 14 Jan 2017 22:12:16 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0EMCErj092683; Sat, 14 Jan 2017 22:12:14 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201701142212.v0EMCErj092683@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 14 Jan 2017 22:12:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: 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/... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Jan 2017 22:12:17 -0000 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::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 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 AssumeHandles; + class AffectedValueCallbackVH final : public CallbackVH { + AssumptionCache *AC; + void deleted() override; + void allUsesReplacedWith(Value *) override; + + public: + using DMI = DenseMapInfo; + + 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::DMI>; + AffectedValuesMap AffectedValues; + + /// Get the vector of assumptions which affect a value from the cache. + SmallVector &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 assumptionsFor(const Value *V) { + if (!Scanned) + scanFunction(); + + auto AVI = AffectedValues.find_as(const_cast(V)); + if (AVI == AffectedValues.end()) + return MutableArrayRef(); + + 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 { - 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 { - 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; + +extern template class AnalysisManager; +/// \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 + LoopAnalysisManager; + +/// A proxy from a \c LoopAnalysisManager to a \c Function. +typedef InnerAnalysisManagerProxy + 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; + +extern template class OuterAnalysisManagerProxy; +/// A proxy from a \c FunctionAnalysisManager to a \c Loop. +typedef OuterAnalysisManagerProxy + 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 { - raw_ostream &OS; - std::string Banner; - -public: - PrintLoopPass(); - PrintLoopPass(raw_ostream &OS, const std::string &Banner = ""); - - PreservedAnalyses run(Loop &L, AnalysisManager &); -}; +/// 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 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 Args = ArrayRef()) 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 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 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 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(Val) || isa(Val)) { + const auto* VectorValue = cast(Val); + + // In case of a vector need to pick the max between the min + // required size for each element + auto *VT = cast(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(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(Val)) { + isSigned = CI->getValue().isNegative(); + return CI->getValue().getMinSignedBits() - 1; + } + + if (const auto* Cast = dyn_cast(Val)) { + isSigned = true; + return Cast->getSrcTy()->getScalarSizeInBits() - 1; + } + + if (const auto* Cast = dyn_cast(Val)) { + isSigned = false; + return Cast->getSrcTy()->getScalarSizeInBits(); + } + + isSigned = false; + return Val->getType()->getScalarSizeInBits(); + } + bool isStridedAccess(const SCEV *Ptr) { return Ptr && isa(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 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 Args = ArrayRef()) { // 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 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 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 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 CVUDTNames; + SmallVector 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 ***