svn commit: r318663 - in vendor/llvm/dist: docs include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/DebugInfo/CodeView include/llvm/DebugInfo/DWARF include/llvm/De...

Dimitry Andric dim at FreeBSD.org
Mon May 22 19:43:32 UTC 2017


Author: dim
Date: Mon May 22 19:43:28 2017
New Revision: 318663
URL: https://svnweb.freebsd.org/changeset/base/318663

Log:
  Vendor import of llvm trunk r303571:
  https://llvm.org/svn/llvm-project/llvm/trunk@303571

Added:
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeCollection.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeTableCollection.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/IR/DerivedUser.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/Object/COFFModuleDefinition.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/Object/WindowsResource.h   (contents, props changed)
  vendor/llvm/dist/lib/DebugInfo/CodeView/LazyRandomTypeCollection.cpp   (contents, props changed)
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeIndex.cpp   (contents, props changed)
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeTableCollection.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Object/COFFImportFile.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Object/COFFModuleDefinition.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Object/WindowsResource.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Support/BinaryStreamRef.cpp   (contents, props changed)
  vendor/llvm/dist/test/CodeGen/AMDGPU/frame-index-elimination.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/function-args.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/function-returns.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/lshl64-to-32.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/regcoalesce-prune.mir
  vendor/llvm/dist/test/CodeGen/Generic/opt-codegen-no-target-machine.ll
  vendor/llvm/dist/test/CodeGen/Mips/dins.ll
  vendor/llvm/dist/test/CodeGen/Mips/micromips-attr.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/add-vec.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-add-v128.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-add-v256.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-add-v512.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-sub-v128.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-sub-v256.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-sub-v512.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-add-v128.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-add-v256.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-add-v512.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-sub-v128.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-sub-v256.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-sub-v512.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/sub-vec.ll
  vendor/llvm/dist/test/CodeGen/X86/bitcast-setcc-128.ll
  vendor/llvm/dist/test/CodeGen/X86/bitcast-setcc-256.ll
  vendor/llvm/dist/test/CodeGen/X86/fmsubadd-combine.ll
  vendor/llvm/dist/test/CodeGen/X86/leaFixup32.mir
  vendor/llvm/dist/test/CodeGen/X86/leaFixup64.mir
  vendor/llvm/dist/test/CodeGen/X86/subcarry.ll
  vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.dwo   (contents, props changed)
  vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-addr-object-relocation.o   (contents, props changed)
  vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-multiple-cu.dwo   (contents, props changed)
  vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-multiple-cu.o   (contents, props changed)
  vendor/llvm/dist/test/DebugInfo/PDB/Inputs/merge1.yaml
  vendor/llvm/dist/test/DebugInfo/PDB/Inputs/merge2.yaml
  vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-mergetypes.test
  vendor/llvm/dist/test/LTO/X86/Inputs/strip-debug-info-bar.ll
  vendor/llvm/dist/test/MC/Disassembler/AMDGPU/exp_vi.txt   (contents, props changed)
  vendor/llvm/dist/test/ThinLTO/X86/Inputs/merge-triple.ll
  vendor/llvm/dist/test/ThinLTO/X86/merge-triple.ll
  vendor/llvm/dist/test/Transforms/InstCombine/AMDGPU/amdgcn-demanded-vector-elts.ll
  vendor/llvm/dist/test/Transforms/InstCombine/NVPTX/
  vendor/llvm/dist/test/Transforms/InstCombine/NVPTX/lit.local.cfg
  vendor/llvm/dist/test/Transforms/InstCombine/NVPTX/nvvm-intrins.ll
  vendor/llvm/dist/test/Transforms/InstCombine/wcslen-1.ll
  vendor/llvm/dist/test/Transforms/InstCombine/wcslen-2.ll
  vendor/llvm/dist/test/Transforms/InstCombine/wcslen-3.ll
  vendor/llvm/dist/test/Transforms/InstSimplify/icmp-bool-constant.ll
  vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/canonical-2.ll
  vendor/llvm/dist/test/Transforms/NewGVN/completeness.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr32838.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr32845.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr32897.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr32945.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr33014.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr33086.ll
  vendor/llvm/dist/test/Transforms/NewGVN/pr33116.ll
  vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/
  vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/cursor_small.bmp   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/okay_small.bmp   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/test_resource.rc
  vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/test_resource.res   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-cvtres/resource.test
Deleted:
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeDumper.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/RandomAccessTypeVisitor.h
  vendor/llvm/dist/lib/CodeGen/LiveRangeShrink.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeDumper.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/RandomAccessTypeVisitor.cpp
  vendor/llvm/dist/test/CodeGen/X86/avx512-mask-bugfix.ll
  vendor/llvm/dist/test/CodeGen/X86/lrshrink.ll
  vendor/llvm/dist/test/LTO/X86/Inputs/strip-debug-info.bc
  vendor/llvm/dist/test/Transforms/InstCombine/2008-09-29-FoldingOr.ll
  vendor/llvm/dist/test/Transforms/InstCombine/amdgcn-demanded-vector-elts.ll
  vendor/llvm/dist/test/Transforms/InstCombine/nvvm-intrins.ll
