svn commit: r321184 - in vendor/llvm/dist: . docs docs/CommandGuide include/llvm/Analysis include/llvm/CodeGen include/llvm/DebugInfo/CodeView include/llvm/DebugInfo/DWARF include/llvm/DebugInfo/PD...

Dimitry Andric dim at FreeBSD.org
Wed Jul 19 07:02:15 UTC 2017


Author: dim
Date: Wed Jul 19 07:02:10 2017
New Revision: 321184
URL: https://svnweb.freebsd.org/changeset/base/321184

Log:
  Vendor import of llvm trunk r308421:
  https://llvm.org/svn/llvm-project/llvm/trunk@308421

Added:
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/GUID.h   (contents, props changed)
  vendor/llvm/dist/include/llvm/ToolDrivers/llvm-dlltool/
  vendor/llvm/dist/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h   (contents, props changed)
  vendor/llvm/dist/lib/Fuzzer/test/FlagsTest.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZ14.td
  vendor/llvm/dist/lib/Target/X86/X86CmovConversion.cpp   (contents, props changed)
  vendor/llvm/dist/lib/Target/X86/X86ScheduleZnver1.td
  vendor/llvm/dist/lib/ToolDrivers/llvm-dlltool/
  vendor/llvm/dist/lib/ToolDrivers/llvm-dlltool/CMakeLists.txt   (contents, props changed)
  vendor/llvm/dist/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp   (contents, props changed)
  vendor/llvm/dist/lib/ToolDrivers/llvm-dlltool/LLVMBuild.txt   (contents, props changed)
  vendor/llvm/dist/lib/ToolDrivers/llvm-dlltool/Options.td
  vendor/llvm/dist/test/Bitcode/upgrade-importedentity.ll
  vendor/llvm/dist/test/Bitcode/upgrade-importedentity.ll.bc   (contents, props changed)
  vendor/llvm/dist/test/CodeGen/AArch64/GlobalISel/select-fma.mir
  vendor/llvm/dist/test/CodeGen/AArch64/aarch64_win64cc_vararg.ll
  vendor/llvm/dist/test/CodeGen/AArch64/falkor-hwpf-fix.ll
  vendor/llvm/dist/test/CodeGen/AArch64/falkor-hwpf-fix.mir
  vendor/llvm/dist/test/CodeGen/AArch64/falkor-hwpf.ll
  vendor/llvm/dist/test/CodeGen/AArch64/win64_vararg.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/annotate-kernel-features-hsa-call.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/move-to-valu-worklist.ll
  vendor/llvm/dist/test/CodeGen/BPF/select_ri.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/switch-lut-explicit-section.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/switch-lut-function-section.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/switch-lut-multiple-functions.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/switch-lut-text-section.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-load-v4i16.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-v4i16.ll
  vendor/llvm/dist/test/CodeGen/MIR/AMDGPU/fold-multiple.mir
  vendor/llvm/dist/test/CodeGen/Mips/long-calls.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/PR33671.ll
  vendor/llvm/dist/test/CodeGen/SPARC/soft-mul-div.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/branch-11.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-abs-03.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-abs-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-add-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-06.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-const-11.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-15.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-16.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-copysign-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-div-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-13.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-10.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-11.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-12.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-neg-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-round-03.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-sqrt-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-sub-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/int-add-17.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-09.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-10.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-11.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-10.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/tdc-07.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-06.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-add-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-and-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-07.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-ctpop-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-div-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-intrinsics-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-intrinsics-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-max-05.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-min-05.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-18.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-mul-03.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-mul-04.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-mul-05.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-neg-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-or-03.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-round-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-sqrt-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-sub-02.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-xor-02.ll
  vendor/llvm/dist/test/CodeGen/Thumb/litpoolremat.ll
  vendor/llvm/dist/test/CodeGen/X86/alias-static-alloca.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-rotate.ll
  vendor/llvm/dist/test/CodeGen/X86/bmi-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/bmi2-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/bswap-rotate.ll
  vendor/llvm/dist/test/CodeGen/X86/f16c-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/lea32-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/lea64-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/lzcnt-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/memcmp-minsize.ll
  vendor/llvm/dist/test/CodeGen/X86/memcmp-optsize.ll
  vendor/llvm/dist/test/CodeGen/X86/popcnt-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32282.ll
  vendor/llvm/dist/test/CodeGen/X86/pr32515.ll
  vendor/llvm/dist/test/CodeGen/X86/pr33772.ll
  vendor/llvm/dist/test/CodeGen/X86/pr33828.ll
  vendor/llvm/dist/test/CodeGen/X86/rotate_vec.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-rotate-512.ll
  vendor/llvm/dist/test/CodeGen/X86/x86-cmov-converter.ll
  vendor/llvm/dist/test/DllTool/
  vendor/llvm/dist/test/DllTool/coff-exports.def
  vendor/llvm/dist/test/DllTool/coff-weak-exports.def
  vendor/llvm/dist/test/DllTool/lit.local.cfg
  vendor/llvm/dist/test/Instrumentation/AddressSanitizer/stack-poisoning-byval-args.ll
  vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/unordered_atomic_mem_intrins.ll
  vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_32.ll
  vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/cmp-tracing-api-x86_64.ll
  vendor/llvm/dist/test/MC/AArch64/coff-relocations.s   (contents, props changed)
  vendor/llvm/dist/test/MC/AArch64/invalid-instructions-spellcheck.s   (contents, props changed)
  vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns-z14.txt   (contents, props changed)
  vendor/llvm/dist/test/MC/SystemZ/insn-bad-z14.s   (contents, props changed)
  vendor/llvm/dist/test/MC/SystemZ/insn-good-z14.s   (contents, props changed)
  vendor/llvm/dist/test/MC/SystemZ/invalid-instructions-spellcheck.s   (contents, props changed)
  vendor/llvm/dist/test/ObjectYAML/CodeView/
  vendor/llvm/dist/test/ObjectYAML/CodeView/guid.yaml
  vendor/llvm/dist/test/Other/cgscc-libcall-update.ll
  vendor/llvm/dist/test/Transforms/EarlyCSE/globalsaa-memoryssa.ll
  vendor/llvm/dist/test/Transforms/GVN/PRE/2017-06-28-pre-load-dbgloc.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/pr33686.ll
  vendor/llvm/dist/test/Transforms/IRCE/eq_ne.ll
  vendor/llvm/dist/test/Transforms/IRCE/pre_post_loops.ll
  vendor/llvm/dist/test/Transforms/Inline/AArch64/ext.ll
  vendor/llvm/dist/test/Transforms/Inline/PowerPC/
  vendor/llvm/dist/test/Transforms/Inline/PowerPC/ext.ll
  vendor/llvm/dist/test/Transforms/Inline/PowerPC/lit.local.cfg
  vendor/llvm/dist/test/Transforms/Inline/X86/ext.ll
  vendor/llvm/dist/test/Transforms/InstCombine/element-atomic-memintrins.ll
  vendor/llvm/dist/test/Transforms/InstCombine/pr33765.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/current-limitations-lcssa.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange-flow-dep-outer.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange-not-profitable.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange-output-dependencies.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange-simple-count-down.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange-simple-count-up.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/loop-interchange-optimization-remarks.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/not-interchanged-dependencies-1.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/not-interchanged-loop-nest-3.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/not-interchanged-tightly-nested.ll
  vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop-multiexit-dom-verify.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/pr30654-phiscev-sext-trunc.ll
  vendor/llvm/dist/test/tools/llvm-dwarfdump/X86/verify_debug_info.s   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-dwarfdump/X86/verify_unit_header_chain.s   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-mt/
  vendor/llvm/dist/test/tools/llvm-mt/help.test
  vendor/llvm/dist/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64   (contents, props changed)
  vendor/llvm/dist/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test
  vendor/llvm/dist/tools/llvm-mt/
  vendor/llvm/dist/tools/llvm-mt/CMakeLists.txt   (contents, props changed)
  vendor/llvm/dist/tools/llvm-mt/LLVMBuild.txt   (contents, props changed)
  vendor/llvm/dist/tools/llvm-mt/Opts.td
  vendor/llvm/dist/tools/llvm-mt/llvm-mt.cpp   (contents, props changed)
  vendor/llvm/dist/unittests/IR/CFGBuilder.cpp   (contents, props changed)
  vendor/llvm/dist/unittests/IR/CFGBuilder.h   (contents, props changed)
Deleted:
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeServerHandler.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/PDBTypeServerHandler.h
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/PDBTypeServerHandler.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerTraceState.cpp
  vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-loadv4i16.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/vec-intrinsics.ll
  vendor/llvm/dist/test/MC/Mips/mt/invalid-wrong-error.s
  vendor/llvm/dist/test/MC/Mips/mt/mftr-mttr-aliases-invalid-wrong-error.s
  vendor/llvm/dist/test/MC/Mips/mt/mftr-mttr-aliases-invalid.s
  vendor/llvm/dist/test/MC/Mips/mt/mftr-mttr-aliases.s
  vendor/llvm/dist/test/MC/Mips/mt/mftr-mttr-reserved-valid.s
  vendor/llvm/dist/test/Transforms/InstCombine/and-not-or.ll
  vendor/llvm/dist/test/Transforms/LoopInterchange/interchange.ll
  vendor/llvm/dist/unittests/DebugInfo/PDB/TypeServerHandlerTest.cpp
