svn commit: r319461 - in vendor/llvm/dist: docs include/llvm include/llvm/Analysis include/llvm/CodeGen include/llvm/CodeGen/GlobalISel include/llvm/DebugInfo include/llvm/DebugInfo/CodeView includ...
Dimitry Andric
dim at FreeBSD.org
Thu Jun 1 20:58:40 UTC 2017
Author: dim
Date: Thu Jun 1 20:58:36 2017
New Revision: 319461
URL: https://svnweb.freebsd.org/changeset/base/319461
Log:
Vendor import of llvm trunk r304460:
https://llvm.org/svn/llvm-project/llvm/trunk@304460
Added:
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
vendor/llvm/dist/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h (contents, props changed)
vendor/llvm/dist/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h (contents, props changed)
vendor/llvm/dist/include/llvm/ObjectYAML/CodeViewYAMLTypes.h (contents, props changed)
vendor/llvm/dist/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h (contents, props changed)
vendor/llvm/dist/lib/CodeGen/LiveRangeShrink.cpp (contents, props changed)
vendor/llvm/dist/lib/ObjectYAML/CodeViewYAMLDebugSections.cpp (contents, props changed)
vendor/llvm/dist/lib/ObjectYAML/CodeViewYAMLSymbols.cpp (contents, props changed)
vendor/llvm/dist/lib/ObjectYAML/CodeViewYAMLTypes.cpp (contents, props changed)
vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/Andersen/struct.ll
vendor/llvm/dist/test/CodeGen/AArch64/addcarry-crash.ll
vendor/llvm/dist/test/CodeGen/AArch64/pr33172.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/waitcnt-permute.mir
vendor/llvm/dist/test/CodeGen/Hexagon/invalid-dotnew-attempt.mir
vendor/llvm/dist/test/CodeGen/Hexagon/loop-idiom/pmpy-long-loop.ll
vendor/llvm/dist/test/CodeGen/Hexagon/mul64-sext.ll
vendor/llvm/dist/test/CodeGen/PowerPC/logic-ops-on-compares.ll
vendor/llvm/dist/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
vendor/llvm/dist/test/CodeGen/PowerPC/memcmp.ll
vendor/llvm/dist/test/CodeGen/PowerPC/memcmpIR.ll
vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-get-cache-line-size.ll
vendor/llvm/dist/test/CodeGen/PowerPC/testComparesieqsll.ll
vendor/llvm/dist/test/CodeGen/PowerPC/testComparesiequll.ll
vendor/llvm/dist/test/CodeGen/PowerPC/testCompareslleqsll.ll
vendor/llvm/dist/test/CodeGen/PowerPC/testComparesllequll.ll
vendor/llvm/dist/test/CodeGen/PowerPC/vec_xxpermdi.ll
vendor/llvm/dist/test/CodeGen/X86/eh-unknown.ll
vendor/llvm/dist/test/CodeGen/X86/gnu-seh-nolpads.ll
vendor/llvm/dist/test/CodeGen/X86/lrshrink.ll
vendor/llvm/dist/test/CodeGen/X86/pr32610.ll
vendor/llvm/dist/test/MC/ARM/mixed-arm-thumb-bl-fixup.ll
vendor/llvm/dist/test/Other/new-pm-thinlto-defaults.ll
vendor/llvm/dist/test/ThinLTO/X86/newpm-basic.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAlloca.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAlloca2.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAlloca4.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAlloca5.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineLiveAcross.ll
vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineNoLiveOut.ll
vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/no_vector_instructions.ll
vendor/llvm/dist/test/Transforms/LowerExpectIntrinsic/expect_nonboolean.ll
vendor/llvm/dist/test/Transforms/NewGVN/pr33185.ll
vendor/llvm/dist/test/Transforms/ThinLTOBitcodeWriter/new-pm.ll
Deleted:
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVSymbolTypes.def
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecords.def
vendor/llvm/dist/test/CodeGen/PowerPC/pristine-and-livein.mir
vendor/llvm/dist/test/ThinLTO/X86/error-newpm.ll
vendor/llvm/dist/test/Transforms/GVN/PRE/phi-translate-2.ll
vendor/llvm/dist/tools/llvm-pdbdump/YamlSerializationContext.h
vendor/llvm/dist/tools/llvm-pdbdump/YamlSymbolDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/YamlSymbolDumper.h
vendor/llvm/dist/tools/llvm-pdbdump/YamlTypeDumper.cpp
vendor/llvm/dist/tools/llvm-pdbdump/YamlTypeDumper.h
Modified:
vendor/llvm/dist/docs/Vectorizers.rst
vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h
vendor/llvm/dist/include/llvm/CodeGen/MIRYamlMapping.h
vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h
vendor/llvm/dist/include/llvm/CodeGen/MachineConstantPool.h
vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h
vendor/llvm/dist/include/llvm/CodeGen/MachineFunctionInitializer.h
vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h
vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBundleIterator.h
vendor/llvm/dist/include/llvm/CodeGen/MachineLoopInfo.h
vendor/llvm/dist/include/llvm/CodeGen/MachineModuleInfo.h
vendor/llvm/dist/include/llvm/CodeGen/Passes.h
vendor/llvm/dist/include/llvm/CodeGen/TargetPassConfig.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeView.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecord.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabaseVisitor.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecord.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeSerializer.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeTableBuilder.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
vendor/llvm/dist/include/llvm/DebugInfo/DIContext.h
vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFContext.h
vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/RawConstants.h
vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBContext.h
vendor/llvm/dist/include/llvm/IR/Attributes.h
vendor/llvm/dist/include/llvm/IR/Function.h
vendor/llvm/dist/include/llvm/IR/Instructions.h
vendor/llvm/dist/include/llvm/InitializePasses.h
vendor/llvm/dist/include/llvm/Object/WindowsResource.h
vendor/llvm/dist/include/llvm/Passes/PassBuilder.h
vendor/llvm/dist/include/llvm/Support/ARMTargetParser.def
vendor/llvm/dist/include/llvm/Support/BinaryStreamReader.h
vendor/llvm/dist/include/llvm/Support/YAMLTraits.h
vendor/llvm/dist/include/llvm/TableGen/Record.h
vendor/llvm/dist/include/llvm/Target/TargetLowering.h
vendor/llvm/dist/include/llvm/Target/TargetMachine.h
vendor/llvm/dist/include/llvm/Transforms/Scalar/GVN.h
vendor/llvm/dist/include/llvm/Transforms/Utils/CodeExtractor.h
vendor/llvm/dist/include/llvm/module.modulemap
vendor/llvm/dist/lib/Analysis/CFLGraph.h
vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp
vendor/llvm/dist/lib/Analysis/EHPersonalities.cpp
vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp
vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp
vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp
vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp
vendor/llvm/dist/lib/Analysis/ValueTracking.cpp
vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp
vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp
vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
vendor/llvm/dist/lib/CodeGen/AsmPrinter/EHStreamer.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/CriticalAntiDepBreaker.cpp
vendor/llvm/dist/lib/CodeGen/GlobalISel/Localizer.cpp
vendor/llvm/dist/lib/CodeGen/ImplicitNullChecks.cpp
vendor/llvm/dist/lib/CodeGen/MIRParser/MIRParser.cpp
vendor/llvm/dist/lib/CodeGen/MIRPrinter.cpp
vendor/llvm/dist/lib/CodeGen/MachineBasicBlock.cpp
vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp
vendor/llvm/dist/lib/CodeGen/MachineModuleInfo.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h
vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
vendor/llvm/dist/lib/CodeGen/TargetLoweringBase.cpp
vendor/llvm/dist/lib/CodeGen/TargetPassConfig.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/CVSymbolVisitor.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/CVTypeVisitor.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/EnumTables.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/SymbolDumper.cpp
vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDumpVisitor.cpp
vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp
vendor/llvm/dist/lib/DebugInfo/PDB/Native/InfoStream.cpp
vendor/llvm/dist/lib/DebugInfo/PDB/PDBContext.cpp
vendor/llvm/dist/lib/Fuzzer/test/dump_coverage.test
vendor/llvm/dist/lib/IR/Attributes.cpp
vendor/llvm/dist/lib/IR/Function.cpp
vendor/llvm/dist/lib/IR/Instructions.cpp
vendor/llvm/dist/lib/LTO/LTOBackend.cpp
vendor/llvm/dist/lib/MC/MCCodeView.cpp
vendor/llvm/dist/lib/Object/MachOObjectFile.cpp
vendor/llvm/dist/lib/Object/WindowsResource.cpp
vendor/llvm/dist/lib/ObjectYAML/CMakeLists.txt
vendor/llvm/dist/lib/ObjectYAML/LLVMBuild.txt
vendor/llvm/dist/lib/Passes/PassBuilder.cpp
vendor/llvm/dist/lib/Support/BinaryStreamReader.cpp
vendor/llvm/dist/lib/Support/Unix/Path.inc
vendor/llvm/dist/lib/TableGen/Record.cpp
vendor/llvm/dist/lib/TableGen/TGParser.cpp
vendor/llvm/dist/lib/TableGen/TGParser.h
vendor/llvm/dist/lib/Target/AArch64/AArch64.td
vendor/llvm/dist/lib/Target/AArch64/AArch64SchedM1.td
vendor/llvm/dist/lib/Target/AArch64/AArch64TargetMachine.cpp
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetMachine.h
vendor/llvm/dist/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
vendor/llvm/dist/lib/Target/AMDGPU/DSInstructions.td
vendor/llvm/dist/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.cpp
vendor/llvm/dist/lib/Target/AMDGPU/InstPrinter/AMDGPUInstPrinter.h
vendor/llvm/dist/lib/Target/AMDGPU/SIDefines.h
vendor/llvm/dist/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
vendor/llvm/dist/lib/Target/AMDGPU/SIInstrInfo.td
vendor/llvm/dist/lib/Target/AMDGPU/SIRegisterInfo.h
vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp
vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.h
vendor/llvm/dist/lib/Target/ARM/ARMExpandPseudoInsts.cpp
vendor/llvm/dist/lib/Target/ARM/ARMFrameLowering.cpp
vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td
vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td
vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp
vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h
vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
vendor/llvm/dist/lib/Target/ARM/Thumb1FrameLowering.cpp
vendor/llvm/dist/lib/Target/AVR/AVRISelLowering.cpp
vendor/llvm/dist/lib/Target/AVR/AVRInstrInfo.td
vendor/llvm/dist/lib/Target/AVR/AVRTargetMachine.cpp
vendor/llvm/dist/lib/Target/AVR/AVRTargetMachine.h
vendor/llvm/dist/lib/Target/BPF/BPFTargetMachine.cpp
vendor/llvm/dist/lib/Target/BPF/CMakeLists.txt
vendor/llvm/dist/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp
vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.cpp
vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfo.cpp
vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfo.h
vendor/llvm/dist/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp
vendor/llvm/dist/lib/Target/Hexagon/HexagonPatterns.td
vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetMachine.cpp
vendor/llvm/dist/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
vendor/llvm/dist/lib/Target/Lanai/LanaiTargetMachine.cpp
vendor/llvm/dist/lib/Target/Lanai/LanaiTargetMachine.h
vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp
vendor/llvm/dist/lib/Target/Mips/Mips16FrameLowering.cpp
vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp
vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetMachine.cpp
vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetMachine.h
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/PPCInstr64Bit.td
vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp
vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.h
vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td
vendor/llvm/dist/lib/Target/PowerPC/PPCInstrVSX.td
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.h
vendor/llvm/dist/lib/Target/RISCV/RISCVTargetMachine.cpp
vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp
vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.h
vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.cpp
vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.h
vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
vendor/llvm/dist/lib/Target/X86/InstPrinter/X86InstComments.cpp
vendor/llvm/dist/lib/Target/X86/X86FloatingPoint.cpp
vendor/llvm/dist/lib/Target/X86/X86FrameLowering.cpp
vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp
vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h
vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp
vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h
vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp
vendor/llvm/dist/lib/Transforms/Coroutines/CoroCleanup.cpp
vendor/llvm/dist/lib/Transforms/Coroutines/CoroEarly.cpp
vendor/llvm/dist/lib/Transforms/Coroutines/CoroElide.cpp
vendor/llvm/dist/lib/Transforms/Coroutines/CoroSplit.cpp
vendor/llvm/dist/lib/Transforms/IPO/PartialInlining.cpp
vendor/llvm/dist/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp
vendor/llvm/dist/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
vendor/llvm/dist/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
vendor/llvm/dist/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp
vendor/llvm/dist/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp
vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp
vendor/llvm/dist/lib/Transforms/Utils/CodeExtractor.cpp
vendor/llvm/dist/lib/Transforms/Utils/PredicateInfo.cpp
vendor/llvm/dist/lib/Transforms/Utils/SimplifyLibCalls.cpp
vendor/llvm/dist/lib/Transforms/Vectorize/LoopVectorize.cpp
vendor/llvm/dist/test/Bitcode/thinlto-function-summary-callgraph.ll
vendor/llvm/dist/test/CodeGen/AArch64/GlobalISel/localizer.mir
vendor/llvm/dist/test/CodeGen/AArch64/GlobalISel/select-pr32733.mir
vendor/llvm/dist/test/CodeGen/AArch64/misched-fusion-aes.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.ds.swizzle.ll
vendor/llvm/dist/test/CodeGen/AMDGPU/merge-m0.mir
vendor/llvm/dist/test/CodeGen/AMDGPU/sdwa-scalar-ops.mir
vendor/llvm/dist/test/CodeGen/ARM/cmpxchg-O0.ll
vendor/llvm/dist/test/CodeGen/ARM/v6-jumptable-clobber.mir
vendor/llvm/dist/test/CodeGen/AVR/rot.ll
vendor/llvm/dist/test/CodeGen/MIR/Generic/multiRunPass.mir
vendor/llvm/dist/test/CodeGen/Mips/compactbranches/empty-block.mir
vendor/llvm/dist/test/CodeGen/PowerPC/expand-isel.ll
vendor/llvm/dist/test/CodeGen/Thumb2/tbb-removeadd.mir
vendor/llvm/dist/test/CodeGen/X86/2007-01-08-InstrSched.ll
vendor/llvm/dist/test/CodeGen/X86/GlobalISel/irtranslator-call.ll
vendor/llvm/dist/test/CodeGen/X86/add-of-carry.ll
vendor/llvm/dist/test/CodeGen/X86/addcarry.ll
vendor/llvm/dist/test/CodeGen/X86/avg.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-gather-scatter-intrin.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-mask-spills.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/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/bitcast-and-setcc-128.ll
vendor/llvm/dist/test/CodeGen/X86/bitcast-and-setcc-256.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/bswap_tree2.ll
vendor/llvm/dist/test/CodeGen/X86/fmsubadd-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/implicit-null-checks.mir
vendor/llvm/dist/test/CodeGen/X86/madd.ll
vendor/llvm/dist/test/CodeGen/X86/misched-matrix.ll
vendor/llvm/dist/test/CodeGen/X86/mul-constant-i16.ll
vendor/llvm/dist/test/CodeGen/X86/mul-constant-i32.ll
vendor/llvm/dist/test/CodeGen/X86/mul-constant-i64.ll
vendor/llvm/dist/test/CodeGen/X86/oddshuffles.ll
vendor/llvm/dist/test/CodeGen/X86/pmul.ll
vendor/llvm/dist/test/CodeGen/X86/pr32284.ll
vendor/llvm/dist/test/CodeGen/X86/rotate.ll
vendor/llvm/dist/test/CodeGen/X86/sad.ll
vendor/llvm/dist/test/CodeGen/X86/select.ll
vendor/llvm/dist/test/CodeGen/X86/setcc-lowering.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/sse41.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/x86-interleaved-access.ll
vendor/llvm/dist/test/CodeGen/X86/xchg-nofold.ll
vendor/llvm/dist/test/DebugInfo/MIR/X86/empty-inline.mir
vendor/llvm/dist/test/DebugInfo/omit-empty.ll
vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll
vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/coverage.ll
vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/seh.ll
vendor/llvm/dist/test/MC/AMDGPU/ds-err.s
vendor/llvm/dist/test/MC/AMDGPU/ds.s
vendor/llvm/dist/test/MC/ARM/big-endian-thumb-fixup.s
vendor/llvm/dist/test/MC/Disassembler/AMDGPU/gfx8_dasm_all.txt
vendor/llvm/dist/test/Other/new-pm-defaults.ll
vendor/llvm/dist/test/Transforms/GVN/PRE/pre-gep-load.ll
vendor/llvm/dist/test/Transforms/GVN/PRE/pre-load.ll
vendor/llvm/dist/test/Transforms/Inline/AArch64/gep-cost.ll
vendor/llvm/dist/test/Transforms/InstCombine/ctpop.ll
vendor/llvm/dist/test/Transforms/InstCombine/intrinsics.ll
vendor/llvm/dist/test/Transforms/NewGVN/completeness.ll
vendor/llvm/dist/test/Transforms/PGOProfile/branch1.ll
vendor/llvm/dist/test/Transforms/Util/PredicateInfo/condprop.ll
vendor/llvm/dist/test/Transforms/Util/PredicateInfo/testandor.ll
vendor/llvm/dist/test/tools/llvm-config/cflags.test
vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/test_resource.rc
vendor/llvm/dist/test/tools/llvm-cvtres/Inputs/test_resource.res
vendor/llvm/dist/test/tools/llvm-cvtres/resource.test
vendor/llvm/dist/tools/bugpoint/OptimizerDriver.cpp
vendor/llvm/dist/tools/llvm-config/BuildVariables.inc.in
vendor/llvm/dist/tools/llvm-config/llvm-config.cpp
vendor/llvm/dist/tools/llvm-cvtres/llvm-cvtres.cpp
vendor/llvm/dist/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
vendor/llvm/dist/tools/llvm-objdump/MachODump.cpp
vendor/llvm/dist/tools/llvm-objdump/llvm-objdump.cpp
vendor/llvm/dist/tools/llvm-pdbdump/Analyze.cpp
vendor/llvm/dist/tools/llvm-pdbdump/CMakeLists.txt
vendor/llvm/dist/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp
vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.cpp
vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.h
vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.cpp
vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.h
vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp
vendor/llvm/dist/tools/llvm-readobj/ELFDumper.cpp
vendor/llvm/dist/tools/obj2yaml/macho2yaml.cpp
vendor/llvm/dist/tools/opt/NewPMDriver.cpp
vendor/llvm/dist/tools/opt/NewPMDriver.h
vendor/llvm/dist/tools/opt/opt.cpp
vendor/llvm/dist/unittests/ADT/ArrayRefTest.cpp
vendor/llvm/dist/unittests/IR/AttributesTest.cpp
vendor/llvm/dist/unittests/Support/TargetParserTest.cpp
vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp
vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp
vendor/llvm/dist/utils/TableGen/Attributes.cpp
vendor/llvm/dist/utils/TableGen/CodeEmitterGen.cpp
vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp
vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h
vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp
vendor/llvm/dist/utils/TableGen/CodeGenRegisters.h
vendor/llvm/dist/utils/TableGen/CodeGenSchedule.cpp
vendor/llvm/dist/utils/TableGen/FixedLenDecoderEmitter.cpp
vendor/llvm/dist/utils/TableGen/GlobalISelEmitter.cpp
vendor/llvm/dist/utils/TableGen/OptParserEmitter.cpp
vendor/llvm/dist/utils/TableGen/RegisterBankEmitter.cpp
vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp
vendor/llvm/dist/utils/TableGen/SearchableTableEmitter.cpp
vendor/llvm/dist/utils/TableGen/SubtargetEmitter.cpp
vendor/llvm/dist/utils/TableGen/X86FoldTablesEmitter.cpp
Modified: vendor/llvm/dist/docs/Vectorizers.rst
==============================================================================
--- vendor/llvm/dist/docs/Vectorizers.rst Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/docs/Vectorizers.rst Thu Jun 1 20:58:36 2017 (r319461)
@@ -44,12 +44,12 @@ Users can control the vectorization SIMD width using t
$ clang -mllvm -force-vector-width=8 ...
$ opt -loop-vectorize -force-vector-width=8 ...
-Users can control the unroll factor using the command line flag "-force-vector-unroll"
+Users can control the unroll factor using the command line flag "-force-vector-interleave"
.. code-block:: console
- $ clang -mllvm -force-vector-unroll=2 ...
- $ opt -loop-vectorize -force-vector-unroll=2 ...
+ $ clang -mllvm -force-vector-interleave=2 ...
+ $ opt -loop-vectorize -force-vector-interleave=2 ...
Pragma loop hint directives
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Modified: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -454,6 +454,9 @@ class TargetTransformInfo { (public)
/// \brief Don't restrict interleaved unrolling to small loops.
bool enableAggressiveInterleaving(bool LoopHasReductions) const;
+ /// \brief Enable inline expansion of memcmp
+ bool expandMemCmp(Instruction *I, unsigned &MaxLoadSize) const;
+
/// \brief Enable matching of interleaved access groups.
bool enableInterleavedAccessVectorization() const;
@@ -828,6 +831,7 @@ class TargetTransformInfo::Concept { (public)
unsigned VF) = 0;
virtual bool supportsEfficientVectorElementLoadStore() = 0;
virtual bool enableAggressiveInterleaving(bool LoopHasReductions) = 0;
+ virtual bool expandMemCmp(Instruction *I, unsigned &MaxLoadSize) = 0;
virtual bool enableInterleavedAccessVectorization() = 0;
virtual bool isFPVectorizationPotentiallyUnsafe() = 0;
virtual bool allowsMisalignedMemoryAccesses(LLVMContext &Context,
@@ -1046,6 +1050,9 @@ class TargetTransformInfo::Model final : public Target
bool enableAggressiveInterleaving(bool LoopHasReductions) override {
return Impl.enableAggressiveInterleaving(LoopHasReductions);
+ }
+ bool expandMemCmp(Instruction *I, unsigned &MaxLoadSize) override {
+ return Impl.expandMemCmp(I, MaxLoadSize);
}
bool enableInterleavedAccessVectorization() override {
return Impl.enableInterleavedAccessVectorization();
Modified: vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -274,6 +274,8 @@ class TargetTransformInfoImplBase { (public)
bool enableAggressiveInterleaving(bool LoopHasReductions) { return false; }
+ bool expandMemCmp(Instruction *I, unsigned &MaxLoadSize) { return false; }
+
bool enableInterleavedAccessVectorization() { return false; }
bool isFPVectorizationPotentiallyUnsafe() { return false; }
Modified: vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h
==============================================================================
--- vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -85,6 +85,8 @@ template <typename T> class ArrayRef;
const Instruction *CxtI = nullptr,
const DominatorTree *DT = nullptr);
+ bool isOnlyUsedInZeroEqualityComparison(const Instruction *CxtI);
+
/// Return true if the given value is known to be non-zero when defined. For
/// vectors, return true if every element is known to be non-zero when
/// defined. For pointers, if the context instruction and dominator tree are
Modified: vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -396,7 +396,7 @@ class RegisterBankInfo { (protected)
mutable DenseMap<unsigned, std::unique_ptr<const InstructionMapping>>
MapOfInstructionMappings;
- /// Create a RegisterBankInfo that can accomodate up to \p NumRegBanks
+ /// Create a RegisterBankInfo that can accommodate up to \p NumRegBanks
/// RegisterBank instances.
RegisterBankInfo(RegisterBank **RegBanks, unsigned NumRegBanks);
Modified: vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -410,11 +410,21 @@ namespace ISD {
/// then the result type must also be a vector type.
SETCC,
- /// Like SetCC, ops #0 and #1 are the LHS and RHS operands to compare, but
+ /// Like SetCC, ops #0 and #1 are the LHS and RHS operands to compare, and
/// op #2 is a *carry value*. This operator checks the result of
/// "LHS - RHS - Carry", and can be used to compare two wide integers:
/// (setcce lhshi rhshi (subc lhslo rhslo) cc). Only valid for integers.
+ /// FIXME: This node is deprecated in favor of SETCCCARRY.
+ /// It is kept around for now to provide a smooth transition path
+ /// toward the use of SETCCCARRY and will eventually be removed.
SETCCE,
+
+ /// Like SetCC, ops #0 and #1 are the LHS and RHS operands to compare, but
+ /// op #2 is a boolean indicating if there is an incoming carry. This
+ /// operator checks the result of "LHS - RHS - Carry", and can be used to
+ /// compare two wide integers: (setcce lhshi rhshi (subc lhslo rhslo) cc).
+ /// Only valid for integers.
+ SETCCCARRY,
/// SHL_PARTS/SRA_PARTS/SRL_PARTS - These operators are used for expanded
/// integer shift operations. The operation ordering is:
Modified: vendor/llvm/dist/include/llvm/CodeGen/MIRYamlMapping.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MIRYamlMapping.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MIRYamlMapping.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -381,7 +381,6 @@ struct MachineFunction {
StringRef Name;
unsigned Alignment = 0;
bool ExposesReturnsTwice = false;
- bool NoVRegs;
// GISel MachineFunctionProperties.
bool Legalized = false;
bool RegBankSelected = false;
@@ -406,7 +405,6 @@ template <> struct MappingTraits<MachineFunction> {
YamlIO.mapRequired("name", MF.Name);
YamlIO.mapOptional("alignment", MF.Alignment);
YamlIO.mapOptional("exposesReturnsTwice", MF.ExposesReturnsTwice);
- YamlIO.mapOptional("noVRegs", MF.NoVRegs);
YamlIO.mapOptional("legalized", MF.Legalized);
YamlIO.mapOptional("regBankSelected", MF.RegBankSelected);
YamlIO.mapOptional("selected", MF.Selected);
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -335,6 +335,9 @@ class MachineBasicBlock (public)
return make_range(livein_begin(), livein_end());
}
+ /// Remove entry from the livein set and return iterator to the next.
+ livein_iterator removeLiveIn(livein_iterator I);
+
/// Get the clobber mask for the start of this basic block. Funclets use this
/// to prevent register allocation across funclet transitions.
const uint32_t *getBeginClobberMask(const TargetRegisterInfo *TRI) const;
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineConstantPool.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineConstantPool.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineConstantPool.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -1,4 +1,4 @@
-//===-- CodeGen/MachineConstantPool.h - Abstract Constant Pool --*- C++ -*-===//
+//===- CodeGen/MachineConstantPool.h - Abstract Constant Pool ---*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -18,29 +18,28 @@
#include "llvm/ADT/DenseSet.h"
#include "llvm/MC/SectionKind.h"
-#include <cassert>
#include <climits>
#include <vector>
namespace llvm {
class Constant;
-class FoldingSetNodeID;
class DataLayout;
-class TargetMachine;
-class Type;
+class FoldingSetNodeID;
class MachineConstantPool;
class raw_ostream;
+class Type;
/// Abstract base class for all machine specific constantpool value subclasses.
///
class MachineConstantPoolValue {
virtual void anchor();
+
Type *Ty;
public:
explicit MachineConstantPoolValue(Type *ty) : Ty(ty) {}
- virtual ~MachineConstantPoolValue() {}
+ virtual ~MachineConstantPoolValue() = default;
/// getType - get type of this MachineConstantPoolValue.
///
@@ -81,6 +80,7 @@ class MachineConstantPoolEntry { (public)
: Alignment(A) {
Val.ConstVal = V;
}
+
MachineConstantPoolEntry(MachineConstantPoolValue *V, unsigned A)
: Alignment(A) {
Val.MachineCPVal = V;
@@ -153,13 +153,12 @@ class MachineConstantPool { (public)
/// print - Used by the MachineFunction printer to print information about
/// constant pool objects. Implemented in MachineFunction.cpp
- ///
void print(raw_ostream &OS) const;
/// dump - Call print(cerr) to be called from the debugger.
void dump() const;
};
-} // End llvm namespace
+} // end namespace llvm
-#endif
+#endif // LLVM_CODEGEN_MACHINECONSTANTPOOL_H
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -1,4 +1,4 @@
-//===-- llvm/CodeGen/MachineFunction.h --------------------------*- C++ -*-===//
+//===- llvm/CodeGen/MachineFunction.h ---------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -18,38 +18,61 @@
#ifndef LLVM_CODEGEN_MACHINEFUNCTION_H
#define LLVM_CODEGEN_MACHINEFUNCTION_H
+#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/ilist.h"
+#include "llvm/ADT/iterator.h"
#include "llvm/ADT/Optional.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/EHPersonalities.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/IR/DebugLoc.h"
+#include "llvm/IR/Instructions.h"
#include "llvm/IR/Metadata.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/ArrayRecycler.h"
+#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Compiler.h"
+#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Recycler.h"
+#include <cassert>
+#include <cstdint>
+#include <memory>
+#include <utility>
+#include <vector>
namespace llvm {
-class Value;
+class BasicBlock;
+class BlockAddress;
+class DataLayout;
+class DIExpression;
+class DILocalVariable;
+class DILocation;
class Function;
-class GCModuleInfo;
-class MachineRegisterInfo;
-class MachineFrameInfo;
+class GlobalValue;
class MachineConstantPool;
+class MachineFrameInfo;
+class MachineFunction;
class MachineJumpTableInfo;
class MachineModuleInfo;
+class MachineRegisterInfo;
class MCContext;
+class MCInstrDesc;
class Pass;
class PseudoSourceValueManager;
+class raw_ostream;
+class SlotIndexes;
class TargetMachine;
-class TargetSubtargetInfo;
class TargetRegisterClass;
-struct MachinePointerInfo;
+class TargetSubtargetInfo;
struct WinEHFuncInfo;
template <> struct ilist_alloc_traits<MachineBasicBlock> {
@@ -137,27 +160,33 @@ class MachineFunctionProperties { (public)
bool hasProperty(Property P) const {
return Properties[static_cast<unsigned>(P)];
}
+
MachineFunctionProperties &set(Property P) {
Properties.set(static_cast<unsigned>(P));
return *this;
}
+
MachineFunctionProperties &reset(Property P) {
Properties.reset(static_cast<unsigned>(P));
return *this;
}
+
/// Reset all the properties.
MachineFunctionProperties &reset() {
Properties.reset();
return *this;
}
+
MachineFunctionProperties &set(const MachineFunctionProperties &MFP) {
Properties |= MFP.Properties;
return *this;
}
+
MachineFunctionProperties &reset(const MachineFunctionProperties &MFP) {
Properties.reset(MFP.Properties);
return *this;
}
+
// Returns true if all properties set in V (i.e. required by a pass) are set
// in this.
bool verifyRequiredProperties(const MachineFunctionProperties &V) const {
@@ -180,18 +209,17 @@ struct SEHHandler {
const BlockAddress *RecoverBA;
};
-
/// This structure is used to retain landing pad info for the current function.
struct LandingPadInfo {
MachineBasicBlock *LandingPadBlock; // Landing pad block.
SmallVector<MCSymbol *, 1> BeginLabels; // Labels prior to invoke.
SmallVector<MCSymbol *, 1> EndLabels; // Labels after invoke.
SmallVector<SEHHandler, 1> SEHHandlers; // SEH handlers active at this lpad.
- MCSymbol *LandingPadLabel; // Label at beginning of landing pad.
- std::vector<int> TypeIds; // List of type ids (filters negative).
+ MCSymbol *LandingPadLabel = nullptr; // Label at beginning of landing pad.
+ std::vector<int> TypeIds; // List of type ids (filters negative).
explicit LandingPadInfo(MachineBasicBlock *MBB)
- : LandingPadBlock(MBB), LandingPadLabel(nullptr) {}
+ : LandingPadBlock(MBB) {}
};
class MachineFunction {
@@ -239,7 +267,7 @@ class MachineFunction {
Recycler<MachineBasicBlock> BasicBlockRecycler;
// List of machine basic blocks in function
- typedef ilist<MachineBasicBlock> BasicBlockListType;
+ using BasicBlockListType = ilist<MachineBasicBlock>;
BasicBlockListType BasicBlocks;
/// FunctionNumber - This provides a unique ID for each function emitted in
@@ -281,7 +309,7 @@ class MachineFunction {
std::vector<LandingPadInfo> LandingPads;
/// Map a landing pad's EH symbol to the call site indexes.
- DenseMap<MCSymbol*, SmallVector<unsigned, 4> > LPadToCallSiteMap;
+ DenseMap<MCSymbol*, SmallVector<unsigned, 4>> LPadToCallSiteMap;
/// Map of invoke call site index values to associated begin EH_LABEL.
DenseMap<MCSymbol*, unsigned> CallSiteMap;
@@ -303,9 +331,6 @@ class MachineFunction {
/// \}
- MachineFunction(const MachineFunction &) = delete;
- void operator=(const MachineFunction&) = delete;
-
/// Clear all the members of this MachineFunction, but the ones used
/// to initialize again the MachineFunction.
/// More specifically, this deallocates all the dynamically allocated
@@ -316,8 +341,8 @@ class MachineFunction {
/// In particular, the XXXInfo data structure.
/// \pre Fn, Target, MMI, and FunctionNumber are properly set.
void init();
-public:
+public:
struct VariableDbgInfo {
const DILocalVariable *Var;
const DIExpression *Expr;
@@ -328,11 +353,13 @@ class MachineFunction {
unsigned Slot, const DILocation *Loc)
: Var(Var), Expr(Expr), Slot(Slot), Loc(Loc) {}
};
- typedef SmallVector<VariableDbgInfo, 4> VariableDbgInfoMapTy;
+ using VariableDbgInfoMapTy = SmallVector<VariableDbgInfo, 4>;
VariableDbgInfoMapTy VariableDbgInfos;
MachineFunction(const Function *Fn, const TargetMachine &TM,
unsigned FunctionNum, MachineModuleInfo &MMI);
+ MachineFunction(const MachineFunction &) = delete;
+ MachineFunction &operator=(const MachineFunction &) = delete;
~MachineFunction();
/// Reset the instance as if it was just created.
@@ -350,19 +377,15 @@ class MachineFunction {
const DataLayout &getDataLayout() const;
/// getFunction - Return the LLVM function that this machine code represents
- ///
const Function *getFunction() const { return Fn; }
/// getName - Return the name of the corresponding LLVM function.
- ///
StringRef getName() const;
/// getFunctionNumber - Return a unique ID for the current function.
- ///
unsigned getFunctionNumber() const { return FunctionNumber; }
/// getTarget - Return the target machine this machine code is compiled with
- ///
const TargetMachine &getTarget() const { return Target; }
/// getSubtarget - Return the subtarget for which this machine code is being
@@ -378,14 +401,12 @@ class MachineFunction {
}
/// getRegInfo - Return information about the registers currently in use.
- ///
MachineRegisterInfo &getRegInfo() { return *RegInfo; }
const MachineRegisterInfo &getRegInfo() const { return *RegInfo; }
/// getFrameInfo - Return the frame info object for the current function.
/// This object contains information about objects allocated on the stack
/// frame of the current function in an abstract way.
- ///
MachineFrameInfo &getFrameInfo() { return *FrameInfo; }
const MachineFrameInfo &getFrameInfo() const { return *FrameInfo; }
@@ -402,7 +423,6 @@ class MachineFunction {
/// getConstantPool - Return the constant pool object for the current
/// function.
- ///
MachineConstantPool *getConstantPool() { return ConstantPool; }
const MachineConstantPool *getConstantPool() const { return ConstantPool; }
@@ -413,11 +433,9 @@ class MachineFunction {
WinEHFuncInfo *getWinEHFuncInfo() { return WinEHInfo; }
/// getAlignment - Return the alignment (log2, not bytes) of the function.
- ///
unsigned getAlignment() const { return Alignment; }
/// setAlignment - Set the alignment (log2, not bytes) of the function.
- ///
void setAlignment(unsigned A) { Alignment = A; }
/// ensureAlignment - Make sure the function is at least 1 << A bytes aligned.
@@ -487,7 +505,6 @@ class MachineFunction {
bool shouldSplitStack() const;
/// getNumBlockIDs - Return the number of MBB ID's allocated.
- ///
unsigned getNumBlockIDs() const { return (unsigned)MBBNumbering.size(); }
/// RenumberBlocks - This discards all of the MachineBasicBlock numbers and
@@ -499,7 +516,6 @@ class MachineFunction {
/// print - Print out the MachineFunction in a format suitable for debugging
/// to the specified stream.
- ///
void print(raw_ostream &OS, const SlotIndexes* = nullptr) const;
/// viewCFG - This function is meant for use from the debugger. You can just
@@ -507,7 +523,6 @@ class MachineFunction {
/// program, displaying the CFG of the current function with the code for each
/// basic block inside. This depends on there being a 'dot' and 'gv' program
/// in your path.
- ///
void viewCFG() const;
/// viewCFGOnly - This function is meant for use from the debugger. It works
@@ -518,7 +533,6 @@ class MachineFunction {
void viewCFGOnly() const;
/// dump - Print the current MachineFunction to cerr, useful for debugger use.
- ///
void dump() const;
/// Run the current MachineFunction through the machine code verifier, useful
@@ -528,10 +542,10 @@ class MachineFunction {
bool AbortOnError = true) const;
// Provide accessors for the MachineBasicBlock list...
- typedef BasicBlockListType::iterator iterator;
- typedef BasicBlockListType::const_iterator const_iterator;
- typedef BasicBlockListType::const_reverse_iterator const_reverse_iterator;
- typedef BasicBlockListType::reverse_iterator reverse_iterator;
+ using iterator = BasicBlockListType::iterator;
+ using const_iterator = BasicBlockListType::const_iterator;
+ using const_reverse_iterator = BasicBlockListType::const_reverse_iterator;
+ using reverse_iterator = BasicBlockListType::reverse_iterator;
/// Support for MachineBasicBlock::getNextNode().
static BasicBlockListType MachineFunction::*
@@ -590,11 +604,9 @@ class MachineFunction {
//===--------------------------------------------------------------------===//
// Internal functions used to automatically number MachineBasicBlocks
- //
/// \brief Adds the MBB to the internal numbering. Returns the unique number
/// assigned to the MBB.
- ///
unsigned addToMBBNumbering(MachineBasicBlock *MBB) {
MBBNumbering.push_back(MBB);
return (unsigned)MBBNumbering.size()-1;
@@ -610,7 +622,6 @@ class MachineFunction {
/// CreateMachineInstr - Allocate a new MachineInstr. Use this instead
/// of `new MachineInstr'.
- ///
MachineInstr *CreateMachineInstr(const MCInstrDesc &MCID, const DebugLoc &DL,
bool NoImp = false);
@@ -623,16 +634,13 @@ class MachineFunction {
MachineInstr *CloneMachineInstr(const MachineInstr *Orig);
/// DeleteMachineInstr - Delete the given MachineInstr.
- ///
void DeleteMachineInstr(MachineInstr *MI);
/// CreateMachineBasicBlock - Allocate a new MachineBasicBlock. Use this
/// instead of `new MachineBasicBlock'.
- ///
MachineBasicBlock *CreateMachineBasicBlock(const BasicBlock *bb = nullptr);
/// DeleteMachineBasicBlock - Delete the given MachineBasicBlock.
- ///
void DeleteMachineBasicBlock(MachineBasicBlock *MBB);
/// getMachineMemOperand - Allocate a new MachineMemOperand.
@@ -653,7 +661,7 @@ class MachineFunction {
MachineMemOperand *getMachineMemOperand(const MachineMemOperand *MMO,
int64_t Offset, uint64_t Size);
- typedef ArrayRecycler<MachineOperand>::Capacity OperandCapacity;
+ using OperandCapacity = ArrayRecycler<MachineOperand>::Capacity;
/// Allocate an array of MachineOperands. This is only intended for use by
/// internal MachineInstr functions.
@@ -700,7 +708,6 @@ class MachineFunction {
//===--------------------------------------------------------------------===//
// Label Manipulation.
- //
/// getJTISymbol - Return the MCSymbol for the specified non-empty jump table.
/// If isLinkerPrivate is specified, an 'l' label is returned, otherwise a
@@ -858,13 +865,16 @@ template <> struct GraphTraits<MachineFunction*> :
static NodeRef getEntryNode(MachineFunction *F) { return &F->front(); }
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef pointer_iterator<MachineFunction::iterator> nodes_iterator;
+ using nodes_iterator = pointer_iterator<MachineFunction::iterator>;
+
static nodes_iterator nodes_begin(MachineFunction *F) {
return nodes_iterator(F->begin());
}
+
static nodes_iterator nodes_end(MachineFunction *F) {
return nodes_iterator(F->end());
}
+
static unsigned size (MachineFunction *F) { return F->size(); }
};
template <> struct GraphTraits<const MachineFunction*> :
@@ -872,37 +882,39 @@ template <> struct GraphTraits<const MachineFunction*>
static NodeRef getEntryNode(const MachineFunction *F) { return &F->front(); }
// nodes_iterator/begin/end - Allow iteration over all nodes in the graph
- typedef pointer_iterator<MachineFunction::const_iterator> nodes_iterator;
+ using nodes_iterator = pointer_iterator<MachineFunction::const_iterator>;
+
static nodes_iterator nodes_begin(const MachineFunction *F) {
return nodes_iterator(F->begin());
}
+
static nodes_iterator nodes_end (const MachineFunction *F) {
return nodes_iterator(F->end());
}
+
static unsigned size (const MachineFunction *F) {
return F->size();
}
};
-
// Provide specializations of GraphTraits to be able to treat a function as a
// graph of basic blocks... and to walk it in inverse order. Inverse order for
// a function is considered to be when traversing the predecessor edges of a BB
// instead of the successor edges.
//
-template <> struct GraphTraits<Inverse<MachineFunction*> > :
- public GraphTraits<Inverse<MachineBasicBlock*> > {
+template <> struct GraphTraits<Inverse<MachineFunction*>> :
+ public GraphTraits<Inverse<MachineBasicBlock*>> {
static NodeRef getEntryNode(Inverse<MachineFunction *> G) {
return &G.Graph->front();
}
};
-template <> struct GraphTraits<Inverse<const MachineFunction*> > :
- public GraphTraits<Inverse<const MachineBasicBlock*> > {
+template <> struct GraphTraits<Inverse<const MachineFunction*>> :
+ public GraphTraits<Inverse<const MachineBasicBlock*>> {
static NodeRef getEntryNode(Inverse<const MachineFunction *> G) {
return &G.Graph->front();
}
};
-} // End llvm namespace
+} // end namespace llvm
-#endif
+#endif // LLVM_CODEGEN_MACHINEFUNCTION_H
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineFunctionInitializer.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineFunctionInitializer.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineFunctionInitializer.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -1,4 +1,4 @@
-//===- MachineFunctionInitializer.h - machine function initializer ---------===//
+//=- MachineFunctionInitializer.h - machine function initializer --*- C++ -*-=//
//
// The LLVM Compiler Infrastructure
//
@@ -25,7 +25,7 @@ class MachineFunctionInitializer {
virtual void anchor();
public:
- virtual ~MachineFunctionInitializer() {}
+ virtual ~MachineFunctionInitializer() = default;
/// Initialize the machine function.
///
@@ -35,4 +35,4 @@ class MachineFunctionInitializer {
} // end namespace llvm
-#endif
+#endif // LLVM_CODEGEN_MACHINEFUNCTIONINITIALIZER_H
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -1,4 +1,4 @@
-//===-- llvm/CodeGen/MachineInstr.h - MachineInstr class --------*- C++ -*-===//
+//===- llvm/CodeGen/MachineInstr.h - MachineInstr class ---------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -17,7 +17,6 @@
#define LLVM_CODEGEN_MACHINEINSTR_H
#include "llvm/ADT/DenseMapInfo.h"
-#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/ADT/iterator_range.h"
@@ -28,19 +27,27 @@
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/Support/ArrayRecycler.h"
#include "llvm/Target/TargetOpcodes.h"
+#include <algorithm>
+#include <cassert>
+#include <cstdint>
+#include <utility>
namespace llvm {
-class StringRef;
template <typename T> class ArrayRef;
-template <typename T> class SmallVectorImpl;
-class DILocalVariable;
class DIExpression;
+class DILocalVariable;
+class MachineBasicBlock;
+class MachineFunction;
+class MachineMemOperand;
+class MachineRegisterInfo;
+class ModuleSlotTracker;
+class raw_ostream;
+template <typename T> class SmallVectorImpl;
+class StringRef;
class TargetInstrInfo;
class TargetRegisterClass;
class TargetRegisterInfo;
-class MachineFunction;
-class MachineMemOperand;
//===----------------------------------------------------------------------===//
/// Representation of each machine instruction.
@@ -53,7 +60,7 @@ class MachineInstr
: public ilist_node_with_parent<MachineInstr, MachineBasicBlock,
ilist_sentinel_tracking<true>> {
public:
- typedef MachineMemOperand **mmo_iterator;
+ using mmo_iterator = MachineMemOperand **;
/// Flags to specify different kinds of comments to output in
/// assembly code. These flags carry semantic information not
@@ -72,43 +79,39 @@ class MachineInstr
BundledPred = 1 << 2, // Instruction has bundled predecessors.
BundledSucc = 1 << 3 // Instruction has bundled successors.
};
+
private:
const MCInstrDesc *MCID; // Instruction descriptor.
- MachineBasicBlock *Parent; // Pointer to the owning basic block.
+ MachineBasicBlock *Parent = nullptr; // Pointer to the owning basic block.
// Operands are allocated by an ArrayRecycler.
- MachineOperand *Operands; // Pointer to the first operand.
- unsigned NumOperands; // Number of operands on instruction.
- typedef ArrayRecycler<MachineOperand>::Capacity OperandCapacity;
+ MachineOperand *Operands = nullptr; // Pointer to the first operand.
+ unsigned NumOperands = 0; // Number of operands on instruction.
+ using OperandCapacity = ArrayRecycler<MachineOperand>::Capacity;
OperandCapacity CapOperands; // Capacity of the Operands array.
- uint8_t Flags; // Various bits of additional
+ uint8_t Flags = 0; // Various bits of additional
// information about machine
// instruction.
- uint8_t AsmPrinterFlags; // Various bits of information used by
+ uint8_t AsmPrinterFlags = 0; // Various bits of information used by
// the AsmPrinter to emit helpful
// comments. This is *not* semantic
// information. Do not use this for
// anything other than to convey comment
// information to AsmPrinter.
- uint8_t NumMemRefs; // Information on memory references.
+ uint8_t NumMemRefs = 0; // Information on memory references.
// Note that MemRefs == nullptr, means 'don't know', not 'no memory access'.
// Calling code must treat missing information conservatively. If the number
// of memory operands required to be precise exceeds the maximum value of
// NumMemRefs - currently 256 - we remove the operands entirely. Note also
// that this is a non-owning reference to a shared copy on write buffer owned
// by the MachineFunction and created via MF.allocateMemRefsArray.
- mmo_iterator MemRefs;
+ mmo_iterator MemRefs = nullptr;
DebugLoc debugLoc; // Source line information.
- MachineInstr(const MachineInstr&) = delete;
- void operator=(const MachineInstr&) = delete;
- // Use MachineFunction::DeleteMachineInstr() instead.
- ~MachineInstr() = delete;
-
// Intrusive list support
friend struct ilist_traits<MachineInstr>;
friend struct ilist_callback_traits<MachineBasicBlock>;
@@ -128,6 +131,11 @@ class MachineInstr
friend class MachineFunction;
public:
+ MachineInstr(const MachineInstr &) = delete;
+ MachineInstr &operator=(const MachineInstr &) = delete;
+ // Use MachineFunction::DeleteMachineInstr() instead.
+ ~MachineInstr() = delete;
+
const MachineBasicBlock* getParent() const { return Parent; }
MachineBasicBlock* getParent() { return Parent; }
@@ -178,7 +186,6 @@ class MachineInstr
Flags &= ~((uint8_t)Flag);
}
-
/// Return true if MI is in a bundle (but not the first MI in a bundle).
///
/// A bundle looks like this before it's finalized:
@@ -263,7 +270,6 @@ class MachineInstr
/// earlier.
///
/// If this method returns, the caller should try to recover from the error.
- ///
void emitError(StringRef Msg) const;
/// Returns the target instruction descriptor of this MachineInstr.
@@ -273,7 +279,6 @@ class MachineInstr
unsigned getOpcode() const { return MCID->Opcode; }
/// Access to explicit operands of the instruction.
- ///
unsigned getNumOperands() const { return NumOperands; }
const MachineOperand& getOperand(unsigned i) const {
@@ -289,8 +294,8 @@ class MachineInstr
unsigned getNumExplicitOperands() const;
/// iterator/begin/end - Iterate over all operands of a machine instruction.
- typedef MachineOperand *mop_iterator;
- typedef const MachineOperand *const_mop_iterator;
+ using mop_iterator = MachineOperand *;
+ using const_mop_iterator = const MachineOperand *;
mop_iterator operands_begin() { return Operands; }
mop_iterator operands_end() { return Operands + NumOperands; }
@@ -713,7 +718,6 @@ class MachineInstr
return hasProperty(MCID::ExtraDefRegAllocReq, Type);
}
-
enum MICheckType {
CheckDefs, // Check all operands for equality
CheckKillDead, // Check all operands including kill / dead markers
@@ -767,6 +771,7 @@ class MachineInstr
/// Returns true if the MachineInstr represents a label.
bool isLabel() const { return isEHLabel() || isGCLabel(); }
+
bool isCFIInstruction() const {
return getOpcode() == TargetOpcode::CFI_INSTRUCTION;
}
@@ -775,6 +780,7 @@ class MachineInstr
bool isPosition() const { return isLabel() || isCFIInstruction(); }
bool isDebugValue() const { return getOpcode() == TargetOpcode::DBG_VALUE; }
+
/// A DBG_VALUE is indirect iff the first operand is a register and
/// the second operand is an immediate.
bool isIndirectDebugValue() const {
@@ -787,29 +793,38 @@ class MachineInstr
bool isKill() const { return getOpcode() == TargetOpcode::KILL; }
bool isImplicitDef() const { return getOpcode()==TargetOpcode::IMPLICIT_DEF; }
bool isInlineAsm() const { return getOpcode() == TargetOpcode::INLINEASM; }
+
bool isMSInlineAsm() const {
return getOpcode() == TargetOpcode::INLINEASM && getInlineAsmDialect();
}
+
bool isStackAligningInlineAsm() const;
InlineAsm::AsmDialect getInlineAsmDialect() const;
+
bool isInsertSubreg() const {
return getOpcode() == TargetOpcode::INSERT_SUBREG;
}
+
bool isSubregToReg() const {
return getOpcode() == TargetOpcode::SUBREG_TO_REG;
}
+
bool isRegSequence() const {
return getOpcode() == TargetOpcode::REG_SEQUENCE;
}
+
bool isBundle() const {
return getOpcode() == TargetOpcode::BUNDLE;
}
+
bool isCopy() const {
return getOpcode() == TargetOpcode::COPY;
}
+
bool isFullCopy() const {
return isCopy() && !getOperand(0).getSubReg() && !getOperand(1).getSubReg();
}
+
bool isExtractSubreg() const {
return getOpcode() == TargetOpcode::EXTRACT_SUBREG;
}
@@ -978,7 +993,6 @@ class MachineInstr
///
/// The flag operand is an immediate that can be decoded with methods like
/// InlineAsm::hasRegClassConstraint().
- ///
int findInlineAsmFlagIdx(unsigned OpIdx, unsigned *GroupNo = nullptr) const;
/// Compute the static register class constraint for operand OpIdx.
@@ -987,7 +1001,6 @@ class MachineInstr
///
/// Returns NULL if the static register class constraint cannot be
/// determined.
- ///
const TargetRegisterClass*
getRegClassConstraint(unsigned OpIdx,
const TargetInstrInfo *TII,
@@ -1328,6 +1341,6 @@ inline raw_ostream& operator<<(raw_ostream &OS, const
return OS;
}
-} // End llvm namespace
+} // end namespace llvm
-#endif
+#endif // LLVM_CODEGEN_MACHINEINSTR_H
Modified: vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBundleIterator.h
==============================================================================
--- vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBundleIterator.h Thu Jun 1 20:46:43 2017 (r319460)
+++ vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBundleIterator.h Thu Jun 1 20:58:36 2017 (r319461)
@@ -15,34 +15,37 @@
#define LLVM_CODEGEN_MACHINEINSTRBUNDLEITERATOR_H
#include "llvm/ADT/ilist.h"
+#include "llvm/ADT/simple_ilist.h"
+#include <cassert>
#include <iterator>
+#include <type_traits>
namespace llvm {
template <class T, bool IsReverse> struct MachineInstrBundleIteratorTraits;
template <class T> struct MachineInstrBundleIteratorTraits<T, false> {
- typedef simple_ilist<T, ilist_sentinel_tracking<true>> list_type;
- typedef typename list_type::iterator instr_iterator;
- typedef typename list_type::iterator nonconst_instr_iterator;
- typedef typename list_type::const_iterator const_instr_iterator;
+ using list_type = simple_ilist<T, ilist_sentinel_tracking<true>>;
+ using instr_iterator = typename list_type::iterator;
+ using nonconst_instr_iterator = typename list_type::iterator;
+ using const_instr_iterator = typename list_type::const_iterator;
};
template <class T> struct MachineInstrBundleIteratorTraits<T, true> {
- typedef simple_ilist<T, ilist_sentinel_tracking<true>> list_type;
- typedef typename list_type::reverse_iterator instr_iterator;
- typedef typename list_type::reverse_iterator nonconst_instr_iterator;
- typedef typename list_type::const_reverse_iterator const_instr_iterator;
+ using list_type = simple_ilist<T, ilist_sentinel_tracking<true>>;
+ using instr_iterator = typename list_type::reverse_iterator;
+ using nonconst_instr_iterator = typename list_type::reverse_iterator;
+ using const_instr_iterator = typename list_type::const_reverse_iterator;
};
template <class T> struct MachineInstrBundleIteratorTraits<const T, false> {
- typedef simple_ilist<T, ilist_sentinel_tracking<true>> list_type;
- typedef typename list_type::const_iterator instr_iterator;
- typedef typename list_type::iterator nonconst_instr_iterator;
- typedef typename list_type::const_iterator const_instr_iterator;
+ using list_type = simple_ilist<T, ilist_sentinel_tracking<true>>;
+ using instr_iterator = typename list_type::const_iterator;
+ using nonconst_instr_iterator = typename list_type::iterator;
+ using const_instr_iterator = typename list_type::const_iterator;
};
template <class T> struct MachineInstrBundleIteratorTraits<const T, true> {
- typedef simple_ilist<T, ilist_sentinel_tracking<true>> list_type;
- typedef typename list_type::const_reverse_iterator instr_iterator;
- typedef typename list_type::reverse_iterator nonconst_instr_iterator;
- typedef typename list_type::const_reverse_iterator const_instr_iterator;
+ using list_type = simple_ilist<T, ilist_sentinel_tracking<true>>;
+ using instr_iterator = typename list_type::const_reverse_iterator;
+ using nonconst_instr_iterator = typename list_type::reverse_iterator;
+ using const_instr_iterator = typename list_type::const_reverse_iterator;
};
template <bool IsReverse> struct MachineInstrBundleIteratorHelper;
@@ -104,27 +107,27 @@ template <> struct MachineInstrBundleIteratorHelper<tr
/// inside bundles (i.e. walk top level MIs only).
template <typename Ty, bool IsReverse = false>
class MachineInstrBundleIterator : MachineInstrBundleIteratorHelper<IsReverse> {
- typedef MachineInstrBundleIteratorTraits<Ty, IsReverse> Traits;
- typedef typename Traits::instr_iterator instr_iterator;
+ using Traits = MachineInstrBundleIteratorTraits<Ty, IsReverse>;
+ using instr_iterator = typename Traits::instr_iterator;
+
instr_iterator MII;
public:
- typedef typename instr_iterator::value_type value_type;
- typedef typename instr_iterator::difference_type difference_type;
- typedef typename instr_iterator::pointer pointer;
- typedef typename instr_iterator::reference reference;
- typedef std::bidirectional_iterator_tag iterator_category;
+ using value_type = typename instr_iterator::value_type;
+ using difference_type = typename instr_iterator::difference_type;
+ using pointer = typename instr_iterator::pointer;
+ using reference = typename instr_iterator::reference;
+ using const_pointer = typename instr_iterator::const_pointer;
+ using const_reference = typename instr_iterator::const_reference;
+ using iterator_category = std::bidirectional_iterator_tag;
- typedef typename instr_iterator::const_pointer const_pointer;
- typedef typename instr_iterator::const_reference const_reference;
-
private:
- typedef typename Traits::nonconst_instr_iterator nonconst_instr_iterator;
- typedef typename Traits::const_instr_iterator const_instr_iterator;
- typedef MachineInstrBundleIterator<
- typename nonconst_instr_iterator::value_type, IsReverse>
- nonconst_iterator;
- typedef MachineInstrBundleIterator<Ty, !IsReverse> reverse_iterator;
+ using nonconst_instr_iterator = typename Traits::nonconst_instr_iterator;
+ using const_instr_iterator = typename Traits::const_instr_iterator;
+ using nonconst_iterator =
+ MachineInstrBundleIterator<typename nonconst_instr_iterator::value_type,
+ IsReverse>;
+ using reverse_iterator = MachineInstrBundleIterator<Ty, !IsReverse>;
public:
MachineInstrBundleIterator(instr_iterator MI) : MII(MI) {
@@ -138,12 +141,14 @@ class MachineInstrBundleIterator : MachineInstrBundleI
"MachineInstrBundleIterator with a "
"bundled MI");
}
+
MachineInstrBundleIterator(pointer MI) : MII(MI) {
// FIXME: This conversion should be explicit.
assert((!MI || !MI->isBundledWithPred()) && "It's not legal to initialize "
"MachineInstrBundleIterator "
"with a bundled MI");
}
+
// Template allows conversion from const to nonconst.
template <class OtherTy>
MachineInstrBundleIterator(
@@ -151,6 +156,7 @@ class MachineInstrBundleIterator : MachineInstrBundleI
typename std::enable_if<std::is_convertible<OtherTy *, Ty *>::value,
void *>::type = nullptr)
: MII(I.getInstrIterator()) {}
+
MachineInstrBundleIterator() : MII(nullptr) {}
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-vendor
mailing list