Modified:
  vendor/llvm/dist/docs/CMake.rst
  vendor/llvm/dist/docs/GetElementPtr.rst
  vendor/llvm/dist/docs/LangRef.rst
  vendor/llvm/dist/include/llvm/ADT/APInt.h
  vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h
  vendor/llvm/dist/include/llvm/ADT/Statistic.h
  vendor/llvm/dist/include/llvm/ADT/Triple.h
  vendor/llvm/dist/include/llvm/Analysis/MemorySSA.h
  vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
  vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.h
  vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
  vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineValueType.h
  vendor/llvm/dist/include/llvm/CodeGen/Passes.h
  vendor/llvm/dist/include/llvm/CodeGen/StackProtector.h
  vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVRecord.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDumper.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeIndex.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeSerializer.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFContext.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/PDBTypeServerHandler.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
  vendor/llvm/dist/include/llvm/IR/Argument.h
  vendor/llvm/dist/include/llvm/IR/BasicBlock.h
  vendor/llvm/dist/include/llvm/IR/Constant.h
  vendor/llvm/dist/include/llvm/IR/Constants.h
  vendor/llvm/dist/include/llvm/IR/Function.h
  vendor/llvm/dist/include/llvm/IR/GlobalValue.h
  vendor/llvm/dist/include/llvm/IR/GlobalVariable.h
  vendor/llvm/dist/include/llvm/IR/InlineAsm.h
  vendor/llvm/dist/include/llvm/IR/InstrTypes.h
  vendor/llvm/dist/include/llvm/IR/Instruction.def
  vendor/llvm/dist/include/llvm/IR/Instruction.h
  vendor/llvm/dist/include/llvm/IR/Instructions.h
  vendor/llvm/dist/include/llvm/IR/Metadata.h
  vendor/llvm/dist/include/llvm/IR/OperandTraits.h
  vendor/llvm/dist/include/llvm/IR/Operator.h
  vendor/llvm/dist/include/llvm/IR/PatternMatch.h
  vendor/llvm/dist/include/llvm/IR/User.h
  vendor/llvm/dist/include/llvm/IR/Value.def
  vendor/llvm/dist/include/llvm/IR/Value.h
  vendor/llvm/dist/include/llvm/InitializePasses.h
  vendor/llvm/dist/include/llvm/Object/Binary.h
  vendor/llvm/dist/include/llvm/Object/COFFImportFile.h
  vendor/llvm/dist/include/llvm/Object/Decompressor.h
  vendor/llvm/dist/include/llvm/Object/ELF.h
  vendor/llvm/dist/include/llvm/Object/RelocVisitor.h
  vendor/llvm/dist/include/llvm/PassInfo.h
  vendor/llvm/dist/include/llvm/PassSupport.h
  vendor/llvm/dist/include/llvm/Support/BinaryStreamReader.h
  vendor/llvm/dist/include/llvm/Support/BinaryStreamRef.h
  vendor/llvm/dist/include/llvm/Support/BinaryStreamWriter.h
  vendor/llvm/dist/include/llvm/Support/FileSystem.h
  vendor/llvm/dist/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
  vendor/llvm/dist/include/llvm/Transforms/IPO/FunctionImport.h
  vendor/llvm/dist/include/llvm/Transforms/Scalar/GVNExpression.h
  vendor/llvm/dist/include/llvm/Transforms/Utils/SimplifyLibCalls.h
  vendor/llvm/dist/lib/Analysis/BasicAliasAnalysis.cpp
  vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp
  vendor/llvm/dist/lib/Analysis/CallGraphSCCPass.cpp
  vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
  vendor/llvm/dist/lib/Analysis/MemorySSA.cpp
  vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
  vendor/llvm/dist/lib/Analysis/TargetLibraryInfo.cpp
  vendor/llvm/dist/lib/Analysis/ValueTracking.cpp
  vendor/llvm/dist/lib/AsmParser/LLParser.cpp
  vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp
  vendor/llvm/dist/lib/Bitcode/Reader/ValueList.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
  vendor/llvm/dist/lib/CodeGen/AtomicExpandPass.cpp
  vendor/llvm/dist/lib/CodeGen/CMakeLists.txt
  vendor/llvm/dist/lib/CodeGen/CodeGen.cpp
  vendor/llvm/dist/lib/CodeGen/CodeGenPrepare.cpp
  vendor/llvm/dist/lib/CodeGen/DwarfEHPrepare.cpp
  vendor/llvm/dist/lib/CodeGen/GlobalISel/IRTranslator.cpp
  vendor/llvm/dist/lib/CodeGen/GlobalISel/InstructionSelector.cpp
  vendor/llvm/dist/lib/CodeGen/InterleavedAccessPass.cpp
  vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp
  vendor/llvm/dist/lib/CodeGen/LowerEmuTLS.cpp
  vendor/llvm/dist/lib/CodeGen/MachineBlockPlacement.cpp
  vendor/llvm/dist/lib/CodeGen/MachineModuleInfo.cpp
  vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.cpp
  vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.cpp
  vendor/llvm/dist/lib/CodeGen/SafeStack.cpp
  vendor/llvm/dist/lib/CodeGen/SafeStackColoring.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.cpp
  vendor/llvm/dist/lib/CodeGen/StackProtector.cpp
  vendor/llvm/dist/lib/CodeGen/TargetPassConfig.cpp
  vendor/llvm/dist/lib/CodeGen/WinEHPrepare.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/CMakeLists.txt
  vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/SymbolDumper.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeSerializer.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeStreamMerger.cpp
  vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp
  vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFUnit.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiStream.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBFileBuilder.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBTypeServerHandler.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/TpiStream.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/TpiStreamBuilder.cpp
  vendor/llvm/dist/lib/Demangle/ItaniumDemangle.cpp
  vendor/llvm/dist/lib/IR/Attributes.cpp
  vendor/llvm/dist/lib/IR/AutoUpgrade.cpp
  vendor/llvm/dist/lib/IR/Constants.cpp
  vendor/llvm/dist/lib/IR/ConstantsContext.h
  vendor/llvm/dist/lib/IR/DataLayout.cpp
  vendor/llvm/dist/lib/IR/Function.cpp
  vendor/llvm/dist/lib/IR/IRBuilder.cpp
  vendor/llvm/dist/lib/IR/InlineAsm.cpp
  vendor/llvm/dist/lib/IR/Instruction.cpp
  vendor/llvm/dist/lib/IR/Instructions.cpp
  vendor/llvm/dist/lib/IR/LLVMContextImpl.cpp
  vendor/llvm/dist/lib/IR/PassRegistry.cpp
  vendor/llvm/dist/lib/IR/User.cpp
  vendor/llvm/dist/lib/IR/Value.cpp
  vendor/llvm/dist/lib/IR/ValueTypes.cpp
  vendor/llvm/dist/lib/IR/Verifier.cpp
  vendor/llvm/dist/lib/LTO/ThinLTOCodeGenerator.cpp
  vendor/llvm/dist/lib/Linker/IRMover.cpp
  vendor/llvm/dist/lib/Object/Binary.cpp
  vendor/llvm/dist/lib/Object/CMakeLists.txt
  vendor/llvm/dist/lib/Object/Decompressor.cpp
  vendor/llvm/dist/lib/Passes/PassBuilder.cpp
  vendor/llvm/dist/lib/Support/APInt.cpp
  vendor/llvm/dist/lib/Support/BinaryStreamReader.cpp
  vendor/llvm/dist/lib/Support/BinaryStreamWriter.cpp
  vendor/llvm/dist/lib/Support/CMakeLists.txt
  vendor/llvm/dist/lib/Support/FormattedStream.cpp
  vendor/llvm/dist/lib/Support/Triple.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td
  vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.h
  vendor/llvm/dist/lib/Target/AArch64/AArch64TargetMachine.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPU.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUCallLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUCallingConv.td
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUInstrInfo.td
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPURegisterInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPURegisterInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/BUFInstructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
  vendor/llvm/dist/lib/Target/AMDGPU/GCNRegPressure.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/GCNRegPressure.h
  vendor/llvm/dist/lib/Target/AMDGPU/R600ClauseMergePass.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600ControlFlowFinalizer.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600OptimizeVectorRegisters.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600Packetizer.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/R600RegisterInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIFrameLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIFrameLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIInstrFormats.td
  vendor/llvm/dist/lib/Target/AMDGPU/SILoadStoreOptimizer.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIMachineFunctionInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIPeepholeSDWA.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/SOPInstructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
  vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetMachine.cpp
  vendor/llvm/dist/lib/Target/Mips/Mips.h
  vendor/llvm/dist/lib/Target/Mips/Mips16HardFloat.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsDelaySlotFiller.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsLongBranch.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsOptimizePICCall.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsOs16.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrAltivec.td
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp
  vendor/llvm/dist/lib/Target/Sparc/DelaySlotFiller.cpp
  vendor/llvm/dist/lib/Target/Sparc/LeonPasses.cpp
  vendor/llvm/dist/lib/Target/Sparc/LeonPasses.h
  vendor/llvm/dist/lib/Target/Sparc/Sparc.h
  vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp
  vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
  vendor/llvm/dist/lib/Target/X86/X86.td
  vendor/llvm/dist/lib/Target/X86/X86CallingConv.td
  vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp
  vendor/llvm/dist/lib/Target/X86/X86FixupLEAs.cpp
  vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
  vendor/llvm/dist/lib/Target/X86/X86InstrAVX512.td
  vendor/llvm/dist/lib/Target/X86/X86InstrFragmentsSIMD.td
  vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp
  vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td
  vendor/llvm/dist/lib/Target/X86/X86InstrTSX.td
  vendor/llvm/dist/lib/Target/X86/X86InstructionSelector.cpp
  vendor/llvm/dist/lib/Target/X86/X86LegalizerInfo.cpp
  vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
  vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
  vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.cpp
  vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp
  vendor/llvm/dist/lib/Transforms/IPO/PassManagerBuilder.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAddSub.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/EarlyCSE.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoadCombine.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopPredication.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/SROA.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
  vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.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/test/Analysis/BranchProbabilityInfo/basic.ll
  vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/deopt-intrinsic.ll
  vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/noreturn.ll
  vendor/llvm/dist/test/Analysis/CostModel/X86/ctlz.ll
  vendor/llvm/dist/test/Analysis/CostModel/X86/ctpop.ll
  vendor/llvm/dist/test/Analysis/CostModel/X86/cttz.ll
  vendor/llvm/dist/test/Analysis/ScalarEvolution/nsw.ll
  vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count-pow2.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-ccmp.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-misched-multimmo.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/GlobalISel/amdgpu-irtranslator.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/add.i16.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/add.v2i16.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/bfe-patterns.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/coalescer_distribute.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/ctlz.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/ctlz_zero_undef.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/ds_write2.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/endcf-loop-header.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/fmed3.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/hsa-func.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/i1-copy-phi.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/inline-asm.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.atomic.dec.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.atomic.inc.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/packed-op-sel.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/sdwa-peephole.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/shift-and-i64-ubfe.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/srl.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/sub.i16.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/subreg_interference.mir
  vendor/llvm/dist/test/CodeGen/AMDGPU/vgpr-spill-emergency-stack-slot-compute.ll
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll
  vendor/llvm/dist/test/CodeGen/ARM/ifcvt-branch-weight-bug.ll
  vendor/llvm/dist/test/CodeGen/Mips/mips64-f128.ll
  vendor/llvm/dist/test/CodeGen/NVPTX/sched1.ll
  vendor/llvm/dist/test/CodeGen/NVPTX/sched2.ll
  vendor/llvm/dist/test/CodeGen/NVPTX/vec8.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/opt-cmp-inst-cr0-live.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/shift128.ll
  vendor/llvm/dist/test/CodeGen/SPARC/LeonItinerariesUT.ll
  vendor/llvm/dist/test/CodeGen/X86/2007-01-08-InstrSched.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/add-scalar.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/binop.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/br.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/callingconv.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/cmp.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/constant.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext-x86-64.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/frameIndex.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/gep.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-scalar-x32.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-scalar.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-vec.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/mul-scalar.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/mul-vec.ll
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/regbankselect-AVX2.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/regbankselect-AVX512.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-br.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-cmp.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-constant.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-frameIndex.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-gep.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-trunc.mir
  vendor/llvm/dist/test/CodeGen/X86/GlobalISel/trunc.ll
  vendor/llvm/dist/test/CodeGen/X86/O0-pipeline.ll
  vendor/llvm/dist/test/CodeGen/X86/addcarry.ll
  vendor/llvm/dist/test/CodeGen/X86/avg.ll
  vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-fast-isel.ll
  vendor/llvm/dist/test/CodeGen/X86/avx.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-cmp-kor-sequence.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-cmp.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-cvt.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-ext.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-fsel.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-gather-scatter-intrin.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-i1test.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-insert-extract.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-insert-extract_i1.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-load-store.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-mask-op.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-mask-spills.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-memfold.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-regcall-NoMask.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-scalar_mask.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-select.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512bw-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512bw-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512cdvl-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512cdvl-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512dq-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512dq-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512dqvl-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512dqvl-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512er-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512ifma-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512ifmavl-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512vl-intrinsics-upgrade.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512vl-intrinsics.ll
  vendor/llvm/dist/test/CodeGen/X86/bswap_tree2.ll
  vendor/llvm/dist/test/CodeGen/X86/constant-combines.ll
  vendor/llvm/dist/test/CodeGen/X86/fast-isel-load-i1.ll
  vendor/llvm/dist/test/CodeGen/X86/fma-fneg-combine.ll
  vendor/llvm/dist/test/CodeGen/X86/fold-tied-op.ll
  vendor/llvm/dist/test/CodeGen/X86/fp128-i128.ll
  vendor/llvm/dist/test/CodeGen/X86/haddsub-2.ll
  vendor/llvm/dist/test/CodeGen/X86/madd.ll
  vendor/llvm/dist/test/CodeGen/X86/masked_gather_scatter.ll
  vendor/llvm/dist/test/CodeGen/X86/merge-consecutive-loads-128.ll
  vendor/llvm/dist/test/CodeGen/X86/misched-matrix.ll
  vendor/llvm/dist/test/CodeGen/X86/mul-i1024.ll
  vendor/llvm/dist/test/CodeGen/X86/mul-i256.ll
  vendor/llvm/dist/test/CodeGen/X86/mul-i512.ll
  vendor/llvm/dist/test/CodeGen/X86/oddshuffles.ll
  vendor/llvm/dist/test/CodeGen/X86/overflow.ll
  vendor/llvm/dist/test/CodeGen/X86/pmul.ll
  vendor/llvm/dist/test/CodeGen/X86/pr27591.ll
  vendor/llvm/dist/test/CodeGen/X86/pr28173.ll
  vendor/llvm/dist/test/CodeGen/X86/pr29112.ll
  vendor/llvm/dist/test/CodeGen/X86/pr31088.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32241.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32256.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32284.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32451.ll
  vendor/llvm/dist/test/CodeGen/X86/rotate.ll
  vendor/llvm/dist/test/CodeGen/X86/rtm.ll
  vendor/llvm/dist/test/CodeGen/X86/sad.ll
  vendor/llvm/dist/test/CodeGen/X86/select.ll
  vendor/llvm/dist/test/CodeGen/X86/setcc-wide-types.ll
  vendor/llvm/dist/test/CodeGen/X86/shrink_vmul_sse.ll
  vendor/llvm/dist/test/CodeGen/X86/sse-intrinsics-fast-isel.ll
  vendor/llvm/dist/test/CodeGen/X86/sse-scalar-fp-arith.ll
  vendor/llvm/dist/test/CodeGen/X86/sse1.ll
  vendor/llvm/dist/test/CodeGen/X86/sse3-avx-addsub-2.ll
  vendor/llvm/dist/test/CodeGen/X86/sse41.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_int_to_fp.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-bitreverse.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-blend.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-sqrt.ll
  vendor/llvm/dist/test/CodeGen/X86/x86-interleaved-access.ll
  vendor/llvm/dist/test/CodeGen/X86/xmulo.ll
  vendor/llvm/dist/test/CodeGen/X86/xor-select-i1-combine.ll
  vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-headers.test
  vendor/llvm/dist/test/DebugInfo/llvm-symbolizer.test
  vendor/llvm/dist/test/Instrumentation/MemorySanitizer/csr.ll
  vendor/llvm/dist/test/LTO/X86/strip-debug-info.ll
  vendor/llvm/dist/test/MC/AMDGPU/exp.s
  vendor/llvm/dist/test/MC/Disassembler/AMDGPU/sopc_vi.txt
  vendor/llvm/dist/test/TableGen/GlobalISelEmitter.td
  vendor/llvm/dist/test/TableGen/intrinsic-varargs.td
  vendor/llvm/dist/test/Transforms/InstCombine/cast.ll
  vendor/llvm/dist/test/Transforms/InstCombine/lshr.ll
  vendor/llvm/dist/test/Transforms/InstCombine/memchr.ll
  vendor/llvm/dist/test/Transforms/InstCombine/set.ll
  vendor/llvm/dist/test/Transforms/InstSimplify/AndOrXor.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/assume.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/fold-not-thread.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/guards.ll
  vendor/llvm/dist/test/Transforms/NewGVN/storeoverstore.ll
  vendor/llvm/dist/test/Transforms/SafeStack/X86/coloring-ssp.ll
  vendor/llvm/dist/test/Transforms/SafeStack/X86/coloring.ll
  vendor/llvm/dist/test/Transforms/SafeStack/X86/coloring2.ll
  vendor/llvm/dist/test/Transforms/SafeStack/X86/layout-frag.ll
  vendor/llvm/dist/tools/llc/llc.cpp
  vendor/llvm/dist/tools/llvm-cvtres/CMakeLists.txt
  vendor/llvm/dist/tools/llvm-cvtres/llvm-cvtres.cpp
  vendor/llvm/dist/tools/llvm-cvtres/llvm-cvtres.h
  vendor/llvm/dist/tools/llvm-dwp/llvm-dwp.cpp
  vendor/llvm/dist/tools/llvm-lto/llvm-lto.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/Analyze.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/CompactTypeDumpVisitor.h
  vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.h
  vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.h
  vendor/llvm/dist/tools/llvm-pdbdump/YamlTypeDumper.cpp
  vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp
  vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp
  vendor/llvm/dist/tools/opt/opt.cpp
  vendor/llvm/dist/unittests/ADT/APIntTest.cpp
  vendor/llvm/dist/unittests/DebugInfo/CodeView/RandomAccessVisitorTest.cpp
  vendor/llvm/dist/unittests/IR/AttributesTest.cpp
  vendor/llvm/dist/unittests/IR/ConstantsTest.cpp
  vendor/llvm/dist/unittests/IR/DominatorTreeTest.cpp
  vendor/llvm/dist/unittests/IR/InstructionsTest.cpp
  vendor/llvm/dist/unittests/IR/MetadataTest.cpp
  vendor/llvm/dist/unittests/Support/BinaryStreamTest.cpp
  vendor/llvm/dist/unittests/Support/CrashRecoveryTest.cpp
  vendor/llvm/dist/unittests/Support/ScaledNumberTest.cpp
  vendor/llvm/dist/unittests/Target/AArch64/InstSizes.cpp
  vendor/llvm/dist/unittests/Transforms/Utils/Cloning.cpp
  vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp
  vendor/llvm/dist/utils/TableGen/GlobalISelEmitter.cpp
  vendor/llvm/dist/utils/git-svn/git-llvm
  vendor/llvm/dist/utils/lit/lit/TestRunner.py