Modified:
  vendor/llvm/dist/RELEASE_TESTERS.TXT
  vendor/llvm/dist/docs/AliasAnalysis.rst
  vendor/llvm/dist/docs/CodingStandards.rst
  vendor/llvm/dist/docs/CommandGuide/lit.rst
  vendor/llvm/dist/include/llvm/Analysis/DominanceFrontier.h
  vendor/llvm/dist/include/llvm/Analysis/DominanceFrontierImpl.h
  vendor/llvm/dist/include/llvm/Analysis/IteratedDominanceFrontier.h
  vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h
  vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h
  vendor/llvm/dist/include/llvm/Analysis/LoopInfoImpl.h
  vendor/llvm/dist/include/llvm/Analysis/PostDominators.h
  vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
  vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
  vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
  vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineDominanceFrontier.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineDominators.h
  vendor/llvm/dist/include/llvm/CodeGen/MachinePostDominators.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/Formatters.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecord.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecord.h
  vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h
  vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/GenericError.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/Formatters.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/InfoStream.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/RawTypes.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
  vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBExtras.h
  vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
  vendor/llvm/dist/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
  vendor/llvm/dist/include/llvm/IR/CallingConv.h
  vendor/llvm/dist/include/llvm/IR/Constants.h
  vendor/llvm/dist/include/llvm/IR/DIBuilder.h
  vendor/llvm/dist/include/llvm/IR/DebugInfoMetadata.h
  vendor/llvm/dist/include/llvm/IR/Dominators.h
  vendor/llvm/dist/include/llvm/IR/IntrinsicsHexagon.td
  vendor/llvm/dist/include/llvm/IR/IntrinsicsSystemZ.td
  vendor/llvm/dist/include/llvm/MC/LaneBitmask.h
  vendor/llvm/dist/include/llvm/MC/MCFixup.h
  vendor/llvm/dist/include/llvm/MC/MCInstrDesc.h
  vendor/llvm/dist/include/llvm/Object/COFFImportFile.h
  vendor/llvm/dist/include/llvm/Object/COFFModuleDefinition.h
  vendor/llvm/dist/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
  vendor/llvm/dist/include/llvm/Support/AArch64TargetParser.def
  vendor/llvm/dist/include/llvm/Support/BinaryItemStream.h
  vendor/llvm/dist/include/llvm/Support/Format.h
  vendor/llvm/dist/include/llvm/Support/GenericDomTree.h
  vendor/llvm/dist/include/llvm/Support/GenericDomTreeConstruction.h
  vendor/llvm/dist/include/llvm/Support/TargetParser.h
  vendor/llvm/dist/include/llvm/Support/YAMLTraits.h
  vendor/llvm/dist/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
  vendor/llvm/dist/include/llvm/Target/TargetLowering.h
  vendor/llvm/dist/lib/Analysis/CGSCCPassManager.cpp
  vendor/llvm/dist/lib/Analysis/DominanceFrontier.cpp
  vendor/llvm/dist/lib/Analysis/InstCount.cpp
  vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
  vendor/llvm/dist/lib/Analysis/IteratedDominanceFrontier.cpp
  vendor/llvm/dist/lib/Analysis/LazyCallGraph.cpp
  vendor/llvm/dist/lib/Analysis/LoopInfo.cpp
  vendor/llvm/dist/lib/Analysis/MemorySSA.cpp
  vendor/llvm/dist/lib/Analysis/PostDominators.cpp
  vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
  vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp
  vendor/llvm/dist/lib/AsmParser/LLLexer.cpp
  vendor/llvm/dist/lib/AsmParser/LLParser.cpp
  vendor/llvm/dist/lib/AsmParser/LLToken.h
  vendor/llvm/dist/lib/Bitcode/Reader/MetadataLoader.cpp
  vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
  vendor/llvm/dist/lib/CodeGen/CodeGenPrepare.cpp
  vendor/llvm/dist/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
  vendor/llvm/dist/lib/CodeGen/MachineCombiner.cpp
  vendor/llvm/dist/lib/CodeGen/MachineDominanceFrontier.cpp
  vendor/llvm/dist/lib/CodeGen/MachineDominators.cpp
  vendor/llvm/dist/lib/CodeGen/MachinePostDominators.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  vendor/llvm/dist/lib/CodeGen/XRayInstrumentation.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/CodeViewRecordIO.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/Formatters.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/SymbolDumper.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
  vendor/llvm/dist/lib/DebugInfo/CodeView/TypeStreamMerger.cpp
  vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFVerifier.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/CMakeLists.txt
  vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIARawSymbol.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/GenericError.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/InfoStream.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/InfoStreamBuilder.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/NativeExeSymbol.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/NativeRawSymbol.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/TpiHashing.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/Native/TpiStream.cpp
  vendor/llvm/dist/lib/DebugInfo/PDB/PDBExtras.cpp
  vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOARM.h
  vendor/llvm/dist/lib/Fuzzer/CMakeLists.txt
  vendor/llvm/dist/lib/Fuzzer/FuzzerCorpus.h
  vendor/llvm/dist/lib/Fuzzer/FuzzerDriver.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerFlags.def
  vendor/llvm/dist/lib/Fuzzer/FuzzerInternal.h
  vendor/llvm/dist/lib/Fuzzer/FuzzerLoop.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerMerge.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerMutate.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerMutate.h
  vendor/llvm/dist/lib/Fuzzer/FuzzerTracePC.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerTracePC.h
  vendor/llvm/dist/lib/Fuzzer/FuzzerUtil.cpp
  vendor/llvm/dist/lib/Fuzzer/FuzzerUtil.h
  vendor/llvm/dist/lib/Fuzzer/afl/afl_driver.cpp
  vendor/llvm/dist/lib/Fuzzer/test/CMakeLists.txt
  vendor/llvm/dist/lib/Fuzzer/test/FuzzerUnittest.cpp
  vendor/llvm/dist/lib/Fuzzer/test/fuzzer-flags.test
  vendor/llvm/dist/lib/Fuzzer/test/fuzzer-traces-hooks.test
  vendor/llvm/dist/lib/Fuzzer/test/reduce_inputs.test
  vendor/llvm/dist/lib/IR/AsmWriter.cpp
  vendor/llvm/dist/lib/IR/Constants.cpp
  vendor/llvm/dist/lib/IR/Core.cpp
  vendor/llvm/dist/lib/IR/DIBuilder.cpp
  vendor/llvm/dist/lib/IR/DebugInfoMetadata.cpp
  vendor/llvm/dist/lib/IR/Dominators.cpp
  vendor/llvm/dist/lib/IR/LLVMContextImpl.h
  vendor/llvm/dist/lib/IR/LegacyPassManager.cpp
  vendor/llvm/dist/lib/IR/Module.cpp
  vendor/llvm/dist/lib/Object/ArchiveWriter.cpp
  vendor/llvm/dist/lib/Object/COFFImportFile.cpp
  vendor/llvm/dist/lib/Object/COFFModuleDefinition.cpp
  vendor/llvm/dist/lib/Object/COFFObjectFile.cpp
  vendor/llvm/dist/lib/ObjectYAML/CodeViewYAMLTypes.cpp
  vendor/llvm/dist/lib/Option/OptTable.cpp
  vendor/llvm/dist/lib/Support/ErrorHandling.cpp
  vendor/llvm/dist/lib/Support/Host.cpp
  vendor/llvm/dist/lib/Support/Path.cpp
  vendor/llvm/dist/lib/Support/TargetParser.cpp
  vendor/llvm/dist/lib/Support/YAMLTraits.cpp
  vendor/llvm/dist/lib/Support/raw_ostream.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64.h
  vendor/llvm/dist/lib/Target/AArch64/AArch64.td
  vendor/llvm/dist/lib/Target/AArch64/AArch64CallingConvention.td
  vendor/llvm/dist/lib/Target/AArch64/AArch64DeadRegisterDefinitionsPass.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64FastISel.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64FrameLowering.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.h
  vendor/llvm/dist/lib/Target/AArch64/AArch64InstrAtomics.td
  vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.h
  vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td
  vendor/llvm/dist/lib/Target/AArch64/AArch64LegalizerInfo.cpp
  vendor/llvm/dist/lib/Target/AArch64/AArch64RegisterInfo.cpp
  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/AArch64/AArch64TargetMachine.h
  vendor/llvm/dist/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  vendor/llvm/dist/lib/Target/AArch64/CMakeLists.txt
  vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp
  vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPU.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUSubtarget.h
  vendor/llvm/dist/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIFoldOperands.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIFrameLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.td
  vendor/llvm/dist/lib/Target/AMDGPU/SIInstructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIMachineFunctionInfo.h
  vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.td
  vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
  vendor/llvm/dist/lib/Target/AMDGPU/VOP2Instructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/VOP3Instructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/VOP3PInstructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/VOPCInstructions.td
  vendor/llvm/dist/lib/Target/AMDGPU/VOPInstructions.td
  vendor/llvm/dist/lib/Target/ARM/ARM.td
  vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMInstructionSelector.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMLegalizerInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMMCInstLower.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMRegisterBankInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h
  vendor/llvm/dist/lib/Target/BPF/BPFISelLowering.cpp
  vendor/llvm/dist/lib/Target/BPF/BPFInstrInfo.td
  vendor/llvm/dist/lib/Target/Hexagon/HexagonBitSimplify.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonDepInstrInfo.td
  vendor/llvm/dist/lib/Target/Hexagon/HexagonEarlyIfConv.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonExpandCondsets.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonFrameLowering.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonGenInsert.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonGenPredicate.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.h
  vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsics.td
  vendor/llvm/dist/lib/Target/Hexagon/HexagonOptAddrMode.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonPatterns.td
  vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
  vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetObjectFile.h
  vendor/llvm/dist/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
  vendor/llvm/dist/lib/Target/Mips/Mips.td
  vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsInstrFPU.td
  vendor/llvm/dist/lib/Target/Mips/MipsMTInstrFormats.td
  vendor/llvm/dist/lib/Target/Mips/MipsMTInstrInfo.td
  vendor/llvm/dist/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsSEISelDAGToDAG.h
  vendor/llvm/dist/lib/Target/Mips/MipsSEISelLowering.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsSchedule.td
  vendor/llvm/dist/lib/Target/Mips/MipsSubtarget.h
  vendor/llvm/dist/lib/Target/Mips/MipsTargetStreamer.h
  vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrVSX.td
  vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h
  vendor/llvm/dist/lib/Target/Sparc/Sparc.td
  vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp
  vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.td
  vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.cpp
  vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.h
  vendor/llvm/dist/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
  vendor/llvm/dist/lib/Target/SystemZ/LLVMBuild.txt
  vendor/llvm/dist/lib/Target/SystemZ/SystemZFeatures.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.h
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFP.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFormats.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrSystem.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrVector.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZOperators.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZPatterns.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZProcessors.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZSchedule.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZ196.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZScheduleZEC12.td
  vendor/llvm/dist/lib/Target/SystemZ/SystemZShortenInst.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.h
  vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.h
  vendor/llvm/dist/lib/Target/X86/CMakeLists.txt
  vendor/llvm/dist/lib/Target/X86/X86.h
  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/X86FixupBWInsts.cpp
  vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
  vendor/llvm/dist/lib/Target/X86/X86InstrAVX512.td
  vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/X86/X86Schedule.td
  vendor/llvm/dist/lib/Target/X86/X86ScheduleBtVer2.td
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
  vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
  vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h
  vendor/llvm/dist/lib/ToolDrivers/CMakeLists.txt
  vendor/llvm/dist/lib/ToolDrivers/LLVMBuild.txt
  vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp
  vendor/llvm/dist/lib/Transforms/IPO/Inliner.cpp
  vendor/llvm/dist/lib/Transforms/IPO/SampleProfile.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
  vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp
  vendor/llvm/dist/lib/Transforms/Instrumentation/AddressSanitizer.cpp
  vendor/llvm/dist/lib/Transforms/Instrumentation/MemorySanitizer.cpp
  vendor/llvm/dist/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/EarlyCSE.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopInterchange.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/TailRecursionElimination.cpp
  vendor/llvm/dist/lib/Transforms/Utils/LoopUnrollRuntime.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/SystemZ/fp-arith.ll
  vendor/llvm/dist/test/Assembler/diimportedentity.ll
  vendor/llvm/dist/test/Bitcode/DIGlobalVariableExpression.ll
  vendor/llvm/dist/test/Bitcode/compatibility-3.6.ll
  vendor/llvm/dist/test/Bitcode/compatibility-3.7.ll
  vendor/llvm/dist/test/Bitcode/compatibility-3.8.ll
  vendor/llvm/dist/test/Bitcode/compatibility-3.9.ll
  vendor/llvm/dist/test/Bitcode/compatibility-4.0.ll
  vendor/llvm/dist/test/Bitcode/compatibility.ll
  vendor/llvm/dist/test/CMakeLists.txt
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-abi-varargs.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-abi_align.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-alloca-frame-pointer-offset.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-extern-weak.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-inline-asm.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-platform-reg.ll
  vendor/llvm/dist/test/CodeGen/AArch64/arm64-vext.ll
  vendor/llvm/dist/test/CodeGen/AArch64/atomic-ops-lse.ll
  vendor/llvm/dist/test/CodeGen/AArch64/dag-combine-invaraints.ll
  vendor/llvm/dist/test/CodeGen/AArch64/extern-weak.ll
  vendor/llvm/dist/test/CodeGen/AArch64/preferred-function-alignment.ll
  vendor/llvm/dist/test/CodeGen/AArch64/swifterror.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/attr-amdgpu-flat-work-group-size.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/attr-amdgpu-waves-per-eu.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/fcanonicalize-elimination.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/function-args.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/hsa.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.kernarg.segment.ptr.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.ps.live.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.s.waitcnt.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/mubuf-offset-private.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/parallelandifcollapse.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/parallelorifcollapse.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/private-access-no-objects.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/rename-independent-subregs-mac-operands.mir
  vendor/llvm/dist/test/CodeGen/AMDGPU/scratch-simple.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/sdwa-peephole-instr.mir
  vendor/llvm/dist/test/CodeGen/AMDGPU/sdwa-vop2-64bit.mir
  vendor/llvm/dist/test/CodeGen/AMDGPU/trap.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/vccz-corrupt-bug-workaround.mir
  vendor/llvm/dist/test/CodeGen/AMDGPU/vgpr-spill-emergency-stack-slot-compute.ll
  vendor/llvm/dist/test/CodeGen/AMDGPU/vgpr-spill-emergency-stack-slot.ll
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-isel-divmod.ll
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-isel.ll
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-legalize-divmod.mir
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-legalizer.mir
  vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-regbankselect.mir
  vendor/llvm/dist/test/CodeGen/ARM/atomic-op.ll
  vendor/llvm/dist/test/CodeGen/AVR/branch-relaxation.ll
  vendor/llvm/dist/test/CodeGen/BPF/setcc.ll
  vendor/llvm/dist/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
  vendor/llvm/dist/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll
  vendor/llvm/dist/test/CodeGen/Generic/print-mul-exp.ll
  vendor/llvm/dist/test/CodeGen/Generic/print-mul.ll
  vendor/llvm/dist/test/CodeGen/Generic/print-shift.ll
  vendor/llvm/dist/test/CodeGen/Generic/v-split.ll
  vendor/llvm/dist/test/CodeGen/Generic/vector-redux.ll
  vendor/llvm/dist/test/CodeGen/Generic/vector.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/system_user.ll
  vendor/llvm/dist/test/CodeGen/Hexagon/v6vec-vprint.ll
  vendor/llvm/dist/test/CodeGen/MIR/AArch64/target-memoperands.mir
  vendor/llvm/dist/test/CodeGen/MSP430/vararg.ll
  vendor/llvm/dist/test/CodeGen/Mips/2008-06-05-Carry.ll
  vendor/llvm/dist/test/CodeGen/Mips/dins.ll
  vendor/llvm/dist/test/CodeGen/Mips/dsp-patterns.ll
  vendor/llvm/dist/test/CodeGen/Mips/llcarry.ll
  vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/add.ll
  vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/sub.ll
  vendor/llvm/dist/test/CodeGen/Mips/madd-msub.ll
  vendor/llvm/dist/test/CodeGen/Mips/msa/f16-llvm-ir.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/build-vector-tests.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-i128-abi.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/swaps-le-6.ll
  vendor/llvm/dist/test/CodeGen/PowerPC/vsx-p9.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-add-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-div-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-06.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-08.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-sqrt-01.ll
  vendor/llvm/dist/test/CodeGen/SystemZ/fp-sub-01.ll
  vendor/llvm/dist/test/CodeGen/Thumb/select.ll
  vendor/llvm/dist/test/CodeGen/WebAssembly/indirect-import.ll
  vendor/llvm/dist/test/CodeGen/WebAssembly/userstack.ll
  vendor/llvm/dist/test/CodeGen/X86/2008-01-08-SchedulerCrash.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll
  vendor/llvm/dist/test/CodeGen/X86/2011-10-19-widen_vselect.ll
  vendor/llvm/dist/test/CodeGen/X86/DynamicCalleeSavedRegisters.ll
  vendor/llvm/dist/test/CodeGen/X86/atomic-minmax-i6432.ll
  vendor/llvm/dist/test/CodeGen/X86/atomic128.ll
  vendor/llvm/dist/test/CodeGen/X86/avx-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/avx2-arith.ll
  vendor/llvm/dist/test/CodeGen/X86/avx2-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/avx2-vector-shifts.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-cvt.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-mask-op.ll
  vendor/llvm/dist/test/CodeGen/X86/avx512-shift.ll
  vendor/llvm/dist/test/CodeGen/X86/bool-ext-inc.ll
  vendor/llvm/dist/test/CodeGen/X86/clobber-fi0.ll
  vendor/llvm/dist/test/CodeGen/X86/combine-rotates.ll
  vendor/llvm/dist/test/CodeGen/X86/combine-shl.ll
  vendor/llvm/dist/test/CodeGen/X86/combine-srl.ll
  vendor/llvm/dist/test/CodeGen/X86/combine-udiv.ll
  vendor/llvm/dist/test/CodeGen/X86/combine-urem.ll
  vendor/llvm/dist/test/CodeGen/X86/fast-isel-x86-64.ll
  vendor/llvm/dist/test/CodeGen/X86/hipe-cc.ll
  vendor/llvm/dist/test/CodeGen/X86/hipe-cc64.ll
  vendor/llvm/dist/test/CodeGen/X86/legalize-shift-64.ll
  vendor/llvm/dist/test/CodeGen/X86/machine-outliner-debuginfo.ll
  vendor/llvm/dist/test/CodeGen/X86/machine-outliner.ll
  vendor/llvm/dist/test/CodeGen/X86/memcmp.ll
  vendor/llvm/dist/test/CodeGen/X86/pmul.ll
  vendor/llvm/dist/test/CodeGen/X86/regparm.ll
  vendor/llvm/dist/test/CodeGen/X86/sibcall-win64.ll
  vendor/llvm/dist/test/CodeGen/X86/sse-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/sse2-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/sse3-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/sse41-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/sse42-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/sse4a-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/ssse3-schedule.ll
  vendor/llvm/dist/test/CodeGen/X86/statepoint-invoke.ll
  vendor/llvm/dist/test/CodeGen/X86/statepoint-stack-usage.ll
  vendor/llvm/dist/test/CodeGen/X86/statepoint-vector.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_cmp_uint-128.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-idiv-sdiv-128.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-idiv-sdiv-256.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-idiv-udiv-128.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-idiv-udiv-256.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-idiv.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-rotate-128.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-rotate-256.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-shift-ashr-256.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-tzcnt-128.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-tzcnt-256.ll
  vendor/llvm/dist/test/CodeGen/X86/vector-tzcnt-512.ll
  vendor/llvm/dist/test/CodeGen/X86/vselect-avx.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-2.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-4.ll
  vendor/llvm/dist/test/CodeGen/X86/win64-nosse-csrs.ll
  vendor/llvm/dist/test/CodeGen/X86/win64_nonvol.ll
  vendor/llvm/dist/test/CodeGen/X86/win64_params.ll
  vendor/llvm/dist/test/CodeGen/X86/win_chkstk.ll
  vendor/llvm/dist/test/CodeGen/X86/win_coreclr_chkstk.ll
  vendor/llvm/dist/test/CodeGen/X86/x86-64-ms_abi-vararg.ll
  vendor/llvm/dist/test/CodeGen/XCore/varargs.ll
  vendor/llvm/dist/test/DebugInfo/Generic/namespace.ll
  vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-headers.test
  vendor/llvm/dist/test/DebugInfo/X86/DIModule.ll
  vendor/llvm/dist/test/DebugInfo/X86/DIModuleContext.ll
  vendor/llvm/dist/test/DebugInfo/X86/fission-inline.ll
  vendor/llvm/dist/test/DebugInfo/X86/gnu-public-names.ll
  vendor/llvm/dist/test/DebugInfo/X86/lexical-block-file-inline.ll
  vendor/llvm/dist/test/DebugInfo/X86/pr19307.ll
  vendor/llvm/dist/test/FileCheck/regex-scope.txt
  vendor/llvm/dist/test/Instrumentation/AddressSanitizer/basic.ll
  vendor/llvm/dist/test/Instrumentation/EfficiencySanitizer/working_set_basic.ll
  vendor/llvm/dist/test/Instrumentation/EfficiencySanitizer/working_set_slow.ll
  vendor/llvm/dist/test/Instrumentation/MemorySanitizer/msan_basic.ll
  vendor/llvm/dist/test/Linker/pr26037.ll
  vendor/llvm/dist/test/MC/AMDGPU/gfx9_asm_all.s
  vendor/llvm/dist/test/MC/AMDGPU/vop3-errs.s
  vendor/llvm/dist/test/MC/ARM/virtexts-thumb.s
  vendor/llvm/dist/test/MC/Disassembler/AMDGPU/gfx9_dasm_all.txt
  vendor/llvm/dist/test/MC/Disassembler/Mips/mt/valid-r2-el.txt
  vendor/llvm/dist/test/MC/Disassembler/Mips/mt/valid-r2.txt
  vendor/llvm/dist/test/MC/Mips/mt/invalid.s
  vendor/llvm/dist/test/MC/Mips/mt/valid.s
  vendor/llvm/dist/test/MC/SystemZ/insn-bad-z13.s
  vendor/llvm/dist/test/MC/X86/pr22028.s
  vendor/llvm/dist/test/Object/no-section-table.test
  vendor/llvm/dist/test/Object/readobj-shared-object.test
  vendor/llvm/dist/test/Other/new-pass-manager.ll
  vendor/llvm/dist/test/ThinLTO/X86/debuginfo-cu-import.ll
  vendor/llvm/dist/test/Transforms/CodeGenPrepare/X86/memcmp.ll
  vendor/llvm/dist/test/Transforms/CodeGenPrepare/X86/sink-addrmode.ll
  vendor/llvm/dist/test/Transforms/GVN/PRE/phi-translate.ll
  vendor/llvm/dist/test/Transforms/InstCombine/2017-07-07-UMul-ZExt.ll
  vendor/llvm/dist/test/Transforms/InstCombine/and.ll
  vendor/llvm/dist/test/Transforms/InstCombine/and2.ll
  vendor/llvm/dist/test/Transforms/InstCombine/icmp-logical.ll
  vendor/llvm/dist/test/Transforms/InstCombine/or-xor.ll
  vendor/llvm/dist/test/Transforms/InstCombine/or.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/select.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/debugloc.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/first-order-recurrence.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/float-induction.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/if-conversion-nest.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/induction-step.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/induction.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/interleaved-accesses-pred-stores.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/interleaved-accesses.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/iv_outside_user.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/miniters.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check-readonly.ll
  vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check.ll
  vendor/llvm/dist/test/tools/llvm-cov/showTabsHTML.cpp
  vendor/llvm/dist/test/tools/llvm-readobj/Inputs/dynamic-table-so.x86
  vendor/llvm/dist/test/tools/llvm-readobj/Inputs/dynamic-table.c
  vendor/llvm/dist/test/tools/llvm-readobj/dynamic.test
  vendor/llvm/dist/test/tools/llvm-readobj/gnu-sections.test
  vendor/llvm/dist/tools/llvm-ar/CMakeLists.txt
  vendor/llvm/dist/tools/llvm-ar/llvm-ar.cpp
  vendor/llvm/dist/tools/llvm-objdump/llvm-objdump.cpp
  vendor/llvm/dist/tools/llvm-pdbutil/DumpOutputStyle.cpp
  vendor/llvm/dist/tools/llvm-pdbutil/MinimalSymbolDumper.cpp
  vendor/llvm/dist/tools/llvm-pdbutil/MinimalTypeDumper.cpp
  vendor/llvm/dist/tools/llvm-pdbutil/MinimalTypeDumper.h
  vendor/llvm/dist/tools/llvm-pdbutil/PdbYaml.cpp
  vendor/llvm/dist/tools/llvm-pdbutil/PdbYaml.h
  vendor/llvm/dist/tools/llvm-pdbutil/llvm-pdbutil.cpp
  vendor/llvm/dist/tools/llvm-readobj/CMakeLists.txt
  vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp
  vendor/llvm/dist/tools/llvm-readobj/ELFDumper.cpp
  vendor/llvm/dist/tools/llvm-readobj/llvm-readobj.cpp
  vendor/llvm/dist/tools/opt-viewer/opt-diff.py
  vendor/llvm/dist/tools/opt-viewer/opt-stats.py
  vendor/llvm/dist/tools/opt-viewer/opt-viewer.py
  vendor/llvm/dist/tools/opt-viewer/optpmap.py
  vendor/llvm/dist/tools/opt-viewer/optrecord.py
  vendor/llvm/dist/unittests/Analysis/CGSCCPassManagerTest.cpp
  vendor/llvm/dist/unittests/Analysis/LazyCallGraphTest.cpp
  vendor/llvm/dist/unittests/DebugInfo/CodeView/RandomAccessVisitorTest.cpp
  vendor/llvm/dist/unittests/DebugInfo/PDB/CMakeLists.txt
  vendor/llvm/dist/unittests/IR/CMakeLists.txt
  vendor/llvm/dist/unittests/IR/DominatorTreeTest.cpp
  vendor/llvm/dist/unittests/IR/IRBuilderTest.cpp
  vendor/llvm/dist/unittests/IR/MetadataTest.cpp
  vendor/llvm/dist/unittests/Support/TargetParserTest.cpp
  vendor/llvm/dist/unittests/Support/YAMLIOTest.cpp
  vendor/llvm/dist/unittests/Support/raw_ostream_test.cpp
  vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp
  vendor/llvm/dist/utils/lit/lit/LitConfig.py
  vendor/llvm/dist/utils/lit/lit/TestRunner.py
  vendor/llvm/dist/utils/lit/lit/main.py
  vendor/llvm/dist/utils/vim/syntax/llvm.vim

