svn commit: r312173 - in vendor/llvm/dist: . cmake/modules docs include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/CodeGen/GlobalISel include/llvm/DebugInfo/CodeView include/l...
Dimitry Andric
dim at FreeBSD.org
Sat Jan 14 15:37:55 UTC 2017
Author: dim
Date: Sat Jan 14 15:37:50 2017
New Revision: 312173
URL: https://svnweb.freebsd.org/changeset/base/312173
Log:
Vendor import of llvm release_40 branch r292009:
https://llvm.org/svn/llvm-project/llvm/branches/release_40@292009
Added:
vendor/llvm/dist/cmake/modules/CheckLinkerFlag.cmake
vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h (contents, props changed)
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h (contents, props changed)
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h (contents, props changed)
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h (contents, props changed)
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h (contents, props changed)
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumperBase.h (contents, props changed)
vendor/llvm/dist/include/llvm/Object/Decompressor.h (contents, props changed)
vendor/llvm/dist/include/llvm/Transforms/Scalar/IVUsersPrinter.h (contents, props changed)
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h (contents, props changed)
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopPassManager.h (contents, props changed)
vendor/llvm/dist/include/llvm/XRay/
vendor/llvm/dist/include/llvm/XRay/Trace.h (contents, props changed)
vendor/llvm/dist/include/llvm/XRay/XRayRecord.h (contents, props changed)
vendor/llvm/dist/include/llvm/XRay/YAMLXRayRecord.h (contents, props changed)
vendor/llvm/dist/lib/Analysis/LoopAnalysisManager.cpp (contents, props changed)
vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeDumper.cpp (contents, props changed)
vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp (contents, props changed)
vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabaseVisitor.cpp (contents, props changed)
vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp (contents, props changed)
vendor/llvm/dist/lib/Object/Decompressor.cpp (contents, props changed)
vendor/llvm/dist/lib/Transforms/Scalar/IVUsersPrinter.cpp (contents, props changed)
vendor/llvm/dist/lib/Transforms/Scalar/LoopAccessAnalysisPrinter.cpp (contents, props changed)
vendor/llvm/dist/lib/Transforms/Scalar/LoopPassManager.cpp (contents, props changed)
vendor/llvm/dist/lib/XRay/
vendor/llvm/dist/lib/XRay/CMakeLists.txt (contents, props changed)
vendor/llvm/dist/lib/XRay/Trace.cpp (contents, props changed)
vendor/llvm/dist/test/Analysis/CostModel/X86/slm-arith-costs.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/constant-fold-imm-immreg.mir
vendor/llvm/dist/test/CodeGen/AMDGPU/fadd-fma-fmul-combine.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/fneg-combines.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/fp16_to_fp32.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/fp16_to_fp64.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/select-fabs-fneg-extract-legacy.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/select-fabs-fneg-extract.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/select-opt.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/shrink-vop3-carry-out.mir
vendor/llvm/dist/test/CodeGen/Mips/msa/immediates-bad.ll
vendor/llvm/dist/test/CodeGen/Mips/msa/immediates.ll
vendor/llvm/dist/test/CodeGen/Mips/msa/msa-nooddspreg.ll
vendor/llvm/dist/test/CodeGen/PowerPC/change-no-infs.ll
vendor/llvm/dist/test/CodeGen/X86/bypass-slow-division-32.ll
vendor/llvm/dist/test/CodeGen/X86/bypass-slow-division-64.ll
vendor/llvm/dist/test/CodeGen/X86/bypass-slow-division-tune.ll
vendor/llvm/dist/test/CodeGen/X86/change-unsafe-fp-math.ll
vendor/llvm/dist/test/CodeGen/X86/peephole.mir
vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-avx512.ll
vendor/llvm/dist/test/DebugInfo/Inputs/implicit-const-test.o (contents, props changed)
vendor/llvm/dist/test/DebugInfo/dwarfdump-implicit-const.test
vendor/llvm/dist/test/FileCheck/match-full-lines.txt (contents, props changed)
vendor/llvm/dist/test/ObjectYAML/MachO/DWARF-debug_line.yaml
vendor/llvm/dist/test/Transforms/LICM/opt-remarks-conditional-load.ll
vendor/llvm/dist/test/Transforms/LICM/opt-remarks-intervening-store.ll
vendor/llvm/dist/test/Transforms/LICM/opt-remarks.ll
vendor/llvm/dist/test/Transforms/LoopVectorize/X86/mul_slm_16bit.ll
vendor/llvm/dist/test/Transforms/LoopVectorize/pr31190.ll
vendor/llvm/dist/test/Transforms/NewGVN/pr31594.ll
vendor/llvm/dist/test/Transforms/PGOProfile/Inputs/multiple_hash_profile.proftext
vendor/llvm/dist/test/Transforms/PGOProfile/multiple_hash_profile.ll
vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/pr31599.ll
vendor/llvm/dist/test/tools/llvm-config/booleans.test
vendor/llvm/dist/test/tools/llvm-xray/X86/Inputs/elf64-objcopied-instrmap.bin (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/Inputs/elf64-sample-o2.bin (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/Inputs/naive-log-simple.xray (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/Inputs/simple-instrmap.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/Inputs/simple-xray-instrmap.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/account-deduce-tail-call.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/account-keep-going.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/account-simple-case.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/account-simple-sorting.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/bad-instrmap-sizes.txt (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/convert-roundtrip.yaml
vendor/llvm/dist/test/tools/llvm-xray/X86/convert-to-yaml.txt (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/convert-with-debug-syms.txt (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/convert-with-standalone-instrmap.txt (contents, props changed)
vendor/llvm/dist/test/tools/llvm-xray/X86/convert-with-yaml-instrmap.txt (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyBuiltinDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyClassDefinitionDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyCompilandDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyEnumDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyExternalSymbolDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyFunctionDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypeDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyTypedefDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.cpp (contents, props changed)
vendor/llvm/dist/tools/llvm-pdbdump/PrettyVariableDumper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/func-id-helper.cc (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/func-id-helper.h (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/xray-account.cc (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/xray-account.h (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/xray-converter.cc (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/xray-converter.h (contents, props changed)
vendor/llvm/dist/tools/llvm-xray/xray-record-yaml.h (contents, props changed)
vendor/llvm/dist/unittests/Support/TarWriterTest.cpp (contents, props changed)
vendor/llvm/dist/unittests/Transforms/Scalar/
vendor/llvm/dist/unittests/Transforms/Scalar/CMakeLists.txt (contents, props changed)
vendor/llvm/dist/unittests/Transforms/Scalar/LoopPassManagerTest.cpp (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/
vendor/llvm/dist/utils/unittest/googlemock/LICENSE.txt (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/README.LLVM
vendor/llvm/dist/utils/unittest/googlemock/include/
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-actions.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-cardinalities.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-generated-actions.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-generated-function-mockers.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-generated-matchers.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-generated-nice-strict.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-matchers.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-more-actions.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-more-matchers.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock-spec-builders.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/gmock.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/custom/
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/custom/gmock-matchers.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/custom/gmock-port.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/gmock-generated-internal-utils.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/gmock-internal-utils.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/include/gmock/internal/gmock-port.h (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/
vendor/llvm/dist/utils/unittest/googlemock/src/gmock-all.cc (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/gmock-cardinalities.cc (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/gmock-internal-utils.cc (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/gmock-matchers.cc (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/gmock-spec-builders.cc (contents, props changed)
vendor/llvm/dist/utils/unittest/googlemock/src/gmock.cc (contents, props changed)
Deleted:
vendor/llvm/dist/include/llvm/Analysis/LoopPassManager.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumper.h
vendor/llvm/dist/lib/Analysis/LoopPassManager.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumper.cpp
vendor/llvm/dist/test/CodeGen/AMDGPU/fp16_to_fp.ll
vendor/llvm/dist/test/CodeGen/X86/atom-bypass-slow-division-64.ll
vendor/llvm/dist/test/CodeGen/X86/atom-bypass-slow-division.ll
vendor/llvm/dist/test/CodeGen/X86/slow-div.ll
vendor/llvm/dist/test/FileCheck/strict-whitespace-match-full-lines.txt
vendor/llvm/dist/test/tools/llvm-xray/X86/bad-instrmap-sizes.bin
vendor/llvm/dist/tools/llvm-pdbdump/BuiltinDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/BuiltinDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/ClassDefinitionDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/ClassDefinitionDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/CompilandDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/CompilandDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/EnumDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/EnumDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/ExternalSymbolDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/ExternalSymbolDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/FunctionDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/FunctionDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/TypeDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/TypeDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/TypedefDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/TypedefDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/VariableDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/VariableDumper.h
vendor/llvm/dist/unittests/Analysis/LoopPassManagerTest.cpp
Modified:
vendor/llvm/dist/CMakeLists.txt
vendor/llvm/dist/LICENSE.TXT
vendor/llvm/dist/cmake/modules/AddLLVM.cmake
vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake
vendor/llvm/dist/docs/LangRef.rst
vendor/llvm/dist/docs/ReleaseNotes.rst
vendor/llvm/dist/include/llvm/ADT/PointerSumType.h
vendor/llvm/dist/include/llvm/ADT/iterator.h
vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h
vendor/llvm/dist/include/llvm/Analysis/IVUsers.h
vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h
vendor/llvm/dist/include/llvm/Analysis/LoopAccessAnalysis.h
vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h
vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h
vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h
vendor/llvm/dist/include/llvm/CodeGen/DIE.h
vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBank.h
vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h
vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h
vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDumper.h
vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDie.h
vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
vendor/llvm/dist/include/llvm/DebugInfo/MSF/StreamArray.h
vendor/llvm/dist/include/llvm/IR/DIBuilder.h
vendor/llvm/dist/include/llvm/IR/DebugInfoMetadata.h
vendor/llvm/dist/include/llvm/IR/GlobalObject.h
vendor/llvm/dist/include/llvm/IR/Intrinsics.td
vendor/llvm/dist/include/llvm/IR/IntrinsicsAArch64.td
vendor/llvm/dist/include/llvm/IR/IntrinsicsARM.td
vendor/llvm/dist/include/llvm/IR/ModuleSummaryIndex.h
vendor/llvm/dist/include/llvm/IR/ModuleSummaryIndexYAML.h
vendor/llvm/dist/include/llvm/ObjectYAML/DWARFYAML.h
vendor/llvm/dist/include/llvm/ObjectYAML/MachOYAML.h
vendor/llvm/dist/include/llvm/Passes/PassBuilder.h
vendor/llvm/dist/include/llvm/ProfileData/InstrProf.h
vendor/llvm/dist/include/llvm/Support/CommandLine.h
vendor/llvm/dist/include/llvm/Support/Dwarf.h
vendor/llvm/dist/include/llvm/Support/FileOutputBuffer.h
vendor/llvm/dist/include/llvm/Support/GenericDomTree.h
vendor/llvm/dist/include/llvm/Target/TargetLowering.h
vendor/llvm/dist/include/llvm/Target/TargetMachine.h
vendor/llvm/dist/include/llvm/Target/TargetSelectionDAG.td
vendor/llvm/dist/include/llvm/Target/TargetSubtargetInfo.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/IndVarSimplify.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LICM.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopDeletion.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopInstSimplify.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopRotation.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/LoopUnrollPass.h
vendor/llvm/dist/include/llvm/Transforms/Utils/LoopUtils.h
vendor/llvm/dist/include/llvm/Transforms/Utils/UnrollLoop.h
vendor/llvm/dist/include/llvm/Transforms/Vectorize/LoopVectorize.h
vendor/llvm/dist/lib/Analysis/AssumptionCache.cpp
vendor/llvm/dist/lib/Analysis/CMakeLists.txt
vendor/llvm/dist/lib/Analysis/CostModel.cpp
vendor/llvm/dist/lib/Analysis/IVUsers.cpp
vendor/llvm/dist/lib/Analysis/InlineCost.cpp
vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
vendor/llvm/dist/lib/Analysis/LazyValueInfo.cpp
vendor/llvm/dist/lib/Analysis/LoopAccessAnalysis.cpp
vendor/llvm/dist/lib/Analysis/LoopInfo.cpp
vendor/llvm/dist/lib/Analysis/LoopPass.cpp
vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp
vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp
vendor/llvm/dist/lib/Analysis/ValueTracking.cpp
vendor/llvm/dist/lib/CMakeLists.txt
vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIE.cpp
vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
vendor/llvm/dist/lib/CodeGen/GlobalISel/RegBankSelect.cpp
vendor/llvm/dist/lib/CodeGen/GlobalISel/RegisterBank.cpp
vendor/llvm/dist/lib/CodeGen/GlobalISel/RegisterBankInfo.cpp
vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp
vendor/llvm/dist/lib/CodeGen/PeepholeOptimizer.cpp
vendor/llvm/dist/lib/CodeGen/ScheduleDAG.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h
vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/CMakeLists.txt
vendor/llvm/dist/lib/DebugInfo/CodeView/SymbolDumper.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDie.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFFormValue.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFUnit.cpp
vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
vendor/llvm/dist/lib/IR/AutoUpgrade.cpp
vendor/llvm/dist/lib/IR/DIBuilder.cpp
vendor/llvm/dist/lib/IR/Globals.cpp
vendor/llvm/dist/lib/IR/LLVMContextImpl.h
vendor/llvm/dist/lib/LTO/LTOBackend.cpp
vendor/llvm/dist/lib/LTO/ThinLTOCodeGenerator.cpp
vendor/llvm/dist/lib/Object/CMakeLists.txt
vendor/llvm/dist/lib/ObjectYAML/DWARFYAML.cpp
vendor/llvm/dist/lib/Passes/PassBuilder.cpp
vendor/llvm/dist/lib/ProfileData/InstrProf.cpp
vendor/llvm/dist/lib/Support/FileOutputBuffer.cpp
vendor/llvm/dist/lib/Support/Host.cpp
vendor/llvm/dist/lib/Support/TarWriter.cpp
vendor/llvm/dist/lib/Target/AArch64/AArch64GenRegisterBankInfo.def
vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp
vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td
vendor/llvm/dist/lib/Target/AArch64/AArch64RegisterBankInfo.cpp
vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.h
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.h
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUInstructions.td
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h
vendor/llvm/dist/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
vendor/llvm/dist/lib/Target/AMDGPU/EvergreenInstructions.td
vendor/llvm/dist/lib/Target/AMDGPU/SIFoldOperands.cpp
vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.td
vendor/llvm/dist/lib/Target/AMDGPU/SIInstructions.td
vendor/llvm/dist/lib/Target/AMDGPU/SIShrinkInstructions.cpp
vendor/llvm/dist/lib/Target/AMDGPU/VOP1Instructions.td
vendor/llvm/dist/lib/Target/AMDGPU/VOP2Instructions.td
vendor/llvm/dist/lib/Target/AMDGPU/VOPCInstructions.td
vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp
vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h
vendor/llvm/dist/lib/Target/ARM/ARMRegisterBankInfo.cpp
vendor/llvm/dist/lib/Target/ARM/ARMTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/ARM/ARMTargetTransformInfo.h
vendor/llvm/dist/lib/Target/Lanai/LanaiTargetTransformInfo.h
vendor/llvm/dist/lib/Target/Mips/MipsSEISelLowering.cpp
vendor/llvm/dist/lib/Target/NVPTX/ManagedStringPool.h
vendor/llvm/dist/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
vendor/llvm/dist/lib/Target/NVPTX/NVPTXAsmPrinter.h
vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelLowering.cpp
vendor/llvm/dist/lib/Target/NVPTX/NVPTXInstrInfo.td
vendor/llvm/dist/lib/Target/NVPTX/NVPTXSection.h
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetMachine.cpp
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetObjectFile.h
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetTransformInfo.h
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.h
vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp
vendor/llvm/dist/lib/Target/TargetMachine.cpp
vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyFastISel.cpp
vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h
vendor/llvm/dist/lib/Target/X86/X86.td
vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp
vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
vendor/llvm/dist/lib/Target/X86/X86InstrAVX512.td
vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td
vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.h
vendor/llvm/dist/lib/Transforms/IPO/LowerTypeTests.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAddSub.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombinePHI.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineShifts.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp
vendor/llvm/dist/lib/Transforms/Instrumentation/AddressSanitizer.cpp
vendor/llvm/dist/lib/Transforms/Instrumentation/InstrProfiling.cpp
vendor/llvm/dist/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
vendor/llvm/dist/lib/Transforms/Scalar/CMakeLists.txt
vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopDeletion.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopDistribute.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopInstSimplify.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopSink.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LoopUnrollPass.cpp
vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp
vendor/llvm/dist/lib/Transforms/Scalar/StructurizeCFG.cpp
vendor/llvm/dist/lib/Transforms/Utils/LoopUnroll.cpp
vendor/llvm/dist/lib/Transforms/Utils/LoopUnrollRuntime.cpp
vendor/llvm/dist/lib/Transforms/Utils/LoopUtils.cpp
vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp
vendor/llvm/dist/lib/Transforms/Utils/SimplifyLibCalls.cpp
vendor/llvm/dist/lib/Transforms/Vectorize/LoopVectorize.cpp
vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp
vendor/llvm/dist/runtimes/CMakeLists.txt
vendor/llvm/dist/test/Analysis/CostModel/AArch64/store.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/strided-load-i16.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/strided-load-i32.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/strided-load-i64.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/strided-load-i8.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-ashr-cost.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-lshr-cost.ll
vendor/llvm/dist/test/Analysis/CostModel/X86/vshift-shl-cost.ll
vendor/llvm/dist/test/Analysis/ScalarEvolution/max-trip-count.ll
vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-copy.ll
vendor/llvm/dist/test/CodeGen/AArch64/arm64-nvcast.ll
vendor/llvm/dist/test/CodeGen/AArch64/bitreverse.ll
vendor/llvm/dist/test/CodeGen/AArch64/rbit.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/fmul-2-combine-multi-use.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/fp32_to_fp16.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/insert_vector_elt.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/local-stack-slot-bug.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/mad-combine.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/sext-in-reg.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/v_mac.ll
vendor/llvm/dist/test/CodeGen/ARM/fp16-promote.ll
vendor/llvm/dist/test/CodeGen/ARM/fpcmp_ueq.ll
vendor/llvm/dist/test/CodeGen/ARM/vdup.ll
vendor/llvm/dist/test/CodeGen/ARM/vpadd.ll
vendor/llvm/dist/test/CodeGen/ARM/vtrn.ll
vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/extractelement.ll
vendor/llvm/dist/test/CodeGen/NVPTX/fast-math.ll
vendor/llvm/dist/test/CodeGen/PowerPC/variable_elem_vec_extracts.ll
vendor/llvm/dist/test/CodeGen/WebAssembly/function-bitcasts.ll
vendor/llvm/dist/test/CodeGen/X86/atomic-eflags-reuse.ll
vendor/llvm/dist/test/CodeGen/X86/avx-cvt.ll
vendor/llvm/dist/test/CodeGen/X86/avx-trunc.ll
vendor/llvm/dist/test/CodeGen/X86/avx512-cvt.ll
vendor/llvm/dist/test/CodeGen/X86/avx512-select.ll
vendor/llvm/dist/test/CodeGen/X86/avx512-trunc.ll
vendor/llvm/dist/test/CodeGen/X86/cmp.ll
vendor/llvm/dist/test/CodeGen/X86/cpus.ll
vendor/llvm/dist/test/CodeGen/X86/extractelement-index.ll
vendor/llvm/dist/test/CodeGen/X86/extractelement-legalization-store-ordering.ll
vendor/llvm/dist/test/CodeGen/X86/i64-mem-copy.ll
vendor/llvm/dist/test/CodeGen/X86/implicit-null-checks.mir
vendor/llvm/dist/test/CodeGen/X86/lzcnt-zext-cmp.ll
vendor/llvm/dist/test/CodeGen/X86/slow-unaligned-mem.ll
vendor/llvm/dist/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll
vendor/llvm/dist/test/CodeGen/X86/vec_ins_extract-1.ll
vendor/llvm/dist/test/CodeGen/X86/vec_insert-4.ll
vendor/llvm/dist/test/CodeGen/X86/vec_insert-8.ll
vendor/llvm/dist/test/CodeGen/X86/vec_int_to_fp.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-ashr-128.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-ashr-256.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-ashr-512.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-lshr-128.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-lshr-256.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-lshr-512.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-shl-128.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-shl-256.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shift-shl-512.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-combining-xop.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-variable-128.ll
vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-variable-256.ll
vendor/llvm/dist/test/CodeGen/X86/x86-64-double-shifts-var.ll
vendor/llvm/dist/test/DebugInfo/Generic/simplifycfg_sink_last_inst.ll
vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_BE-relocations.s
vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/AArch64/ELF_ARM64_relocations.s
vendor/llvm/dist/test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll
vendor/llvm/dist/test/MC/AMDGPU/vop_dpp.s
vendor/llvm/dist/test/MC/AMDGPU/vop_sdwa.s
vendor/llvm/dist/test/MC/ARM/directive-object_arch-2.s
vendor/llvm/dist/test/MC/ARM/directive-object_arch.s
vendor/llvm/dist/test/ObjectYAML/MachO/DWARF-debug_info.yaml
vendor/llvm/dist/test/Other/loop-pass-ordering.ll
vendor/llvm/dist/test/Other/new-pass-manager.ll
vendor/llvm/dist/test/Other/pass-pipeline-parsing.ll
vendor/llvm/dist/test/Transforms/GVN/assume-equal.ll
vendor/llvm/dist/test/Transforms/GVN/invariant.group.ll
vendor/llvm/dist/test/Transforms/InstCombine/fabs.ll
vendor/llvm/dist/test/Transforms/InstCombine/fast-math.ll
vendor/llvm/dist/test/Transforms/InstCombine/fdiv.ll
vendor/llvm/dist/test/Transforms/InstCombine/pow-4.ll
vendor/llvm/dist/test/Transforms/InstCombine/pow-sqrt.ll
vendor/llvm/dist/test/Transforms/InstSimplify/floating-point-arithmetic.ll
vendor/llvm/dist/test/Transforms/LICM/argmemonly-call.ll
vendor/llvm/dist/test/Transforms/LICM/assume.ll
vendor/llvm/dist/test/Transforms/LICM/atomics.ll
vendor/llvm/dist/test/Transforms/LICM/basictest.ll
vendor/llvm/dist/test/Transforms/LICM/constexpr.ll
vendor/llvm/dist/test/Transforms/LICM/crash.ll
vendor/llvm/dist/test/Transforms/LICM/debug-value.ll
vendor/llvm/dist/test/Transforms/LICM/extra-copies.ll
vendor/llvm/dist/test/Transforms/LICM/funclet.ll
vendor/llvm/dist/test/Transforms/LICM/hoist-bitcast-load.ll
vendor/llvm/dist/test/Transforms/LICM/hoist-deref-load.ll
vendor/llvm/dist/test/Transforms/LICM/hoist-nounwind.ll
vendor/llvm/dist/test/Transforms/LICM/hoist-round.ll
vendor/llvm/dist/test/Transforms/LICM/hoisting.ll
vendor/llvm/dist/test/Transforms/LICM/lcssa-ssa-promoter.ll
vendor/llvm/dist/test/Transforms/LICM/no-preheader-test.ll
vendor/llvm/dist/test/Transforms/LICM/preheader-safe.ll
vendor/llvm/dist/test/Transforms/LICM/promote-order.ll
vendor/llvm/dist/test/Transforms/LICM/promote-tls.ll
vendor/llvm/dist/test/Transforms/LICM/scalar-promote-memmodel.ll
vendor/llvm/dist/test/Transforms/LICM/scalar_promote-unwind.ll
vendor/llvm/dist/test/Transforms/LICM/scalar_promote.ll
vendor/llvm/dist/test/Transforms/LICM/speculate.ll
vendor/llvm/dist/test/Transforms/LICM/volatile-alias.ll
vendor/llvm/dist/test/Transforms/LoopSimplify/preserve-scev.ll
vendor/llvm/dist/test/Transforms/LoopUnroll/peel-loop-pgo.ll
vendor/llvm/dist/test/Transforms/LowerTypeTests/Inputs/import-unsat.yaml
vendor/llvm/dist/test/Transforms/LowerTypeTests/function.ll
vendor/llvm/dist/test/Transforms/LowerTypeTests/import-unsat.ll
vendor/llvm/dist/test/Transforms/LowerTypeTests/simple.ll
vendor/llvm/dist/test/Transforms/NewGVN/assume-equal.ll
vendor/llvm/dist/test/Transforms/NewGVN/invariant.group.ll
vendor/llvm/dist/test/Transforms/PGOProfile/comdat_internal.ll
vendor/llvm/dist/test/Transforms/PGOProfile/comdat_rename.ll
vendor/llvm/dist/test/Transforms/PGOProfile/indirect_call_profile.ll
vendor/llvm/dist/test/Transforms/StructurizeCFG/no-branch-to-entry.ll
vendor/llvm/dist/tools/dsymutil/DwarfLinker.cpp
vendor/llvm/dist/tools/llvm-config/BuildVariables.inc.in
vendor/llvm/dist/tools/llvm-config/CMakeLists.txt
vendor/llvm/dist/tools/llvm-config/llvm-config.cpp
vendor/llvm/dist/tools/llvm-pdbdump/CMakeLists.txt
vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.cpp
vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.h
vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.h
vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp
vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp
vendor/llvm/dist/tools/llvm-xray/CMakeLists.txt
vendor/llvm/dist/tools/llvm-xray/xray-extract.cc
vendor/llvm/dist/tools/obj2yaml/dwarf2yaml.cpp
vendor/llvm/dist/tools/opt/NewPMDriver.cpp
vendor/llvm/dist/tools/yaml2obj/yaml2dwarf.cpp
vendor/llvm/dist/tools/yaml2obj/yaml2macho.cpp
vendor/llvm/dist/tools/yaml2obj/yaml2obj.h
vendor/llvm/dist/unittests/Analysis/CMakeLists.txt
vendor/llvm/dist/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
vendor/llvm/dist/unittests/IR/DominatorTreeTest.cpp
vendor/llvm/dist/unittests/IR/IRBuilderTest.cpp
vendor/llvm/dist/unittests/Support/CMakeLists.txt
vendor/llvm/dist/unittests/Transforms/CMakeLists.txt
vendor/llvm/dist/utils/release/build_llvm_package.bat
vendor/llvm/dist/utils/unittest/CMakeLists.txt
vendor/llvm/dist/utils/unittest/UnitTestMain/TestMain.cpp
Modified: vendor/llvm/dist/CMakeLists.txt
==============================================================================
--- vendor/llvm/dist/CMakeLists.txt Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/CMakeLists.txt Sat Jan 14 15:37:50 2017 (r312173)
@@ -29,7 +29,7 @@ if(NOT DEFINED LLVM_VERSION_PATCH)
set(LLVM_VERSION_PATCH 0)
endif()
if(NOT DEFINED LLVM_VERSION_SUFFIX)
- set(LLVM_VERSION_SUFFIX svn)
+ set(LLVM_VERSION_SUFFIX "")
endif()
if (POLICY CMP0048)
Modified: vendor/llvm/dist/LICENSE.TXT
==============================================================================
--- vendor/llvm/dist/LICENSE.TXT Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/LICENSE.TXT Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/cmake/modules/AddLLVM.cmake
==============================================================================
--- vendor/llvm/dist/cmake/modules/AddLLVM.cmake Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/cmake/modules/AddLLVM.cmake Sat Jan 14 15:37:50 2017 (r312173)
@@ -1007,6 +1007,7 @@ function(add_unittest test_suite test_na
endif()
include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
+ include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googlemock/include)
if (NOT LLVM_ENABLE_THREADS)
list(APPEND LLVM_COMPILE_DEFINITIONS GTEST_HAS_PTHREAD=0)
endif ()
Added: vendor/llvm/dist/cmake/modules/CheckLinkerFlag.cmake
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/llvm/dist/cmake/modules/CheckLinkerFlag.cmake Sat Jan 14 15:37:50 2017 (r312173)
@@ -0,0 +1,8 @@
+include(CheckCXXCompilerFlag)
+
+function(check_linker_flag flag out_var)
+ set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${flag}")
+ check_cxx_compiler_flag("" ${out_var})
+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+endfunction()
Modified: vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake
==============================================================================
--- vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Sat Jan 14 15:37:50 2017 (r312173)
@@ -597,6 +597,14 @@ if (UNIX AND
append("-fcolor-diagnostics" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
endif()
+# lld doesn't print colored diagnostics when invoked from Ninja
+if (UNIX AND CMAKE_GENERATOR STREQUAL "Ninja")
+ include(CheckLinkerFlag)
+ check_linker_flag("-Wl,-color-diagnostics" LINKER_SUPPORTS_COLOR_DIAGNOSTICS)
+ append_if(LINKER_SUPPORTS_COLOR_DIAGNOSTICS "-Wl,-color-diagnostics"
+ CMAKE_EXE_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS)
+endif()
+
# Add flags for add_dead_strip().
# FIXME: With MSVS, consider compiling with /Gy and linking with /OPT:REF?
# But MinSizeRel seems to add that automatically, so maybe disable these
Modified: vendor/llvm/dist/docs/LangRef.rst
==============================================================================
--- vendor/llvm/dist/docs/LangRef.rst Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/docs/LangRef.rst Sat Jan 14 15:37:50 2017 (r312173)
@@ -2169,8 +2169,9 @@ Fast-Math Flags
LLVM IR floating-point binary ops (:ref:`fadd <i_fadd>`,
:ref:`fsub <i_fsub>`, :ref:`fmul <i_fmul>`, :ref:`fdiv <i_fdiv>`,
-:ref:`frem <i_frem>`, :ref:`fcmp <i_fcmp>`) have the following flags that can
-be set to enable otherwise unsafe floating point operations
+:ref:`frem <i_frem>`, :ref:`fcmp <i_fcmp>`) and :ref:`call <i_call>`
+instructions have the following flags that can be set to enable
+otherwise unsafe floating point transformations.
``nnan``
No NaNs - Allow optimizations to assume the arguments and result are not
Modified: vendor/llvm/dist/docs/ReleaseNotes.rst
==============================================================================
--- vendor/llvm/dist/docs/ReleaseNotes.rst Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/docs/ReleaseNotes.rst Sat Jan 14 15:37:50 2017 (r312173)
@@ -26,11 +26,6 @@ have questions or comments, the `LLVM De
<http://lists.llvm.org/mailman/listinfo/llvm-dev>`_ is a good place to send
them.
-Note that if you are reading this file from a Subversion checkout or the main
-LLVM web page, this document applies to the *next* release, not the current
-one. To see the release notes for a specific release, please see the `releases
-page <http://llvm.org/releases/>`_.
-
Non-comprehensive list of changes in this release
=================================================
* The C API functions LLVMAddFunctionAttr, LLVMGetFunctionAttr,
@@ -57,6 +52,9 @@ Non-comprehensive list of changes in thi
the previously used names should become descriptions and a short name in the
style of a programming language identifier should be added.
+* LLVM now handles invariant.group across different basic blocks, which makes
+ it possible to devirtualize virtual calls inside loops.
+
* ... next change ...
.. NOTE
Modified: vendor/llvm/dist/include/llvm/ADT/PointerSumType.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/PointerSumType.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/ADT/PointerSumType.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/ADT/iterator.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/iterator.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/ADT/iterator.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/IVUsers.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/IVUsers.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/IVUsers.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/LoopAccessAnalysis.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LoopAccessAnalysis.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/LoopAccessAnalysis.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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(
Added: vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/llvm/dist/include/llvm/Analysis/LoopAnalysisManager.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/DIE.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/DIE.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/DIE.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegBankSelect.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegBankSelect.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBank.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBank.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBank.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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; }
Added: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDumper.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDumper.h Sat Jan 14 12:55:32 2017 (r312172)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDumper.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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;
Added: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h Sat Jan 14 15:37:50 2017 (r312173)
@@ -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"
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-vendor
mailing list