Modified: vendor/llvm/dist/docs/CMake.rst
==============================================================================
--- vendor/llvm/dist/docs/CMake.rst	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/docs/CMake.rst	Mon May 22 19:43:28 2017	(r318663)
@@ -186,8 +186,8 @@ CMake manual, or execute ``cmake --help-
   Sets the build type for ``make``-based generators. Possible values are
   Release, Debug, RelWithDebInfo and MinSizeRel. If you are using an IDE such as
   Visual Studio, you should use the IDE settings to set the build type.
-  Be aware that Release and RelWithDebInfo are not using the same optimization
-  level on most platform.
+  Be aware that Release and RelWithDebInfo use different optimization levels on
+  most platforms.
 
 **CMAKE_INSTALL_PREFIX**:PATH
   Path where LLVM will be installed if "make install" is invoked or the

Modified: vendor/llvm/dist/docs/GetElementPtr.rst
==============================================================================
--- vendor/llvm/dist/docs/GetElementPtr.rst	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/docs/GetElementPtr.rst	Mon May 22 19:43:28 2017	(r318663)
@@ -9,10 +9,11 @@ Introduction
 ============
 
 This document seeks to dispel the mystery and confusion surrounding LLVM's
-`GetElementPtr <LangRef.html#i_getelementptr>`_ (GEP) instruction.  Questions
-about the wily GEP instruction are probably the most frequently occurring
-questions once a developer gets down to coding with LLVM. Here we lay out the
-sources of confusion and show that the GEP instruction is really quite simple.
+`GetElementPtr <LangRef.html#getelementptr-instruction>`_ (GEP) instruction.
+Questions about the wily GEP instruction are probably the most frequently
+occurring questions once a developer gets down to coding with LLVM. Here we lay
+out the sources of confusion and show that the GEP instruction is really quite
+simple.
 
 Address Computation
 ===================