Modified: vendor/llvm/dist/RELEASE_TESTERS.TXT
==============================================================================
--- vendor/llvm/dist/RELEASE_TESTERS.TXT	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/RELEASE_TESTERS.TXT	Wed Jul 19 07:02:10 2017	(r321184)
@@ -41,14 +41,9 @@ E: hans at chromium.org
 T: x86
 O: Windows
 
-N: Renato Golin
-E: renato.golin at linaro.org
-T: ARM
-O: Linux
-
 N: Diana Picus
 E: diana.picus at linaro.org
-T: AArch64
+T: ARM, AArch64
 O: Linux
 
 N: Simon Dardis

Modified: vendor/llvm/dist/docs/AliasAnalysis.rst
==============================================================================
--- vendor/llvm/dist/docs/AliasAnalysis.rst	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/docs/AliasAnalysis.rst	Wed Jul 19 07:02:10 2017	(r321184)
@@ -132,7 +132,8 @@ The ``MayAlias`` response is used whenever the two poi
 same object.
 
 The ``PartialAlias`` response is used when the two memory objects are known to
-be overlapping in some way, but do not start at the same address.
+be overlapping in some way, regardless whether they start at the same address
+or not.
 
 The ``MustAlias`` response may only be returned if the two memory objects are
 guaranteed to always start at exactly the same location. A ``MustAlias``