@@ -429,7 +430,8 @@ because LLVM has no restrictions on mixi
 
 LLVM's type-based alias analysis pass uses metadata to describe a different type
 system (such as the C type system), and performs type-based aliasing on top of
-that.  Further details are in the `language reference <LangRef.html#tbaa>`_.
+that.  Further details are in the
+`language reference <LangRef.html#tbaa-metadata>`_.
 
 What happens if a GEP computation overflows?
 --------------------------------------------

Modified: vendor/llvm/dist/docs/LangRef.rst
==============================================================================
--- vendor/llvm/dist/docs/LangRef.rst	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/docs/LangRef.rst	Mon May 22 19:43:28 2017	(r318663)
@@ -161,7 +161,7 @@ symbol table entries. Here is an example
 
     ; Definition of main function
     define i32 @main() {   ; i32()*
-      ; Convert [13 x i8]* to i8  *...
+      ; Convert [13 x i8]* to i8*...
       %cast210 = getelementptr [13 x i8], [13 x i8]* @.str, i64 0, i64 0
 
       ; Call puts function to write out the string to stdout.
@@ -9548,7 +9548,7 @@ Syntax:
 
 ::
 
-      declare i8  *@llvm.returnaddress(i32 <level>)
+      declare i8* @llvm.returnaddress(i32 <level>)
 
 Overview:
 """""""""
@@ -9586,7 +9586,7 @@ Syntax:
 
 ::
 
-      declare i8  *@llvm.addressofreturnaddress()
+      declare i8* @llvm.addressofreturnaddress()
 
 Overview:
 """""""""

Modified: vendor/llvm/dist/include/llvm/ADT/APInt.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/APInt.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/ADT/APInt.h	Mon May 22 19:43:28 2017	(r318663)
@@ -182,8 +182,9 @@ private:
   /// provides a more convenient form of divide for internal use since KnuthDiv
   /// has specific constraints on its inputs. If those constraints are not met
   /// then it provides a simpler form of divide.
-  static void divide(const APInt &LHS, unsigned lhsWords, const APInt &RHS,
-                     unsigned rhsWords, APInt *Quotient, APInt *Remainder);
+  static void divide(const WordType *LHS, unsigned lhsWords,
+                     const WordType *RHS, unsigned rhsWords, WordType *Quotient,
+                     WordType *Remainder);
 
   /// out-of-line slow case for inline constructor
   void initSlowCase(uint64_t val, bool isSigned);
@@ -1016,11 +1017,13 @@ public:
   ///
   /// \returns a new APInt value containing the division result
   APInt udiv(const APInt &RHS) const;
+  APInt udiv(uint64_t RHS) const;
 
   /// \brief Signed division function for APInt.
   ///
   /// Signed divide this APInt by APInt RHS.
   APInt sdiv(const APInt &RHS) const;
+  APInt sdiv(int64_t RHS) const;
 
   /// \brief Unsigned remainder operation.
   ///
@@ -1032,11 +1035,13 @@ public:
   ///
   /// \returns a new APInt value containing the remainder result
   APInt urem(const APInt &RHS) const;
+  uint64_t urem(uint64_t RHS) const;
 
   /// \brief Function for signed remainder operation.
   ///
   /// Signed remainder operation on APInt.
   APInt srem(const APInt &RHS) const;
+  int64_t srem(int64_t RHS) const;
 
   /// \brief Dual division/remainder interface.
   ///
@@ -1047,9 +1052,13 @@ public:
   /// udivrem(X, Y, X, Y), for example.
   static void udivrem(const APInt &LHS, const APInt &RHS, APInt &Quotient,
                       APInt &Remainder);
+  static void udivrem(const APInt &LHS, uint64_t RHS, APInt &Quotient,
+                      uint64_t &Remainder);
 
   static void sdivrem(const APInt &LHS, const APInt &RHS, APInt &Quotient,
                       APInt &Remainder);
+  static void sdivrem(const APInt &LHS, int64_t RHS, APInt &Quotient,
+                      int64_t &Remainder);
 
   // Operations that return overflow indicators.
   APInt sadd_ov(const APInt &RHS, bool &Overflow) const;
@@ -2015,7 +2024,7 @@ inline APInt operator-(APInt a, const AP
 }
 
 inline APInt operator-(const APInt &a, APInt &&b) {
-  b = -std::move(b);
+  b.negate();
   b += a;
   return std::move(b);
 }
@@ -2026,7 +2035,7 @@ inline APInt operator-(APInt a, uint64_t
 }
 
 inline APInt operator-(uint64_t LHS, APInt b) {
-  b = -std::move(b);
+  b.negate();
   b += LHS;
   return b;
 }

Modified: vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h	Mon May 22 19:43:28 2017	(r318663)
@@ -365,6 +365,8 @@ protected:
 public:
   using iterator = SmallPtrSetIterator<PtrType>;
   using const_iterator = SmallPtrSetIterator<PtrType>;
+  using key_type = ConstPtrType;
+  using value_type = PtrType;
 
   SmallPtrSetImpl(const SmallPtrSetImpl &) = delete;
 

Modified: vendor/llvm/dist/include/llvm/ADT/Statistic.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/Statistic.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/ADT/Statistic.h	Mon May 22 19:43:28 2017	(r318663)
@@ -101,6 +101,16 @@ public:
     return init();
   }
 
+  void updateMax(unsigned V) {
+    unsigned PrevMax = Value.load(std::memory_order_relaxed);
+    // Keep trying to update max until we succeed or another thread produces
+    // a bigger max than us.
+    while (V > PrevMax && !Value.compare_exchange_weak(
+                              PrevMax, V, std::memory_order_relaxed)) {
+    }
+    init();
+  }
+
 #else  // Statistics are disabled in release builds.
 
   const Statistic &operator=(unsigned Val) {
@@ -131,6 +141,8 @@ public:
     return *this;
   }
 
+  void updateMax(unsigned V) {}
+
 #endif  // !defined(NDEBUG) || defined(LLVM_ENABLE_STATS)
 
 protected:

Modified: vendor/llvm/dist/include/llvm/ADT/Triple.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/Triple.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/ADT/Triple.h	Mon May 22 19:43:28 2017	(r318663)
@@ -252,6 +252,10 @@ public:
            ObjectFormat == Other.ObjectFormat;
   }
 
+  bool operator!=(const Triple &Other) const {
+    return !(*this == Other);
+  }
+
   /// @}
   /// @name Normalization
   /// @{
@@ -722,6 +726,12 @@ public:
   /// \returns true if the triple is little endian, false otherwise.
   bool isLittleEndian() const;
 
+  /// Test whether target triples are compatible.
+  bool isCompatibleWith(const Triple &Other) const;
+
+  /// Merge target triples.
+  std::string merge(const Triple &Other) const;
+
   /// @}
   /// @name Static helpers for IDs.
   /// @{

Modified: vendor/llvm/dist/include/llvm/Analysis/MemorySSA.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/MemorySSA.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/Analysis/MemorySSA.h	Mon May 22 19:43:28 2017	(r318663)
@@ -84,6 +84,7 @@
 #include "llvm/Analysis/MemoryLocation.h"
 #include "llvm/Analysis/PHITransAddr.h"
 #include "llvm/IR/BasicBlock.h"
+#include "llvm/IR/DerivedUser.h"
 #include "llvm/IR/Dominators.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/OperandTraits.h"
@@ -127,7 +128,7 @@ using const_memoryaccess_def_iterator =
 // \brief The base for all memory accesses. All memory accesses in a block are
 // linked together using an intrusive list.
 class MemoryAccess
-    : public User,
+    : public DerivedUser,
       public ilist_node<MemoryAccess, ilist_tag<MSSAHelpers::AllAccessTag>>,
       public ilist_node<MemoryAccess, ilist_tag<MSSAHelpers::DefsOnlyTag>> {
 public:
@@ -145,15 +146,14 @@ public:
 
   MemoryAccess(const MemoryAccess &) = delete;
   MemoryAccess &operator=(const MemoryAccess &) = delete;
-  ~MemoryAccess() override;
 
   void *operator new(size_t, unsigned) = delete;
   void *operator new(size_t) = delete;
 
   BasicBlock *getBlock() const { return Block; }
 
-  virtual void print(raw_ostream &OS) const = 0;
-  virtual void dump() const;
+  void print(raw_ostream &OS) const;
+  void dump() const;
 
   /// \brief The user iterators for a memory access
   typedef user_iterator iterator;
@@ -207,11 +207,12 @@ protected:
 
   /// \brief Used for debugging and tracking things about MemoryAccesses.
   /// Guaranteed unique among MemoryAccesses, no guarantees otherwise.
-  virtual unsigned getID() const = 0;
+  inline unsigned getID() const;
 
-  MemoryAccess(LLVMContext &C, unsigned Vty, BasicBlock *BB,
-               unsigned NumOperands)
-      : User(Type::getVoidTy(C), Vty, nullptr, NumOperands), Block(BB) {}
+  MemoryAccess(LLVMContext &C, unsigned Vty, DeleteValueTy DeleteValue,
+               BasicBlock *BB, unsigned NumOperands)
+      : DerivedUser(Type::getVoidTy(C), Vty, nullptr, NumOperands, DeleteValue),
+        Block(BB) {}
 
 private:
   BasicBlock *Block;
@@ -248,21 +249,21 @@ public:
 
   // Sadly, these have to be public because they are needed in some of the
   // iterators.
-  virtual bool isOptimized() const = 0;
-  virtual MemoryAccess *getOptimized() const = 0;
-  virtual void setOptimized(MemoryAccess *) = 0;
+  inline bool isOptimized() const;
+  inline MemoryAccess *getOptimized() const;
+  inline void setOptimized(MemoryAccess *);
 
   /// \brief Reset the ID of what this MemoryUse was optimized to, causing it to
   /// be rewalked by the walker if necessary.
   /// This really should only be called by tests.
-  virtual void resetOptimized() = 0;
+  inline void resetOptimized();
 
 protected:
   friend class MemorySSA;
   friend class MemorySSAUpdater;
   MemoryUseOrDef(LLVMContext &C, MemoryAccess *DMA, unsigned Vty,
-                 Instruction *MI, BasicBlock *BB)
-      : MemoryAccess(C, Vty, BB, 1), MemoryInst(MI) {
+                 DeleteValueTy DeleteValue, Instruction *MI, BasicBlock *BB)
+      : MemoryAccess(C, Vty, DeleteValue, BB, 1), MemoryInst(MI) {
     setDefiningAccess(DMA);
   }
   void setDefiningAccess(MemoryAccess *DMA, bool Optimized = false) {
@@ -292,7 +293,8 @@ public:
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(MemoryAccess);
 
   MemoryUse(LLVMContext &C, MemoryAccess *DMA, Instruction *MI, BasicBlock *BB)
-      : MemoryUseOrDef(C, DMA, MemoryUseVal, MI, BB), OptimizedID(0) {}
+      : MemoryUseOrDef(C, DMA, MemoryUseVal, deleteMe, MI, BB),
+        OptimizedID(0) {}
 
   // allocate space for exactly one operand
   void *operator new(size_t s) { return User::operator new(s, 1); }
@@ -302,32 +304,30 @@ public:
     return MA->getValueID() == MemoryUseVal;
   }
 
-  void print(raw_ostream &OS) const override;
+  void print(raw_ostream &OS) const;
 
-  virtual void setOptimized(MemoryAccess *DMA) override {
+  void setOptimized(MemoryAccess *DMA) {
     OptimizedID = DMA->getID();
     setOperand(0, DMA);
   }
 
-  virtual bool isOptimized() const override {
+  bool isOptimized() const {
     return getDefiningAccess() && OptimizedID == getDefiningAccess()->getID();
   }
 
-  virtual MemoryAccess *getOptimized() const override {
+  MemoryAccess *getOptimized() const {
     return getDefiningAccess();
   }
-  virtual void resetOptimized() override {
+  void resetOptimized() {
     OptimizedID = INVALID_MEMORYACCESS_ID;
   }
 
 protected:
   friend class MemorySSA;
 
-  unsigned getID() const override {
-    llvm_unreachable("MemoryUses do not have IDs");
-  }
-
 private:
+  static void deleteMe(DerivedUser *Self);
+
   unsigned int OptimizedID;
 };
 
@@ -350,8 +350,8 @@ public:
 
   MemoryDef(LLVMContext &C, MemoryAccess *DMA, Instruction *MI, BasicBlock *BB,
             unsigned Ver)
-      : MemoryUseOrDef(C, DMA, MemoryDefVal, MI, BB), ID(Ver),
-        Optimized(nullptr), OptimizedID(INVALID_MEMORYACCESS_ID) {}
+      : MemoryUseOrDef(C, DMA, MemoryDefVal, deleteMe, MI, BB),
+        ID(Ver), Optimized(nullptr), OptimizedID(INVALID_MEMORYACCESS_ID) {}
 
   // allocate space for exactly one operand
   void *operator new(size_t s) { return User::operator new(s, 1); }
@@ -361,27 +361,28 @@ public:
     return MA->getValueID() == MemoryDefVal;
   }
 
-  virtual void setOptimized(MemoryAccess *MA) override {
+  void setOptimized(MemoryAccess *MA) {
     Optimized = MA;
     OptimizedID = getDefiningAccess()->getID();
   }
-  virtual MemoryAccess *getOptimized() const override { return Optimized; }
-  virtual bool isOptimized() const override {
+  MemoryAccess *getOptimized() const { return Optimized; }
+  bool isOptimized() const {
     return getOptimized() && getDefiningAccess() &&
            OptimizedID == getDefiningAccess()->getID();
   }
-  virtual void resetOptimized() override {
+  void resetOptimized() {
     OptimizedID = INVALID_MEMORYACCESS_ID;
   }
 
-  void print(raw_ostream &OS) const override;
+  void print(raw_ostream &OS) const;
 
-protected:
   friend class MemorySSA;
 
-  unsigned getID() const override { return ID; }
+  unsigned getID() const { return ID; }
 
 private:
+  static void deleteMe(DerivedUser *Self);
+
   const unsigned ID;
   MemoryAccess *Optimized;
   unsigned int OptimizedID;
@@ -432,7 +433,8 @@ public:
   DECLARE_TRANSPARENT_OPERAND_ACCESSORS(MemoryAccess);
 
   MemoryPhi(LLVMContext &C, BasicBlock *BB, unsigned Ver, unsigned NumPreds = 0)
-      : MemoryAccess(C, MemoryPhiVal, BB, 0), ID(Ver), ReservedSpace(NumPreds) {
+      : MemoryAccess(C, MemoryPhiVal, deleteMe, BB, 0), ID(Ver),
+        ReservedSpace(NumPreds) {
     allocHungoffUses(ReservedSpace);
   }
 
@@ -534,7 +536,9 @@ public:
     return V->getValueID() == MemoryPhiVal;
   }
 
-  void print(raw_ostream &OS) const override;
+  void print(raw_ostream &OS) const;
+
+  unsigned getID() const { return ID; }
 
 protected:
   friend class MemorySSA;
@@ -546,8 +550,6 @@ protected:
     User::allocHungoffUses(N, /* IsPhi */ true);
   }
 
-  unsigned getID() const final { return ID; }
-
 private:
   // For debugging only
   const unsigned ID;
@@ -561,8 +563,45 @@ private:
     ReservedSpace = std::max(E + E / 2, 2u);
     growHungoffUses(ReservedSpace, /* IsPhi */ true);
   }
+
+  static void deleteMe(DerivedUser *Self);
 };
 
+inline unsigned MemoryAccess::getID() const {
+  assert((isa<MemoryDef>(this) || isa<MemoryPhi>(this)) &&
+         "only memory defs and phis have ids");
+  if (const auto *MD = dyn_cast<MemoryDef>(this))
+    return MD->getID();
+  return cast<MemoryPhi>(this)->getID();
+}
+
+inline bool MemoryUseOrDef::isOptimized() const {
+  if (const auto *MD = dyn_cast<MemoryDef>(this))
+    return MD->isOptimized();
+  return cast<MemoryUse>(this)->isOptimized();
+}
+
+inline MemoryAccess *MemoryUseOrDef::getOptimized() const {
+  if (const auto *MD = dyn_cast<MemoryDef>(this))
+    return MD->getOptimized();
+  return cast<MemoryUse>(this)->getOptimized();
+}
+
+inline void MemoryUseOrDef::setOptimized(MemoryAccess *MA) {
+  if (auto *MD = dyn_cast<MemoryDef>(this))
+    MD->setOptimized(MA);
+  else
+    cast<MemoryUse>(this)->setOptimized(MA);
+}
+
+inline void MemoryUseOrDef::resetOptimized() {
+  if (auto *MD = dyn_cast<MemoryDef>(this))
+    MD->resetOptimized();
+  else
+    cast<MemoryUse>(this)->resetOptimized();
+}
+
+
 template <> struct OperandTraits<MemoryPhi> : public HungoffOperandTraits<2> {};
 DEFINE_TRANSPARENT_OPERAND_ACCESSORS(MemoryPhi, MemoryAccess)
 

Modified: vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Mon May 22 19:43:28 2017	(r318663)
@@ -656,10 +656,12 @@ private:
     /// Test whether this BackedgeTakenInfo contains complete information.
     bool hasFullInfo() const { return isComplete(); }
 
-    /// Return an expression indicating the exact backedge-taken count of the
-    /// loop if it is known or SCEVCouldNotCompute otherwise. This is the
-    /// number of times the loop header can be guaranteed to execute, minus
-    /// one.
+    /// Return an expression indicating the exact *backedge-taken*
+    /// count of the loop if it is known or SCEVCouldNotCompute
+    /// otherwise.  If execution makes it to the backedge on every
+    /// iteration (i.e. there are no abnormal exists like exception
+    /// throws and thread exits) then this is the number of times the
+    /// loop header will execute minus one.
     ///
     /// If the SCEV predicate associated with the answer can be different
     /// from AlwaysTrue, we must add a (non null) Predicates argument.
@@ -1398,11 +1400,11 @@ public:
   const SCEV *getExitCount(const Loop *L, BasicBlock *ExitingBlock);
 
   /// If the specified loop has a predictable backedge-taken count, return it,
-  /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count
-  /// is the number of times the loop header will be branched to from within
-  /// the loop. This is one less than the trip count of the loop, since it
-  /// doesn't count the first iteration, when the header is branched to from
-  /// outside the loop.
+  /// otherwise return a SCEVCouldNotCompute object. The backedge-taken count is
+  /// the number of times the loop header will be branched to from within the
+  /// loop, assuming there are no abnormal exists like exception throws. This is
+  /// one less than the trip count of the loop, since it doesn't count the first
+  /// iteration, when the header is branched to from outside the loop.
   ///
   /// Note that it is not valid to call this method on a loop without a
   /// loop-invariant backedge-taken count (see
@@ -1417,8 +1419,10 @@ public:
   const SCEV *getPredicatedBackedgeTakenCount(const Loop *L,
                                               SCEVUnionPredicate &Predicates);
 
-  /// Similar to getBackedgeTakenCount, except return the least SCEV value
-  /// that is known never to be less than the actual backedge taken count.
+  /// When successful, this returns a SCEVConstant that is greater than or equal
+  /// to (i.e. a "conservative over-approximation") of the value returend by
+  /// getBackedgeTakenCount.  If such a value cannot be computed, it returns the
+  /// SCEVCouldNotCompute object.
   const SCEV *getMaxBackedgeTakenCount(const Loop *L);
 
   /// Return true if the backedge taken count is either the value returned by

Modified: vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.h	Mon May 22 19:43:28 2017	(r318663)
@@ -191,6 +191,14 @@ public:
   void setShouldSignExtI32Param(bool Val) {
     ShouldSignExtI32Param = Val;
   }
+
+  /// Returns the size of the wchar_t type in bytes.
+  unsigned getWCharSize(const Module &M) const;
+
+  /// Returns size of the default wchar_t type on target \p T. This is mostly
+  /// intended to verify that the size in the frontend matches LLVM. All other
+  /// queries should use getWCharSize() instead.
+  static unsigned getTargetWCharSize(const Triple &T);
 };
 
 /// Provides information about what library functions are available for
@@ -307,6 +315,11 @@ public:
     return Attribute::None;
   }
 
+  /// \copydoc TargetLibraryInfoImpl::getWCharSize()
+  unsigned getWCharSize(const Module &M) const {
+    return Impl->getWCharSize(M);
+  }
+
   /// Handle invalidation from the pass manager.
   ///
   /// If we try to invalidate this info, just return false. It cannot become

Modified: vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h	Mon May 22 19:43:28 2017	(r318663)
@@ -218,9 +218,38 @@ template <typename T> class ArrayRef;
                                             DL);
   }
 