Modified: vendor/llvm/dist/docs/CodingStandards.rst
==============================================================================
--- vendor/llvm/dist/docs/CodingStandards.rst	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/docs/CodingStandards.rst	Wed Jul 19 07:02:10 2017	(r321184)
@@ -34,10 +34,10 @@ There are some conventions that are not uniformly foll
 (e.g. the naming convention).  This is because they are relatively new, and a
 lot of code was written before they were put in place.  Our long term goal is
 for the entire codebase to follow the convention, but we explicitly *do not*
-want patches that do large-scale reformating of existing code.  On the other
+want patches that do large-scale reformatting of existing code.  On the other
 hand, it is reasonable to rename the methods of a class if you're about to
-change it in some other way.  Just do the reformating as a separate commit from
-the functionality change.
+change it in some other way.  Just do the reformatting as a separate commit
+from the functionality change.
   
 The ultimate goal of these guidelines is to increase the readability and
 maintainability of our common source base. If you have suggestions for topics to

Modified: vendor/llvm/dist/docs/CommandGuide/lit.rst
==============================================================================
--- vendor/llvm/dist/docs/CommandGuide/lit.rst	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/docs/CommandGuide/lit.rst	Wed Jul 19 07:02:10 2017	(r321184)
@@ -80,6 +80,13 @@ OUTPUT OPTIONS
  Show more information on test failures, for example the entire test output
  instead of just the test result.
 
+.. option:: -vv, --echo-all-commands
+
+ Echo all commands to stdout, as they are being executed.
+ This can be valuable for debugging test failures, as the last echoed command
+ will be the one which has failed.
+ This option implies ``--verbose``.
+
 .. option:: -a, --show-all
 
  Show more information about all tests, for example the entire test