-  /// Returns true if the GEP is based on a pointer to a string (array of i8), 
-  /// and is indexing into this string.
-  bool isGEPBasedOnPointerToString(const GEPOperator *GEP);
+  /// Returns true if the GEP is based on a pointer to a string (array of
+  // \p CharSize integers) and is indexing into this string.
+  bool isGEPBasedOnPointerToString(const GEPOperator *GEP,
+                                   unsigned CharSize = 8);
+
+  /// Represents offset+length into a ConstantDataArray.
+  struct ConstantDataArraySlice {
+    /// ConstantDataArray pointer. nullptr indicates a zeroinitializer (a valid
+    /// initializer, it just doesn't fit the ConstantDataArray interface).
+    const ConstantDataArray *Array;
+    /// Slice starts at this Offset.
+    uint64_t Offset;
+    /// Length of the slice.
+    uint64_t Length;
+
+    /// Moves the Offset and adjusts Length accordingly.
+    void move(uint64_t Delta) {
+      assert(Delta < Length);
+      Offset += Delta;
+      Length -= Delta;
+    }
+    /// Convenience accessor for elements in the slice.
+    uint64_t operator[](unsigned I) const {
+      return Array==nullptr ? 0 : Array->getElementAsInteger(I + Offset);
+    }
+  };
+
+  /// Returns true if the value \p V is a pointer into a ContantDataArray.
+  /// If successfull \p Index will point to a ConstantDataArray info object
+  /// with an apropriate offset.
+  bool getConstantDataArrayInfo(const Value *V, ConstantDataArraySlice &Slice,
+                                unsigned ElementSize, uint64_t Offset = 0);
 
   /// This function computes the length of a null-terminated C string pointed to
   /// by V. If successful, it returns true and returns the string in Str. If
@@ -233,7 +262,7 @@ template <typename T> class ArrayRef;
 
   /// If we can compute the length of the string pointed to by the specified
   /// pointer, return 'len+1'.  If we can't, return 0.
-  uint64_t GetStringLength(const Value *V);
+  uint64_t GetStringLength(const Value *V, unsigned CharSize = 8);
 
   /// This method strips off any GEP address adjustments and pointer casts from
   /// the specified value, returning the original object being addressed. Note

Modified: vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h	Mon May 22 19:43:28 2017	(r318663)
@@ -189,7 +189,7 @@ extern cl::opt<bool> UseSegmentSetForPhy
     void pruneValue(LiveRange &LR, SlotIndex Kill,
                     SmallVectorImpl<SlotIndex> *EndPoints);
 