Modified: vendor/llvm/dist/include/llvm/Analysis/DominanceFrontier.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/DominanceFrontier.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/DominanceFrontier.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -29,9 +29,9 @@ namespace llvm {
 /// DominanceFrontierBase - Common base class for computing forward and inverse
 /// dominance frontiers for a function.
 ///
-template <class BlockT>
+template <class BlockT, bool IsPostDom>
 class DominanceFrontierBase {
-public:
+ public:
   typedef std::set<BlockT *> DomSetType;                // Dom set for a bb
   typedef std::map<BlockT *, DomSetType> DomSetMapType; // Dom set map
 
@@ -40,10 +40,10 @@ class DominanceFrontierBase { (protected)
 
   DomSetMapType Frontiers;
   std::vector<BlockT *> Roots;
-  const bool IsPostDominators;
+  static constexpr bool IsPostDominators = IsPostDom;
 
-public:
-  DominanceFrontierBase(bool isPostDom) : IsPostDominators(isPostDom) {}
+ public:
+  DominanceFrontierBase() {}
 
   /// getRoots - Return the root blocks of the current CFG.  This may include
   /// multiple blocks if we are computing post dominators.  For forward
@@ -96,7 +96,7 @@ class DominanceFrontierBase { (protected)
 
   /// compare - Return true if the other dominance frontier base matches
   /// this dominance frontier base. Otherwise return false.
-  bool compare(DominanceFrontierBase<BlockT> &Other) const;
+  bool compare(DominanceFrontierBase &Other) const;
 
   /// print - Convert to human readable form
   ///
@@ -113,22 +113,21 @@ class DominanceFrontierBase { (protected)
 /// used to compute a forward dominator frontiers.
 ///
 template <class BlockT>
-class ForwardDominanceFrontierBase : public DominanceFrontierBase<BlockT> {
-private:
+class ForwardDominanceFrontierBase
+    : public DominanceFrontierBase<BlockT, false> {
+ private:
   typedef GraphTraits<BlockT *> BlockTraits;
 
 public:
-  typedef DominatorTreeBase<BlockT> DomTreeT;
-  typedef DomTreeNodeBase<BlockT> DomTreeNodeT;
-  typedef typename DominanceFrontierBase<BlockT>::DomSetType DomSetType;
+ typedef DomTreeBase<BlockT> DomTreeT;
+ typedef DomTreeNodeBase<BlockT> DomTreeNodeT;
+ typedef typename DominanceFrontierBase<BlockT, false>::DomSetType DomSetType;
 
-  ForwardDominanceFrontierBase() : DominanceFrontierBase<BlockT>(false) {}
-
-  void analyze(DomTreeT &DT) {
-    this->Roots = DT.getRoots();
-    assert(this->Roots.size() == 1 &&
-           "Only one entry block for forward domfronts!");
-    calculate(DT, DT[this->Roots[0]]);
+ void analyze(DomTreeT &DT) {
+   this->Roots = DT.getRoots();
+   assert(this->Roots.size() == 1 &&
+          "Only one entry block for forward domfronts!");
+   calculate(DT, DT[this->Roots[0]]);
   }
 
   const DomSetType &calculate(const DomTreeT &DT, const DomTreeNodeT *Node);
@@ -136,15 +135,16 @@ class ForwardDominanceFrontierBase : public DominanceF
 
 class DominanceFrontier : public ForwardDominanceFrontierBase<BasicBlock> {
 public:
-  typedef DominatorTreeBase<BasicBlock> DomTreeT;
-  typedef DomTreeNodeBase<BasicBlock> DomTreeNodeT;
-  typedef DominanceFrontierBase<BasicBlock>::DomSetType DomSetType;
-  typedef DominanceFrontierBase<BasicBlock>::iterator iterator;
-  typedef DominanceFrontierBase<BasicBlock>::const_iterator const_iterator;
+ typedef DomTreeBase<BasicBlock> DomTreeT;
+ typedef DomTreeNodeBase<BasicBlock> DomTreeNodeT;
+ typedef DominanceFrontierBase<BasicBlock, false>::DomSetType DomSetType;
+ typedef DominanceFrontierBase<BasicBlock, false>::iterator iterator;
+ typedef DominanceFrontierBase<BasicBlock, false>::const_iterator
+     const_iterator;
 
-  /// Handle invalidation explicitly.
-  bool invalidate(Function &F, const PreservedAnalyses &PA,
-                  FunctionAnalysisManager::Invalidator &);
+ /// Handle invalidation explicitly.
+ bool invalidate(Function &F, const PreservedAnalyses &PA,
+                 FunctionAnalysisManager::Invalidator &);
 };
 
 class DominanceFrontierWrapperPass : public FunctionPass {
@@ -168,7 +168,8 @@ class DominanceFrontierWrapperPass : public FunctionPa
   void dump() const;
 };
 
-extern template class DominanceFrontierBase<BasicBlock>;
+extern template class DominanceFrontierBase<BasicBlock, false>;
+extern template class DominanceFrontierBase<BasicBlock, true>;
 extern template class ForwardDominanceFrontierBase<BasicBlock>;
 
 /// \brief Analysis pass which computes a \c DominanceFrontier.

Modified: vendor/llvm/dist/include/llvm/Analysis/DominanceFrontierImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/DominanceFrontierImpl.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/DominanceFrontierImpl.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -39,33 +39,33 @@ class DFCalculateWorkObject { (public)
   const DomTreeNodeT *parentNode;
 };
 
-template <class BlockT>
-void DominanceFrontierBase<BlockT>::removeBlock(BlockT *BB) {
+template <class BlockT, bool IsPostDom>
+void DominanceFrontierBase<BlockT, IsPostDom>::removeBlock(BlockT *BB) {
   assert(find(BB) != end() && "Block is not in DominanceFrontier!");
   for (iterator I = begin(), E = end(); I != E; ++I)
     I->second.erase(BB);
   Frontiers.erase(BB);
 }
 
-template <class BlockT>
-void DominanceFrontierBase<BlockT>::addToFrontier(iterator I,
-                                                  BlockT *Node) {
+template <class BlockT, bool IsPostDom>
+void DominanceFrontierBase<BlockT, IsPostDom>::addToFrontier(iterator I,
+                                                             BlockT *Node) {
   assert(I != end() && "BB is not in DominanceFrontier!");
   assert(I->second.count(Node) && "Node is not in DominanceFrontier of BB");
   I->second.erase(Node);
 }
 
-template <class BlockT>
-void DominanceFrontierBase<BlockT>::removeFromFrontier(iterator I,
-                                                       BlockT *Node) {
+template <class BlockT, bool IsPostDom>
+void DominanceFrontierBase<BlockT, IsPostDom>::removeFromFrontier(
+    iterator I, BlockT *Node) {
   assert(I != end() && "BB is not in DominanceFrontier!");
   assert(I->second.count(Node) && "Node is not in DominanceFrontier of BB");
   I->second.erase(Node);
 }
 
-template <class BlockT>
-bool DominanceFrontierBase<BlockT>::compareDomSet(DomSetType &DS1,
-                                                  const DomSetType &DS2) const {
+template <class BlockT, bool IsPostDom>
+bool DominanceFrontierBase<BlockT, IsPostDom>::compareDomSet(
+    DomSetType &DS1, const DomSetType &DS2) const {
   std::set<BlockT *> tmpSet;
   for (BlockT *BB : DS2)
     tmpSet.insert(BB);
@@ -88,9 +88,9 @@ bool DominanceFrontierBase<BlockT>::compareDomSet(DomS
   return false;
 }
 
-template <class BlockT>
-bool DominanceFrontierBase<BlockT>::compare(
-    DominanceFrontierBase<BlockT> &Other) const {
+template <class BlockT, bool IsPostDom>
+bool DominanceFrontierBase<BlockT, IsPostDom>::compare(
+    DominanceFrontierBase<BlockT, IsPostDom> &Other) const {
   DomSetMapType tmpFrontiers;
   for (typename DomSetMapType::const_iterator I = Other.begin(),
                                               E = Other.end();
@@ -118,8 +118,8 @@ bool DominanceFrontierBase<BlockT>::compare(
   return false;
 }
 
-template <class BlockT>
-void DominanceFrontierBase<BlockT>::print(raw_ostream &OS) const {
+template <class BlockT, bool IsPostDom>
+void DominanceFrontierBase<BlockT, IsPostDom>::print(raw_ostream &OS) const {
   for (const_iterator I = begin(), E = end(); I != E; ++I) {
     OS << "  DomFrontier for BB ";
     if (I->first)
@@ -142,8 +142,8 @@ void DominanceFrontierBase<BlockT>::print(raw_ostream 
 }
 
 #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-template <class BlockT>
-void DominanceFrontierBase<BlockT>::dump() const {
+template <class BlockT, bool IsPostDom>
+void DominanceFrontierBase<BlockT, IsPostDom>::dump() const {
   print(dbgs());
 }
 #endif

Modified: vendor/llvm/dist/include/llvm/Analysis/IteratedDominanceFrontier.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/IteratedDominanceFrontier.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/IteratedDominanceFrontier.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -42,12 +42,12 @@ namespace llvm {
 /// By default, liveness is not used to prune the IDF computation.
 /// The template parameters should be either BasicBlock* or Inverse<BasicBlock
 /// *>, depending on if you want the forward or reverse IDF.
-template <class NodeTy>
+template <class NodeTy, bool IsPostDom>
 class IDFCalculator {
+ public:
+  IDFCalculator(DominatorTreeBase<BasicBlock, IsPostDom> &DT)
+      : DT(DT), useLiveIn(false) {}
 
-public:
-  IDFCalculator(DominatorTreeBase<BasicBlock> &DT) : DT(DT), useLiveIn(false) {}
-
   /// \brief Give the IDF calculator the set of blocks in which the value is
   /// defined.  This is equivalent to the set of starting blocks it should be
   /// calculating the IDF for (though later gets pruned based on liveness).
@@ -84,12 +84,12 @@ class IDFCalculator { (public)
   void calculate(SmallVectorImpl<BasicBlock *> &IDFBlocks);
 
 private:
-  DominatorTreeBase<BasicBlock> &DT;
-  bool useLiveIn;
-  const SmallPtrSetImpl<BasicBlock *> *LiveInBlocks;
-  const SmallPtrSetImpl<BasicBlock *> *DefBlocks;
+ DominatorTreeBase<BasicBlock, IsPostDom> &DT;
+ bool useLiveIn;
+ const SmallPtrSetImpl<BasicBlock *> *LiveInBlocks;
+ const SmallPtrSetImpl<BasicBlock *> *DefBlocks;
 };
-typedef IDFCalculator<BasicBlock *> ForwardIDFCalculator;
-typedef IDFCalculator<Inverse<BasicBlock *>> ReverseIDFCalculator;
+typedef IDFCalculator<BasicBlock *, false> ForwardIDFCalculator;
+typedef IDFCalculator<Inverse<BasicBlock *>, true> ReverseIDFCalculator;
 }
 #endif

Modified: vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/LazyCallGraph.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -43,6 +43,7 @@
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/iterator.h"
 #include "llvm/ADT/iterator_range.h"
+#include "llvm/Analysis/TargetLibraryInfo.h"
 #include "llvm/IR/BasicBlock.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/Function.h"
@@ -908,7 +909,7 @@ class LazyCallGraph { (public)
   /// This sets up the graph and computes all of the entry points of the graph.
   /// No function definitions are scanned until their nodes in the graph are
   /// requested during traversal.
-  LazyCallGraph(Module &M);
+  LazyCallGraph(Module &M, TargetLibraryInfo &TLI);
 
   LazyCallGraph(LazyCallGraph &&G);
   LazyCallGraph &operator=(LazyCallGraph &&RHS);
@@ -966,6 +967,22 @@ class LazyCallGraph { (public)
     return insertInto(F, N);
   }
 
+  /// Get the sequence of known and defined library functions.
+  ///
+  /// These functions, because they are known to LLVM, can have calls
+  /// introduced out of thin air from arbitrary IR.
+  ArrayRef<Function *> getLibFunctions() const {
+    return LibFunctions.getArrayRef();
+  }
+
+  /// Test whether a function is a known and defined library function tracked by
+  /// the call graph.
+  ///
+  /// Because these functions are known to LLVM they are specially modeled in
+  /// the call graph and even when all IR-level references have been removed
+  /// remain active and reachable.
+  bool isLibFunction(Function &F) const { return LibFunctions.count(&F); }
+
   ///@{
   /// \name Pre-SCC Mutation API
   ///
@@ -1100,6 +1117,11 @@ class LazyCallGraph { (public)
   /// These are all of the RefSCCs which have no children.
   SmallVector<RefSCC *, 4> LeafRefSCCs;
 
+  /// Defined functions that are also known library functions which the
+  /// optimizer can reason about and therefore might introduce calls to out of
+  /// thin air.
+  SmallSetVector<Function *, 4> LibFunctions;
+
   /// Helper to insert a new function, with an already looked-up entry in
   /// the NodeMap.
   Node &insertInto(Function &F, Node *&MappedN);
@@ -1216,8 +1238,8 @@ class LazyCallGraphAnalysis : public AnalysisInfoMixin
   ///
   /// This just builds the set of entry points to the call graph. The rest is
   /// built lazily as it is walked.
-  LazyCallGraph run(Module &M, ModuleAnalysisManager &) {
-    return LazyCallGraph(M);
+  LazyCallGraph run(Module &M, ModuleAnalysisManager &AM) {
+    return LazyCallGraph(M, AM.getResult<TargetLibraryAnalysis>(M));
   }
 };
 

Modified: vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -56,7 +56,8 @@ class Loop;
 class MDNode;
 class PHINode;
 class raw_ostream;
-template<class N> class DominatorTreeBase;
+template <class N, bool IsPostDom>
+class DominatorTreeBase;
 template<class N, class M> class LoopInfoBase;
 template<class N, class M> class LoopBase;
 
@@ -663,12 +664,12 @@ class LoopInfoBase { (public)
   }
 
   /// Create the loop forest using a stable algorithm.
-  void analyze(const DominatorTreeBase<BlockT> &DomTree);
+  void analyze(const DominatorTreeBase<BlockT, false> &DomTree);
 
   // Debugging
   void print(raw_ostream &OS) const;
 
-  void verify(const DominatorTreeBase<BlockT> &DomTree) const;
+  void verify(const DominatorTreeBase<BlockT, false> &DomTree) const;
 };
 
 // Implementation in LoopInfoImpl.h
@@ -683,7 +684,7 @@ class LoopInfo : public LoopInfoBase<BasicBlock, Loop>
   LoopInfo(const LoopInfo &) = delete;
 public:
   LoopInfo() {}
-  explicit LoopInfo(const DominatorTreeBase<BasicBlock> &DomTree);
+  explicit LoopInfo(const DominatorTreeBase<BasicBlock, false> &DomTree);
 
   LoopInfo(LoopInfo &&Arg) : BaseT(std::move(static_cast<BaseT &>(Arg))) {}
   LoopInfo &operator=(LoopInfo &&RHS) {

Modified: vendor/llvm/dist/include/llvm/Analysis/LoopInfoImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/LoopInfoImpl.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/LoopInfoImpl.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -340,10 +340,10 @@ void LoopBase<BlockT, LoopT>::print(raw_ostream &OS, u
 /// Discover a subloop with the specified backedges such that: All blocks within
 /// this loop are mapped to this loop or a subloop. And all subloops within this
 /// loop have their parent loop set to this loop or a subloop.
-template<class BlockT, class LoopT>
-static void discoverAndMapSubloop(LoopT *L, ArrayRef<BlockT*> Backedges,
-                                  LoopInfoBase<BlockT, LoopT> *LI,
-                                  const DominatorTreeBase<BlockT> &DomTree) {
+template <class BlockT, class LoopT>
+static void discoverAndMapSubloop(
+    LoopT *L, ArrayRef<BlockT *> Backedges, LoopInfoBase<BlockT, LoopT> *LI,
+    const DomTreeBase<BlockT> &DomTree) {
   typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
 
   unsigned NumBlocks = 0;
@@ -462,10 +462,9 @@ void PopulateLoopsDFS<BlockT, LoopT>::insertIntoLoop(B
 ///
 /// The Block vectors are inclusive, so step 3 requires loop-depth number of
 /// insertions per block.
-template<class BlockT, class LoopT>
-void LoopInfoBase<BlockT, LoopT>::
-analyze(const DominatorTreeBase<BlockT> &DomTree) {
-
+template <class BlockT, class LoopT>
+void LoopInfoBase<BlockT, LoopT>::analyze(
+    const DomTreeBase<BlockT> &DomTree) {
   // Postorder traversal of the dominator tree.
   const DomTreeNodeBase<BlockT> *DomRoot = DomTree.getRootNode();
   for (auto DomNode : post_order(DomRoot)) {
@@ -607,7 +606,7 @@ static void compareLoops(const LoopT *L, const LoopT *
 
 template <class BlockT, class LoopT>
 void LoopInfoBase<BlockT, LoopT>::verify(
-    const DominatorTreeBase<BlockT> &DomTree) const {
+    const DomTreeBase<BlockT> &DomTree) const {
   DenseSet<const LoopT*> Loops;
   for (iterator I = begin(), E = end(); I != E; ++I) {
     assert(!(*I)->getParentLoop() && "Top-level loop has a parent!");

Modified: vendor/llvm/dist/include/llvm/Analysis/PostDominators.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/PostDominators.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/PostDominators.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -22,10 +22,8 @@ namespace llvm {
 /// PostDominatorTree Class - Concrete subclass of DominatorTree that is used to
 /// compute the post-dominator tree.
 ///
-struct PostDominatorTree : public DominatorTreeBase<BasicBlock> {
-  typedef DominatorTreeBase<BasicBlock> Base;
-
-  PostDominatorTree() : DominatorTreeBase<BasicBlock>(true) {}
+struct PostDominatorTree : public PostDomTreeBase<BasicBlock> {
+  typedef PostDomTreeBase<BasicBlock> Base;
 
   /// Handle invalidation explicitly.
   bool invalidate(Function &F, const PreservedAnalyses &PA,

Modified: vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -237,17 +237,15 @@ struct FoldingSetTrait<SCEVPredicate> : DefaultFolding
 };
 
 /// This class represents an assumption that two SCEV expressions are equal,
-/// and this can be checked at run-time. We assume that the left hand side is
-/// a SCEVUnknown and the right hand side a constant.
+/// and this can be checked at run-time.
 class SCEVEqualPredicate final : public SCEVPredicate {
-  /// We assume that LHS == RHS, where LHS is a SCEVUnknown and RHS a
-  /// constant.
-  const SCEVUnknown *LHS;
-  const SCEVConstant *RHS;
+  /// We assume that LHS == RHS.
+  const SCEV *LHS;
+  const SCEV *RHS;
 
 public:
-  SCEVEqualPredicate(const FoldingSetNodeIDRef ID, const SCEVUnknown *LHS,
-                     const SCEVConstant *RHS);
+  SCEVEqualPredicate(const FoldingSetNodeIDRef ID, const SCEV *LHS,
+                     const SCEV *RHS);
 
   /// Implementation of the SCEVPredicate interface
   bool implies(const SCEVPredicate *N) const override;
@@ -256,10 +254,10 @@ class SCEVEqualPredicate final : public SCEVPredicate 
   const SCEV *getExpr() const override;
 
   /// Returns the left hand side of the equality.
-  const SCEVUnknown *getLHS() const { return LHS; }
+  const SCEV *getLHS() const { return LHS; }
 
   /// Returns the right hand side of the equality.
-  const SCEVConstant *getRHS() const { return RHS; }
+  const SCEV *getRHS() const { return RHS; }
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   static bool classof(const SCEVPredicate *P) {
@@ -1241,6 +1239,14 @@ class ScalarEvolution { (public)
     SmallVector<const SCEV *, 4> NewOp(Operands.begin(), Operands.end());
     return getAddRecExpr(NewOp, L, Flags);
   }
+
+  /// Checks if \p SymbolicPHI can be rewritten as an AddRecExpr under some
+  /// Predicates. If successful return these <AddRecExpr, Predicates>;
+  /// The function is intended to be called from PSCEV (the caller will decide
+  /// whether to actually add the predicates and carry out the rewrites).
+  Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
+  createAddRecFromPHIWithCasts(const SCEVUnknown *SymbolicPHI);
+  
   /// Returns an expression for a GEP
   ///
   /// \p GEP The GEP. The indices contained in the GEP itself are ignored,
@@ -1675,8 +1681,7 @@ class ScalarEvolution { (public)
     return F.getParent()->getDataLayout();
   }
 
-  const SCEVPredicate *getEqualPredicate(const SCEVUnknown *LHS,
-                                         const SCEVConstant *RHS);
+  const SCEVPredicate *getEqualPredicate(const SCEV *LHS, const SCEV *RHS);
 
   const SCEVPredicate *
   getWrapPredicate(const SCEVAddRecExpr *AR,
@@ -1692,6 +1697,19 @@ class ScalarEvolution { (public)
       SmallPtrSetImpl<const SCEVPredicate *> &Preds);
 
 private:
+  /// Similar to createAddRecFromPHI, but with the additional flexibility of 
+  /// suggesting runtime overflow checks in case casts are encountered.
+  /// If successful, the analysis records that for this loop, \p SymbolicPHI,
+  /// which is the UnknownSCEV currently representing the PHI, can be rewritten
+  /// into an AddRec, assuming some predicates; The function then returns the
+  /// AddRec and the predicates as a pair, and caches this pair in
+  /// PredicatedSCEVRewrites.
+  /// If the analysis is not successful, a mapping from the \p SymbolicPHI to 
+  /// itself (with no predicates) is recorded, and a nullptr with an empty
+  /// predicates vector is returned as a pair. 
+  Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
+  createAddRecFromPHIWithCastsImpl(const SCEVUnknown *SymbolicPHI);
+
   /// Compute the backedge taken count knowing the interval difference, the
   /// stride and presence of the equality in the comparison.
   const SCEV *computeBECount(const SCEV *Delta, const SCEV *Stride,
@@ -1722,6 +1740,12 @@ class ScalarEvolution { (public)
   FoldingSet<SCEVPredicate> UniquePreds;
   BumpPtrAllocator SCEVAllocator;
 
+  /// Cache tentative mappings from UnknownSCEVs in a Loop, to a SCEV expression
+  /// they can be rewritten into under certain predicates.
+  DenseMap<std::pair<const SCEVUnknown *, const Loop *>,
+           std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
+      PredicatedSCEVRewrites;
+   
   /// The head of a linked list of all SCEVUnknown values that have been
   /// allocated. This is used by releaseMemory to locate them all and call
   /// their destructors.

Modified: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -155,6 +155,13 @@ class TargetTransformInfo { (public)
   int getGEPCost(Type *PointeeType, const Value *Ptr,
                  ArrayRef<const Value *> Operands) const;
 
+  /// \brief Estimate the cost of a EXT operation when lowered.
+  ///
+  /// The contract for this function is the same as \c getOperationCost except
+  /// that it supports an interface that provides extra information specific to
+  /// the EXT operation.
+  int getExtCost(const Instruction *I, const Value *Src) const;
+
   /// \brief Estimate the cost of a function call when lowered.
   ///
   /// The contract for this is the same as \c getOperationCost except that it
@@ -849,6 +856,7 @@ class TargetTransformInfo::Concept { (public)
   virtual int getOperationCost(unsigned Opcode, Type *Ty, Type *OpTy) = 0;
   virtual int getGEPCost(Type *PointeeType, const Value *Ptr,
                          ArrayRef<const Value *> Operands) = 0;
+  virtual int getExtCost(const Instruction *I, const Value *Src) = 0;
   virtual int getCallCost(FunctionType *FTy, int NumArgs) = 0;
   virtual int getCallCost(const Function *F, int NumArgs) = 0;
   virtual int getCallCost(const Function *F,
@@ -1021,6 +1029,9 @@ class TargetTransformInfo::Model final : public Target
   int getGEPCost(Type *PointeeType, const Value *Ptr,
                  ArrayRef<const Value *> Operands) override {
     return Impl.getGEPCost(PointeeType, Ptr, Operands);
+  }
+  int getExtCost(const Instruction *I, const Value *Src) override {
+    return Impl.getExtCost(I, Src);
   }
   int getCallCost(FunctionType *FTy, int NumArgs) override {
     return Impl.getCallCost(FTy, NumArgs);

Modified: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -120,6 +120,10 @@ class TargetTransformInfoImplBase { (public)
     return SI.getNumCases();
   }
 
+  int getExtCost(const Instruction *I, const Value *Src) {
+    return TTI::TCC_Basic;
+  }
+
   unsigned getCallCost(FunctionType *FTy, int NumArgs) {
     assert(FTy && "FunctionType must be provided to this routine.");
 
@@ -728,6 +732,8 @@ class TargetTransformInfoImplCRTPBase : public TargetT
       // nop on most sane targets.
       if (isa<CmpInst>(CI->getOperand(0)))
         return TTI::TCC_Free;
+      if (isa<SExtInst>(CI) || isa<ZExtInst>(CI) || isa<FPExtInst>(CI))
+        return static_cast<T *>(this)->getExtCost(CI, Operands.back());
     }
 
     return static_cast<T *>(this)->getOperationCost(

Modified: vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -155,6 +155,18 @@ class BasicTTIImplBase : public TargetTransformInfoImp
     return BaseT::getGEPCost(PointeeType, Ptr, Operands);
   }
 
+  int getExtCost(const Instruction *I, const Value *Src) {
+    if (getTLI()->isExtFree(I))
+      return TargetTransformInfo::TCC_Free;
+
+    if (isa<ZExtInst>(I) || isa<SExtInst>(I))
+      if (const LoadInst *LI = dyn_cast<LoadInst>(Src))
+        if (getTLI()->isExtLoad(LI, I, DL))
+          return TargetTransformInfo::TCC_Free;
+
+    return TargetTransformInfo::TCC_Basic;
+  }
+
   unsigned getIntrinsicCost(Intrinsic::ID IID, Type *RetTy,
                             ArrayRef<const Value *> Arguments) {
     return BaseT::getIntrinsicCost(IID, RetTy, Arguments);

Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineDominanceFrontier.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineDominanceFrontier.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineDominanceFrontier.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -23,27 +23,24 @@ class MachineDominanceFrontier : public MachineFunctio
   ForwardDominanceFrontierBase<MachineBasicBlock> Base;
 
 public:
-  using DomTreeT = DominatorTreeBase<MachineBasicBlock>;
-  using DomTreeNodeT = DomTreeNodeBase<MachineBasicBlock>;
-  using DomSetType = DominanceFrontierBase<MachineBasicBlock>::DomSetType;
-  using iterator = DominanceFrontierBase<MachineBasicBlock>::iterator;
-  using const_iterator =
-      DominanceFrontierBase<MachineBasicBlock>::const_iterator;
+ using DomTreeT = DomTreeBase<MachineBasicBlock>;
+ using DomTreeNodeT = DomTreeNodeBase<MachineBasicBlock>;
+ using DomSetType = DominanceFrontierBase<MachineBasicBlock, false>::DomSetType;
+ using iterator = DominanceFrontierBase<MachineBasicBlock, false>::iterator;
+ using const_iterator =
+     DominanceFrontierBase<MachineBasicBlock, false>::const_iterator;
 
-  MachineDominanceFrontier(const MachineDominanceFrontier &) = delete;
-  MachineDominanceFrontier &
-  operator=(const MachineDominanceFrontier &) = delete;
+ MachineDominanceFrontier(const MachineDominanceFrontier &) = delete;
+ MachineDominanceFrontier &operator=(const MachineDominanceFrontier &) = delete;
 
-  static char ID;
+ static char ID;
 
-  MachineDominanceFrontier();
+ MachineDominanceFrontier();
 
-  DominanceFrontierBase<MachineBasicBlock> &getBase() {
-    return Base;
-  }
+ DominanceFrontierBase<MachineBasicBlock, false> &getBase() { return Base; }
 
-  inline const std::vector<MachineBasicBlock*> &getRoots() const {
-    return Base.getRoots();
+ inline const std::vector<MachineBasicBlock *> &getRoots() const {
+   return Base.getRoots();
   }
 
   MachineBasicBlock *getRoot() const {
@@ -98,7 +95,7 @@ class MachineDominanceFrontier : public MachineFunctio
     return Base.compareDomSet(DS1, DS2);
   }
 
-  bool compare(DominanceFrontierBase<MachineBasicBlock> &Other) const {
+  bool compare(DominanceFrontierBase<MachineBasicBlock, false> &Other) const {
     return Base.compare(Other);
   }
 

Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineDominators.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineDominators.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineDominators.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -28,13 +28,15 @@
 
 namespace llvm {
 
-template<>
-inline void DominatorTreeBase<MachineBasicBlock>::addRoot(MachineBasicBlock* MBB) {
+template <>
+inline void DominatorTreeBase<MachineBasicBlock, false>::addRoot(
+    MachineBasicBlock *MBB) {
   this->Roots.push_back(MBB);
 }
 
 extern template class DomTreeNodeBase<MachineBasicBlock>;
-extern template class DominatorTreeBase<MachineBasicBlock>;
+extern template class DominatorTreeBase<MachineBasicBlock, false>; // DomTree
+extern template class DominatorTreeBase<MachineBasicBlock, true>; // PostDomTree
 
 using MachineDomTreeNode = DomTreeNodeBase<MachineBasicBlock>;
 
@@ -65,7 +67,7 @@ class MachineDominatorTree : public MachineFunctionPas
   mutable SmallSet<MachineBasicBlock *, 32> NewBBs;
 
   /// The DominatorTreeBase that is used to compute a normal dominator tree
-  std::unique_ptr<DominatorTreeBase<MachineBasicBlock>> DT;
+  std::unique_ptr<DomTreeBase<MachineBasicBlock>> DT;
 
   /// \brief Apply all the recorded critical edges to the DT.
   /// This updates the underlying DT information in a way that uses
@@ -79,9 +81,8 @@ class MachineDominatorTree : public MachineFunctionPas
 
   MachineDominatorTree();
 
-  DominatorTreeBase<MachineBasicBlock> &getBase() {
-    if (!DT)
-      DT.reset(new DominatorTreeBase<MachineBasicBlock>(false));
+  DomTreeBase<MachineBasicBlock> &getBase() {
+    if (!DT) DT.reset(new DomTreeBase<MachineBasicBlock>());
     applySplitCriticalEdges();
     return *DT;
   }

Modified: vendor/llvm/dist/include/llvm/CodeGen/MachinePostDominators.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachinePostDominators.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachinePostDominators.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -26,7 +26,7 @@ namespace llvm {
 ///
 struct MachinePostDominatorTree : public MachineFunctionPass {
 private:
-  DominatorTreeBase<MachineBasicBlock> *DT;
+ PostDomTreeBase<MachineBasicBlock> *DT;
 
 public:
   static char ID;

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -17,7 +17,6 @@
 namespace llvm {
 namespace codeview {
 class TypeCollection;
-class TypeServerHandler;
 class TypeVisitorCallbacks;
 
 enum VisitorDataSource {
@@ -31,11 +30,9 @@ enum VisitorDataSource {
 
 Error visitTypeRecord(CVType &Record, TypeIndex Index,
                       TypeVisitorCallbacks &Callbacks,
-                      VisitorDataSource Source = VDS_BytesPresent,
-                      TypeServerHandler *TS = nullptr);
+                      VisitorDataSource Source = VDS_BytesPresent);
 Error visitTypeRecord(CVType &Record, TypeVisitorCallbacks &Callbacks,
-                      VisitorDataSource Source = VDS_BytesPresent,
-                      TypeServerHandler *TS = nullptr);
+                      VisitorDataSource Source = VDS_BytesPresent);
 
 Error visitMemberRecord(CVMemberRecord Record, TypeVisitorCallbacks &Callbacks,
                         VisitorDataSource Source = VDS_BytesPresent);
@@ -46,12 +43,9 @@ Error visitMemberRecordStream(ArrayRef<uint8_t> FieldL
                               TypeVisitorCallbacks &Callbacks);
 
 Error visitTypeStream(const CVTypeArray &Types, TypeVisitorCallbacks &Callbacks,
-                      VisitorDataSource Source = VDS_BytesPresent,
-                      TypeServerHandler *TS = nullptr);
-Error visitTypeStream(CVTypeRange Types, TypeVisitorCallbacks &Callbacks,
-                      TypeServerHandler *TS = nullptr);
-Error visitTypeStream(TypeCollection &Types, TypeVisitorCallbacks &Callbacks,
-                      TypeServerHandler *TS = nullptr);
+                      VisitorDataSource Source = VDS_BytesPresent);
+Error visitTypeStream(CVTypeRange Types, TypeVisitorCallbacks &Callbacks);
+Error visitTypeStream(TypeCollection &Types, TypeVisitorCallbacks &Callbacks);
 
 } // end namespace codeview
 } // end namespace llvm

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -84,7 +84,7 @@ class CodeViewRecordIO { (public)
   Error mapEncodedInteger(uint64_t &Value);
   Error mapEncodedInteger(APSInt &Value);
   Error mapStringZ(StringRef &Value);
-  Error mapGuid(StringRef &Guid);
+  Error mapGuid(GUID &Guid);
 
   Error mapStringZVectorZ(std::vector<StringRef> &Value);
 

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/Formatters.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/Formatters.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/Formatters.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -12,6 +12,7 @@
 
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/DebugInfo/CodeView/GUID.h"
 #include "llvm/DebugInfo/CodeView/TypeIndex.h"
 #include "llvm/Support/FormatAdapters.h"
 #include "llvm/Support/FormatVariadic.h"
@@ -31,7 +32,7 @@ class GuidAdapter final : public FormatAdapter<ArrayRe
   explicit GuidAdapter(ArrayRef<uint8_t> Guid);
   explicit GuidAdapter(StringRef Guid);
 
-  void format(raw_ostream &Stream, StringRef Style) override ;
+  void format(raw_ostream &Stream, StringRef Style) override;
 };
 
 } // end namespace detail
@@ -57,6 +58,13 @@ template <> struct format_provider<codeview::TypeIndex
       if (V.isSimple())
         Stream << " (" << codeview::TypeIndex::simpleTypeName(V) << ")";
     }
+  }
+};
+
+template <> struct format_provider<codeview::GUID> {
+  static void format(const codeview::GUID &V, llvm::raw_ostream &Stream,
+                     StringRef Style) {
+    Stream << V;
   }
 };
 

Added: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/GUID.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/GUID.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -0,0 +1,55 @@
+//===- GUID.h ---------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DEBUGINFO_CODEVIEW_GUID_H
+#define LLVM_DEBUGINFO_CODEVIEW_GUID_H
+
+#include <cstdint>
+#include <cstring>
+
+namespace llvm {
+class raw_ostream;
+
+namespace codeview {
+
+/// This represents the 'GUID' type from windows.h.
+struct GUID {
+  uint8_t Guid[16];
+};
+
+inline bool operator==(const GUID &LHS, const GUID &RHS) {
+  return 0 == ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid));
+}
+
+inline bool operator<(const GUID &LHS, const GUID &RHS) {
+  return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) < 0;
+}
+
+inline bool operator<=(const GUID &LHS, const GUID &RHS) {
+  return ::memcmp(LHS.Guid, RHS.Guid, sizeof(LHS.Guid)) <= 0;
+}
+
+inline bool operator>(const GUID &LHS, const GUID &RHS) {
+  return !(LHS <= RHS);
+}
+
+inline bool operator>=(const GUID &LHS, const GUID &RHS) {
+  return !(LHS < RHS);
+}
+
+inline bool operator!=(const GUID &LHS, const GUID &RHS) {
+  return !(LHS == RHS);
+}
+
+raw_ostream &operator<<(raw_ostream &OS, const GUID &Guid);
+
+} // namespace codeview
+} // namespace llvm
+
+#endif

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecord.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecord.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecord.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -848,7 +848,7 @@ class BuildInfoSym : public SymbolRecord { (public)
       : SymbolRecord(SymbolRecordKind::BuildInfoSym),
         RecordOffset(RecordOffset) {}
 
-  uint32_t BuildId;
+  TypeIndex BuildId;
 
   uint32_t RecordOffset;
 };

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecord.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecord.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecord.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -18,6 +18,7 @@
 #include "llvm/ADT/iterator_range.h"
 #include "llvm/DebugInfo/CodeView/CVRecord.h"
 #include "llvm/DebugInfo/CodeView/CodeView.h"
+#include "llvm/DebugInfo/CodeView/GUID.h"
 #include "llvm/DebugInfo/CodeView/TypeIndex.h"
 #include "llvm/Support/BinaryStreamArray.h"
 #include "llvm/Support/Endian.h"
@@ -539,15 +540,17 @@ class TypeServer2Record : public TypeRecord {
 public:
   TypeServer2Record() = default;
   explicit TypeServer2Record(TypeRecordKind Kind) : TypeRecord(Kind) {}
-  TypeServer2Record(StringRef Guid, uint32_t Age, StringRef Name)
-      : TypeRecord(TypeRecordKind::TypeServer2), Guid(Guid), Age(Age),
-        Name(Name) {}
+  TypeServer2Record(StringRef GuidStr, uint32_t Age, StringRef Name)
+      : TypeRecord(TypeRecordKind::TypeServer2), Age(Age), Name(Name) {
+    assert(GuidStr.size() == 16 && "guid isn't 16 bytes");
+    ::memcpy(Guid.Guid, GuidStr.data(), 16);
+  }
 
-  StringRef getGuid() const { return Guid; }
+  const GUID &getGuid() const { return Guid; }
   uint32_t getAge() const { return Age; }
   StringRef getName() const { return Name; }
 
-  StringRef Guid;
+  GUID Guid;
   uint32_t Age;
   StringRef Name;
 };

Modified: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -19,7 +19,6 @@ namespace llvm {
 namespace codeview {
 
 class TypeIndex;
-class TypeServerHandler;
 class TypeTableBuilder;
 
 /// \brief Merge one set of type records into another.  This method assumes
@@ -31,16 +30,13 @@ class TypeTableBuilder;
 /// type stream, that contains the index of the corresponding type record
 /// in the destination stream.
 ///
-/// \param Handler (optional) If non-null, an interface that gets invoked
-/// to handle type server records.
-///
 /// \param Types The collection of types to merge in.
 ///
 /// \returns Error::success() if the operation succeeded, otherwise an
 /// appropriate error code.
 Error mergeTypeRecords(TypeTableBuilder &Dest,
                        SmallVectorImpl<TypeIndex> &SourceToDest,
-                       TypeServerHandler *Handler, const CVTypeArray &Types);
+                       const CVTypeArray &Types);
 
 /// \brief Merge one set of id records into another.  This method assumes
 /// that all records are id records, and there are no Type records present.
@@ -65,7 +61,7 @@ Error mergeTypeRecords(TypeTableBuilder &Dest,
 /// appropriate error code.
 Error mergeIdRecords(TypeTableBuilder &Dest, ArrayRef<TypeIndex> Types,
                      SmallVectorImpl<TypeIndex> &SourceToDest,
-  const CVTypeArray &Ids);
+                     const CVTypeArray &Ids);
 
 /// \brief Merge a unified set of type and id records, splitting them into
 /// separate output streams.
@@ -78,9 +74,6 @@ Error mergeIdRecords(TypeTableBuilder &Dest, ArrayRef<
 /// id stream, that contains the index of the corresponding id record
 /// in the destination stream.
 ///
-/// \param Handler (optional) If non-null, an interface that gets invoked
-/// to handle type server records.
-///
 /// \param IdsAndTypes The collection of id records to merge in.
 ///
 /// \returns Error::success() if the operation succeeded, otherwise an
@@ -88,8 +81,7 @@ Error mergeIdRecords(TypeTableBuilder &Dest, ArrayRef<
 Error mergeTypeAndIdRecords(TypeTableBuilder &DestIds,
                             TypeTableBuilder &DestTypes,
                             SmallVectorImpl<TypeIndex> &SourceToDest,
-                            TypeServerHandler *Handler,
-  const CVTypeArray &IdsAndTypes);
+                            const CVTypeArray &IdsAndTypes);
 
 } // end namespace codeview
 } // end namespace llvm

Modified: vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h
==============================================================================
--- vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h	Wed Jul 19 03:19:44 2017	(r321183)
+++ vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h	Wed Jul 19 07:02:10 2017	(r321184)
@@ -238,6 +238,34 @@ class DWARFUnit { (public)
 
   uint8_t getUnitType() const { return UnitType; }
 
+  static bool isValidUnitType(uint8_t UnitType) {
+    return UnitType == dwarf::DW_UT_compile || UnitType == dwarf::DW_UT_type ||
+           UnitType == dwarf::DW_UT_partial ||
+           UnitType == dwarf::DW_UT_skeleton ||
+           UnitType == dwarf::DW_UT_split_compile ||
+           UnitType == dwarf::DW_UT_split_type;
+  }
+
+  /// \brief Return the number of bytes for the header of a unit of
+  /// UnitType type.
+  ///
+  /// This function must be called with a valid unit type which in
+  /// DWARF5 is defined as one of the following six types.
+  static uint32_t getDWARF5HeaderSize(uint8_t UnitType) {
+    switch (UnitType) {
+    case dwarf::DW_UT_compile:
+    case dwarf::DW_UT_partial:
+      return 12;
+    case dwarf::DW_UT_skeleton:
+    case dwarf::DW_UT_split_compile:
+      return 20;
+    case dwarf::DW_UT_type:
+    case dwarf::DW_UT_split_type:
+      return 24;
+    }
+    llvm_unreachable("Invalid UnitType.");
+  }
+

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


More information about the svn-src-all mailing list