-    /// This function should be used. Its intend is to tell you that
+    /// This function should not be used. Its intend is to tell you that
     /// you are doing something wrong if you call pruveValue directly on a
     /// LiveInterval. Indeed, you are supposed to call pruneValue on the main
     /// LiveRange and all the LiveRange of the subranges if any.

Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineValueType.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineValueType.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineValueType.h	Mon May 22 19:43:28 2017	(r318663)
@@ -56,117 +56,119 @@ class MVT {
       FIRST_FP_VALUETYPE = f16,
       LAST_FP_VALUETYPE  = ppcf128,
 
-      v2i1           =  14,   //    2 x i1
-      v4i1           =  15,   //    4 x i1
-      v8i1           =  16,   //    8 x i1
-      v16i1          =  17,   //   16 x i1
-      v32i1          =  18,   //   32 x i1
-      v64i1          =  19,   //   64 x i1
-      v512i1         =  20,   //  512 x i1
-      v1024i1        =  21,   // 1024 x i1
-
-      v1i8           =  22,   //  1 x i8
-      v2i8           =  23,   //  2 x i8
-      v4i8           =  24,   //  4 x i8
-      v8i8           =  25,   //  8 x i8
-      v16i8          =  26,   // 16 x i8
-      v32i8          =  27,   // 32 x i8
-      v64i8          =  28,   // 64 x i8
-      v128i8         =  29,   //128 x i8
-      v256i8         =  30,   //256 x i8
-
-      v1i16          =  31,   //  1 x i16
-      v2i16          =  32,   //  2 x i16
-      v4i16          =  33,   //  4 x i16
-      v8i16          =  34,   //  8 x i16
-      v16i16         =  35,   // 16 x i16
-      v32i16         =  36,   // 32 x i16
-      v64i16         =  37,   // 64 x i16
-      v128i16        =  38,   //128 x i16
-
-      v1i32          =  39,   //  1 x i32
-      v2i32          =  40,   //  2 x i32
-      v4i32          =  41,   //  4 x i32
-      v8i32          =  42,   //  8 x i32
-      v16i32         =  43,   // 16 x i32
-      v32i32         =  44,   // 32 x i32
-      v64i32         =  45,   // 64 x i32
-
-      v1i64          =  46,   //  1 x i64
-      v2i64          =  47,   //  2 x i64
-      v4i64          =  48,   //  4 x i64
-      v8i64          =  49,   //  8 x i64
-      v16i64         =  50,   // 16 x i64
-      v32i64         =  51,   // 32 x i64
+      v1i1           =  14,   //    1 x i1
+      v2i1           =  15,   //    2 x i1
+      v4i1           =  16,   //    4 x i1
+      v8i1           =  17,   //    8 x i1
+      v16i1          =  18,   //   16 x i1
+      v32i1          =  19,   //   32 x i1
+      v64i1          =  20,   //   64 x i1
+      v512i1         =  21,   //  512 x i1
+      v1024i1        =  22,   // 1024 x i1
+
+      v1i8           =  23,   //  1 x i8
+      v2i8           =  24,   //  2 x i8
+      v4i8           =  25,   //  4 x i8
+      v8i8           =  26,   //  8 x i8
+      v16i8          =  27,   // 16 x i8
+      v32i8          =  28,   // 32 x i8
+      v64i8          =  29,   // 64 x i8
+      v128i8         =  30,   //128 x i8
+      v256i8         =  31,   //256 x i8
+
+      v1i16          =  32,   //  1 x i16
+      v2i16          =  33,   //  2 x i16
+      v4i16          =  34,   //  4 x i16
+      v8i16          =  35,   //  8 x i16
+      v16i16         =  36,   // 16 x i16
+      v32i16         =  37,   // 32 x i16
+      v64i16         =  38,   // 64 x i16
+      v128i16        =  39,   //128 x i16
+
+      v1i32          =  40,   //  1 x i32
+      v2i32          =  41,   //  2 x i32
+      v4i32          =  42,   //  4 x i32
+      v8i32          =  43,   //  8 x i32
+      v16i32         =  44,   // 16 x i32
+      v32i32         =  45,   // 32 x i32
+      v64i32         =  46,   // 64 x i32
+
+      v1i64          =  47,   //  1 x i64
+      v2i64          =  48,   //  2 x i64
+      v4i64          =  49,   //  4 x i64
+      v8i64          =  50,   //  8 x i64
+      v16i64         =  51,   // 16 x i64
+      v32i64         =  52,   // 32 x i64
 
-      v1i128         =  52,   //  1 x i128
+      v1i128         =  53,   //  1 x i128
 
       // Scalable integer types
-      nxv2i1         =  53,   // n x  2 x i1
-      nxv4i1         =  54,   // n x  4 x i1
-      nxv8i1         =  55,   // n x  8 x i1
-      nxv16i1        =  56,   // n x 16 x i1
-      nxv32i1        =  57,   // n x 32 x i1
-
-      nxv1i8         =  58,   // n x  1 x i8
-      nxv2i8         =  59,   // n x  2 x i8
-      nxv4i8         =  60,   // n x  4 x i8
-      nxv8i8         =  61,   // n x  8 x i8
-      nxv16i8        =  62,   // n x 16 x i8
-      nxv32i8        =  63,   // n x 32 x i8
-
-      nxv1i16        =  64,   // n x  1 x i16
-      nxv2i16        =  65,   // n x  2 x i16
-      nxv4i16        =  66,   // n x  4 x i16
-      nxv8i16        =  67,   // n x  8 x i16
-      nxv16i16       =  68,   // n x 16 x i16
-      nxv32i16       =  69,   // n x 32 x i16
-
-      nxv1i32        =  70,   // n x  1 x i32
-      nxv2i32        =  71,   // n x  2 x i32
-      nxv4i32        =  72,   // n x  4 x i32
-      nxv8i32        =  73,   // n x  8 x i32
-      nxv16i32       =  74,   // n x 16 x i32
-      nxv32i32       =  75,   // n x 32 x i32
-
-      nxv1i64        =  76,   // n x  1 x i64
-      nxv2i64        =  77,   // n x  2 x i64
-      nxv4i64        =  78,   // n x  4 x i64
-      nxv8i64        =  79,   // n x  8 x i64
-      nxv16i64       =  80,   // n x 16 x i64
-      nxv32i64       =  81,   // n x 32 x i64
+      nxv1i1         =  54,   // n x  1 x i1
+      nxv2i1         =  55,   // n x  2 x i1
+      nxv4i1         =  56,   // n x  4 x i1
+      nxv8i1         =  57,   // n x  8 x i1
+      nxv16i1        =  58,   // n x 16 x i1
+      nxv32i1        =  59,   // n x 32 x i1
+
+      nxv1i8         =  60,   // n x  1 x i8
+      nxv2i8         =  61,   // n x  2 x i8
+      nxv4i8         =  62,   // n x  4 x i8
+      nxv8i8         =  63,   // n x  8 x i8
+      nxv16i8        =  64,   // n x 16 x i8
+      nxv32i8        =  65,   // n x 32 x i8
+
+      nxv1i16        =  66,   // n x  1 x i16
+      nxv2i16        =  67,   // n x  2 x i16
+      nxv4i16        =  68,   // n x  4 x i16
+      nxv8i16        =  69,   // n x  8 x i16
+      nxv16i16       =  70,   // n x 16 x i16
+      nxv32i16       =  71,   // n x 32 x i16
+
+      nxv1i32        =  72,   // n x  1 x i32
+      nxv2i32        =  73,   // n x  2 x i32
+      nxv4i32        =  74,   // n x  4 x i32
+      nxv8i32        =  75,   // n x  8 x i32
+      nxv16i32       =  76,   // n x 16 x i32
+      nxv32i32       =  77,   // n x 32 x i32
+
+      nxv1i64        =  78,   // n x  1 x i64
+      nxv2i64        =  79,   // n x  2 x i64
+      nxv4i64        =  80,   // n x  4 x i64
+      nxv8i64        =  81,   // n x  8 x i64
+      nxv16i64       =  82,   // n x 16 x i64
+      nxv32i64       =  83,   // n x 32 x i64
 
-      FIRST_INTEGER_VECTOR_VALUETYPE = v2i1,
+      FIRST_INTEGER_VECTOR_VALUETYPE = v1i1,
       LAST_INTEGER_VECTOR_VALUETYPE = nxv32i64,
 
-      FIRST_INTEGER_SCALABLE_VALUETYPE = nxv2i1,
+      FIRST_INTEGER_SCALABLE_VALUETYPE = nxv1i1,
       LAST_INTEGER_SCALABLE_VALUETYPE = nxv32i64,
 
-      v2f16          =  82,   //  2 x f16
-      v4f16          =  83,   //  4 x f16
-      v8f16          =  84,   //  8 x f16
-      v1f32          =  85,   //  1 x f32
-      v2f32          =  86,   //  2 x f32
-      v4f32          =  87,   //  4 x f32
-      v8f32          =  88,   //  8 x f32
-      v16f32         =  89,   // 16 x f32
-      v1f64          =  90,   //  1 x f64
-      v2f64          =  91,   //  2 x f64
-      v4f64          =  92,   //  4 x f64
-      v8f64          =  93,   //  8 x f64
-
-      nxv2f16        =  94,   // n x  2 x f16
-      nxv4f16        =  95,   // n x  4 x f16
-      nxv8f16        =  96,   // n x  8 x f16
-      nxv1f32        =  97,   // n x  1 x f32
-      nxv2f32        =  98,   // n x  2 x f32
-      nxv4f32        =  99,   // n x  4 x f32
-      nxv8f32        = 100,   // n x  8 x f32
-      nxv16f32       = 101,   // n x 16 x f32
-      nxv1f64        = 102,   // n x  1 x f64
-      nxv2f64        = 103,   // n x  2 x f64
-      nxv4f64        = 104,   // n x  4 x f64
-      nxv8f64        = 105,   // n x  8 x f64
+      v2f16          =  84,   //  2 x f16
+      v4f16          =  85,   //  4 x f16
+      v8f16          =  86,   //  8 x f16
+      v1f32          =  87,   //  1 x f32
+      v2f32          =  88,   //  2 x f32
+      v4f32          =  89,   //  4 x f32
+      v8f32          =  90,   //  8 x f32
+      v16f32         =  91,   // 16 x f32
+      v1f64          =  92,   //  1 x f64
+      v2f64          =  93,   //  2 x f64
+      v4f64          =  94,   //  4 x f64
+      v8f64          =  95,   //  8 x f64
+
+      nxv2f16        =  96,   // n x  2 x f16
+      nxv4f16        =  97,   // n x  4 x f16
+      nxv8f16        =  98,   // n x  8 x f16
+      nxv1f32        =  99,   // n x  1 x f32
+      nxv2f32        = 100,   // n x  2 x f32
+      nxv4f32        = 101,   // n x  4 x f32
+      nxv8f32        = 102,   // n x  8 x f32
+      nxv16f32       = 103,   // n x 16 x f32
+      nxv1f64        = 104,   // n x  1 x f64
+      nxv2f64        = 105,   // n x  2 x f64
+      nxv4f64        = 106,   // n x  4 x f64
+      nxv8f64        = 107,   // n x  8 x f64
 
       FIRST_FP_VECTOR_VALUETYPE = v2f16,
       LAST_FP_VECTOR_VALUETYPE = nxv8f64,
@@ -174,21 +176,21 @@ class MVT {
       FIRST_FP_SCALABLE_VALUETYPE = nxv2f16,
       LAST_FP_SCALABLE_VALUETYPE = nxv8f64,
 
-      FIRST_VECTOR_VALUETYPE = v2i1,
+      FIRST_VECTOR_VALUETYPE = v1i1,
       LAST_VECTOR_VALUETYPE  = nxv8f64,
 
-      x86mmx         =  106,   // This is an X86 MMX value
+      x86mmx         =  108,   // This is an X86 MMX value
 
-      Glue           =  107,   // This glues nodes together during pre-RA sched
+      Glue           =  109,   // This glues nodes together during pre-RA sched
 
-      isVoid         =  108,   // This has no value
+      isVoid         =  110,   // This has no value
 
-      Untyped        =  109,   // This value takes a register, but has
+      Untyped        =  111,   // This value takes a register, but has
                                // unspecified type.  The register class
                                // will be determined by the opcode.
 
       FIRST_VALUETYPE = 1,     // This is always the beginning of the list.
-      LAST_VALUETYPE =  110,   // This always remains at the end of the list.
+      LAST_VALUETYPE =  112,   // This always remains at the end of the list.
 
       // This is the current maximum for LAST_VALUETYPE.
       // MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors
@@ -411,6 +413,7 @@ class MVT {
       switch (SimpleTy) {
       default:
         llvm_unreachable("Not a vector MVT!");
+      case v1i1:
       case v2i1:
       case v4i1:
       case v8i1:
@@ -419,6 +422,7 @@ class MVT {
       case v64i1:
       case v512i1:
       case v1024i1:
+      case nxv1i1:
       case nxv2i1:
       case nxv4i1:
       case nxv8i1:
@@ -589,6 +593,7 @@ class MVT {
       case nxv2f16:
       case nxv2f32:
       case nxv2f64: return 2;
+      case v1i1:
       case v1i8:
       case v1i16:
       case v1i32:
@@ -596,6 +601,7 @@ class MVT {
       case v1i128:
       case v1f32:
       case v1f64:
+      case nxv1i1:
       case nxv1i8:
       case nxv1i16:
       case nxv1i32:
@@ -628,7 +634,9 @@ class MVT {
                          "in codegen and has no size");
       case Metadata:
         llvm_unreachable("Value type is metadata.");
-      case i1  :  return 1;
+      case i1:
+      case v1i1:
+      case nxv1i1: return 1;
       case v2i1:
       case nxv2i1: return 2;
       case v4i1:
@@ -814,6 +822,7 @@ class MVT {
       default:
         break;
       case MVT::i1:
+        if (NumElements == 1)    return MVT::v1i1;
         if (NumElements == 2)    return MVT::v2i1;
         if (NumElements == 4)    return MVT::v4i1;
         if (NumElements == 8)    return MVT::v8i1;
@@ -891,6 +900,7 @@ class MVT {
         default:
           break;
         case MVT::i1:
+          if (NumElements == 1)  return MVT::nxv1i1;
           if (NumElements == 2)  return MVT::nxv2i1;
           if (NumElements == 4)  return MVT::nxv4i1;
           if (NumElements == 8)  return MVT::nxv8i1;

Modified: vendor/llvm/dist/include/llvm/CodeGen/Passes.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/Passes.h	Mon May 22 19:40:56 2017	(r318662)
+++ vendor/llvm/dist/include/llvm/CodeGen/Passes.h	Mon May 22 19:43:28 2017	(r318663)
@@ -33,7 +33,7 @@ class raw_ostream;
 
 /// List of target independent CodeGen pass IDs.
 namespace llvm {
-  FunctionPass *createAtomicExpandPass(const TargetMachine *TM);
+  FunctionPass *createAtomicExpandPass();
 
   /// createUnreachableBlockEliminationPass - The LLVM code generator does not
   /// work well with unreachable basic blocks (what live ranges make sense for a
@@ -66,7 +66,7 @@ namespace llvm {
 
   /// createCodeGenPreparePass - Transform the code to expose more pattern
   /// matching during instruction selection.
-  FunctionPass *createCodeGenPreparePass(const TargetMachine *TM = nullptr);
+  FunctionPass *createCodeGenPreparePass();
 
   /// createScalarizeMaskedMemIntrinPass - Replace masked load, store, gather
   /// and scatter intrinsics with scalar code when target doesn't support them.
@@ -133,10 +133,6 @@ namespace llvm {
   // instruction and update the MachineFunctionInfo with that information.
   extern char &ShrinkWrapID;
 
-  /// LiveRangeShrink pass. Move instruction close to its definition to shrink
-  /// the definition's live range.
-  extern char &LiveRangeShrinkID;
-
   /// Greedy register allocator.
   extern char &RAGreedyID;
 
@@ -177,7 +173,7 @@ namespace llvm {
   /// PrologEpilogCodeInserter - This pass inserts prolog and epilog code,
   /// and eliminates abstract frame references.
   extern char &PrologEpilogCodeInserterID;
-  MachineFunctionPass *createPrologEpilogInserterPass(const TargetMachine *TM);
+  MachineFunctionPass *createPrologEpilogInserterPass();
 
   /// ExpandPostRAPseudos - This pass expands pseudo instructions after
   /// register allocation.
@@ -305,7 +301,7 @@ namespace llvm {
 
   /// createStackProtectorPass - This pass adds stack protectors to functions.
   ///
-  FunctionPass *createStackProtectorPass(const TargetMachine *TM);
+  FunctionPass *createStackProtectorPass();
 
   /// createMachineVerifierPass - This pass verifies cenerated machine code
   /// instructions for correctness.
@@ -314,11 +310,11 @@ namespace llvm {
 
   /// createDwarfEHPass - This pass mulches exception handling code into a form
   /// adapted to code generation.  Required if using dwarf exception handling.
-  FunctionPass *createDwarfEHPass(const TargetMachine *TM);
+  FunctionPass *createDwarfEHPass();
 
   /// createWinEHPass - Prepares personality functions used by MSVC on Windows,
   /// in addition to the Itanium LSDA based personalities.
-  FunctionPass *createWinEHPass(const TargetMachine *TM);
+  FunctionPass *createWinEHPass();
 
   /// createSjLjEHPreparePass - This pass adapts exception handling code to use
   /// the GCC-style builtin setjmp/longjmp (sjlj) to handling EH control flow.
@@ -362,12 +358,12 @@ namespace llvm {
   /// InterleavedAccess Pass - This pass identifies and matches interleaved
   /// memory accesses to target specific intrinsics.
   ///
-  FunctionPass *createInterleavedAccessPass(const TargetMachine *TM);
+  FunctionPass *createInterleavedAccessPass();
 
   /// LowerEmuTLS - This pass generates __emutls_[vt].xyz variables for all
   /// TLS variables for the emulated TLS model.
   ///
-  ModulePass *createLowerEmuTLSPass(const TargetMachine *TM);
+  ModulePass *createLowerEmuTLSPass();
 
   /// This pass lowers the @llvm.load.relative intrinsic to instructions.
   /// This is unsafe to do earlier because a pass may combine the constant
@@ -384,7 +380,7 @@ namespace llvm {
 
   /// This pass splits the stack into a safe stack and an unsafe stack to
   /// protect against stack-based overflow vulnerabilities.

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list