Adrian Prantl cb7b458c96 Remove the obsolete BlockByRefStruct flag from LLVM IR 6 anni fa
..
AsmPrinter cb7b458c96 Remove the obsolete BlockByRefStruct flag from LLVM IR 6 anni fa
GlobalISel e5fe899c4b [GlobalISel] Partially revert r371901. 6 anni fa
MIRParser 6f4a6a2f5d [Alignment][NFC] Remove LogAlignment functions 6 anni fa
SelectionDAG 4b3a651108 [DAGCombine][ARM][X86] (sub Carry, X) -> (addcarry (sub 0, X), 0, Carry) fold 6 anni fa
AggressiveAntiDepBreaker.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
AggressiveAntiDepBreaker.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
AllocationOrder.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
AllocationOrder.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
Analysis.cpp 57c068763a IR. Change strip* family of functions to not look through aliases. 6 anni fa
AntiDepBreaker.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
AtomicExpandPass.cpp 65de13b975 AtomicExpand: Don't crash on non-0 alloca 6 anni fa
BasicTargetTransformInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
BranchFolding.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
BranchFolding.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
BranchRelaxation.cpp 6f4a6a2f5d [Alignment][NFC] Remove LogAlignment functions 6 anni fa
BreakFalseDeps.cpp 2a9f347230 [BreakFalseDeps] fix typos/grammar in documentation comment; NFC 6 anni fa
BuiltinGCs.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CFIInstrInserter.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
CMakeLists.txt be9f44f943 Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 6 anni fa
CalcSpillWeights.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
CallingConvLower.cpp f7cb8ff4b2 [AMDGPU] Adjust number of SGPRs available in Calling Convention 6 anni fa
CodeGen.cpp be9f44f943 Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 6 anni fa
CodeGenPrepare.cpp 3110f6b18e [CGP] Ensure sinking multiple instructions does not invalidate dominance checks 6 anni fa
CriticalAntiDepBreaker.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
CriticalAntiDepBreaker.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
DFAPacketizer.cpp 4c2266ddea [DFAPacketizer] Reapply: Track resources for packetized instructions 6 anni fa
DeadMachineInstructionElim.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
DetectDeadLanes.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
DwarfEHPrepare.cpp d5c86e9e6d Add an optional list of blocks to avoid when looking for a path in isPotentiallyReachable. 6 anni fa
EarlyIfConversion.cpp 2bfdb54bfd [CodeGen] Add a pass to do block predication on SSA machine IR. 6 anni fa
EdgeBundles.cpp c3f211d97b Fix parameter name comments using clang-tidy. NFC. 6 anni fa
ExecutionDomainFix.cpp 3228596b4c Cleanup: llvm::bsearch -> llvm::partition_point after r364719 6 anni fa
ExpandMemCmp.cpp be9f44f943 Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 6 anni fa
ExpandPostRAPseudos.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
ExpandReductions.cpp a813b38069 Change semantics of fadd/fmul vector reductions. 6 anni fa
FEntryInserter.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
FaultMaps.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
FinalizeISel.cpp 5b56cc85b0 Rename ExpandISelPseudo->FinalizeISel, delay register reservation 6 anni fa
FuncletLayout.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
GCMetadata.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
GCMetadataPrinter.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
GCRootLowering.cpp 6c00b3f35f [opaque pointer types] Pass value type to LoadInst creation. 6 anni fa
GCStrategy.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
GlobalMerge.cpp 46622a5909 Use llvm::stable_sort 6 anni fa
HardwareLoops.cpp ef512ca8e6 Change TargetLibraryInfo analysis passes to always require Function 6 anni fa
IfConversion.cpp 62632b78b0 [IfConversion] Correctly handle cases where analyzeBranch fails. 6 anni fa
ImplicitNullChecks.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
IndirectBrExpandPass.cpp e3696113b6 Implementation of asm-goto support in LLVM 6 anni fa
InlineSpiller.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
InterferenceCache.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
InterferenceCache.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
InterleavedAccessPass.cpp 1dc854412e [InterleavedAccessPass] Don't increase the number of bytes loaded. 6 anni fa
InterleavedLoadCombinePass.cpp 5c8f5359c9 InterleavedLoadCombine - merge isa<> and dyn_cast<> duplicates. NFCI. 6 anni fa
IntrinsicLowering.cpp 6029aa8149 [opaque pointer types] Pass function types to CallInst creation. 6 anni fa
LLVMBuild.txt 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LLVMTargetMachine.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
LatencyPriorityQueue.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LazyMachineBlockFrequencyInfo.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
LexicalScopes.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LiveDebugValues.cpp 5a29b5f7db Revert "[AArch64][DebugInfo] Do not recompute CalleeSavedStackSize" 6 anni fa
LiveDebugVariables.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveDebugVariables.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LiveInterval.cpp b50690c7bb LiveIntervals: Remove assertion 6 anni fa
LiveIntervalUnion.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LiveIntervals.cpp afadd2da10 Temporarily revert r371640 "LiveIntervals: Split live intervals on multiple dead defs". 6 anni fa
LivePhysRegs.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveRangeCalc.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
LiveRangeCalc.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LiveRangeEdit.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveRangeShrink.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveRangeUtils.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LiveRegMatrix.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveRegUnits.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LiveStacks.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
LiveVariables.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
LocalStackSlotAllocation.cpp a13d6ea322 [LLVM][Alignment] Introduce Alignment In MachineFrameInfo 6 anni fa
LoopTraversal.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LowLevelType.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
LowerEmuTLS.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MIRCanonicalizerPass.cpp 7d01918ed0 [mir-canon][NFC] Move MIR vreg renaming code to separate file for better reuse. 6 anni fa
MIRNamerPass.cpp 9a66698dc0 [MIR] MIRNamer pass for improving MIR test authoring experience. 6 anni fa
MIRPrinter.cpp abcb2968ab [Alignment][NFC] Align(1) to Align::None() conversions 6 anni fa
MIRPrintingPass.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MIRVRegNamerUtils.cpp 7d01918ed0 [mir-canon][NFC] Move MIR vreg renaming code to separate file for better reuse. 6 anni fa
MIRVRegNamerUtils.h 1d7df59e12 Hide implementation details in namespaces. 6 anni fa
MachineBasicBlock.cpp abcb2968ab [Alignment][NFC] Align(1) to Align::None() conversions 6 anni fa
MachineBlockFrequencyInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineBlockPlacement.cpp 6f4a6a2f5d [Alignment][NFC] Remove LogAlignment functions 6 anni fa
MachineBranchProbabilityInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineCSE.cpp a1318bfa1b [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations 6 anni fa
MachineCombiner.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
MachineCopyPropagation.cpp 76de8c13bc Revert "[MachineCopyPropagation] Remove redundant copies after TailDup via machine-cp" 6 anni fa
MachineDominanceFrontier.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineDominators.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineFrameInfo.cpp 38b29833fc [Alignment][NFC] Use Align::None instead of 1 6 anni fa
MachineFunction.cpp 75f0bef615 [Alignment] Use llvm::Align in MachineFunction and TargetLowering - fixes mir parsing 6 anni fa
MachineFunctionPass.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineFunctionPrinterPass.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineInstr.cpp a1318bfa1b [DebugInfo] LiveDebugValues: correctly discriminate kinds of variable locations 6 anni fa
MachineInstrBundle.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
MachineLICM.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
MachineLoopInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineModuleInfo.cpp 9c0082921f [CodeGen] Require a name for a block addr target 6 anni fa
MachineModuleInfoImpls.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineOperand.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
MachineOptimizationRemarkEmitter.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
MachineOutliner.cpp 856ec6e1b0 [Backend] Keep call site info valid through the backend 6 anni fa
MachinePipeliner.cpp db3db2fda0 [ModuloSchedule] Introduce PeelingModuloScheduleExpander 6 anni fa
MachinePostDominators.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineRegionInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
MachineRegisterInfo.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
MachineSSAUpdater.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
MachineScheduler.cpp ff031dcbec [ScheduleDAGMILive] Fix typo in comment. 6 anni fa
MachineSink.cpp 597125079b [DebugInfo] Make postra sinking of DBG_VALUEs subregister-safe 6 anni fa
MachineTraceMetrics.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
MachineVerifier.cpp 9a368b2132 [GlobalISel] Introduce a G_DYN_STACKALLOC opcode to represent dynamic allocas. 6 anni fa
MacroFusion.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
ModuloSchedule.cpp 1d7df59e12 Hide implementation details in namespaces. 6 anni fa
OptimizePHIs.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
PHIElimination.cpp 7ae04842e0 [AMDGPU]: PHI Elimination hooks added for custom COPY insertion. Fixed 6 anni fa
PHIEliminationUtils.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
PHIEliminationUtils.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
ParallelCG.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
PatchableFunction.cpp 75f0bef615 [Alignment] Use llvm::Align in MachineFunction and TargetLowering - fixes mir parsing 6 anni fa
PeepholeOptimizer.cpp 7822759c5f [AMDGPU] Prevent VGPR copies from moving across the EXEC mask definitions 6 anni fa
PostRAHazardRecognizer.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
PostRASchedulerList.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
PreISelIntrinsicLowering.cpp 6c00b3f35f [opaque pointer types] Pass value type to LoadInst creation. 6 anni fa
ProcessImplicitDefs.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
PrologEpilogInserter.cpp a13d6ea322 [LLVM][Alignment] Introduce Alignment In MachineFrameInfo 6 anni fa
PseudoSourceValue.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
README.txt bb3c65904e Test commit: Removed trailing space in .txt file. 6 anni fa
ReachingDefAnalysis.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
RegAllocBase.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
RegAllocBase.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
RegAllocBasic.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
RegAllocFast.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
RegAllocGreedy.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
RegAllocPBQP.cpp 114087caa6 [llvm] Migrate llvm::make_unique to std::make_unique 6 anni fa
RegUsageInfoCollector.cpp 5a29b5f7db Revert "[AArch64][DebugInfo] Do not recompute CalleeSavedStackSize" 6 anni fa
RegUsageInfoPropagate.cpp 4810b0f787 [IPRA] Don't rely on non-exact function definitions 6 anni fa
RegisterClassInfo.cpp ce8c51822a [ARM] Thumb2: favor R4-R7 over R12/LR in allocation order when opt for minsize 6 anni fa
RegisterCoalescer.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
RegisterCoalescer.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
RegisterPressure.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
RegisterScavenging.cpp 7027c1d0ab RegScavenger: Use Register 6 anni fa
RegisterUsageInfo.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
RenameIndependentSubregs.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
ResetMachineFunctionPass.cpp 8136aefd77 [ResetMachineFunctionPass] Add visited functions statistics info 6 anni fa
SafeStack.cpp ef512ca8e6 Change TargetLibraryInfo analysis passes to always require Function 6 anni fa
SafeStackColoring.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SafeStackColoring.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SafeStackLayout.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SafeStackLayout.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
ScalarizeMaskedMemIntrin.cpp f1453095a2 [ScalarizeMaskedMemIntrin] Bitcast the mask to the scalar domain and use scalar bit tests for the branches for expandload/compressstore. 6 anni fa
ScheduleDAG.cpp 94ebdffbc8 [ScheduleDAGRRList] Recompute topological ordering on demand. 6 anni fa
ScheduleDAGInstrs.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
ScheduleDAGPrinter.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
ScoreboardHazardRecognizer.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
ShadowStackGCLowering.cpp 6c00b3f35f [opaque pointer types] Pass value type to LoadInst creation. 6 anni fa
ShrinkWrap.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
SjLjEHPrepare.cpp 1df2388495 Added address-space mangling for stack related intrinsics 6 anni fa
SlotIndexes.cpp 9aa1807084 SlotIndexes: delete unused functions 6 anni fa
SpillPlacement.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SpillPlacement.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
Spiller.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
SplitKit.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
SplitKit.h 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
StackColoring.cpp 46622a5909 Use llvm::stable_sort 6 anni fa
StackMapLivenessAnalysis.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
StackMaps.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
StackProtector.cpp 1733b9a34a StackProtector: Use PointerMayBeCaptured 6 anni fa
StackSlotColoring.cpp c7a3c5c5d1 Finish moving TargetRegisterInfo::isVirtualRegister() and friends to llvm::Register as started by r367614. NFC 6 anni fa
SwiftErrorValueTracking.cpp a3af6bb71d GlobalISel: Remove unsigned variant of SrcOp 6 anni fa
SwitchLoweringUtils.cpp 4878bbd9a2 [GlobalISel][IRTranslator] Change switch table translation to generate jump tables and range checks. 6 anni fa
TailDuplication.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
TailDuplicator.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
TargetFrameLoweringImpl.cpp 5a29b5f7db Revert "[AArch64][DebugInfo] Do not recompute CalleeSavedStackSize" 6 anni fa
TargetInstrInfo.cpp 49b6fe0ba5 [NFC] Make the describeLoadedValue() hook return machine operand objects 6 anni fa
TargetLoweringBase.cpp 464b4d0dfb [SVE][MVT] Fixed-length vector MVT ranges 6 anni fa
TargetLoweringObjectFileImpl.cpp a8e37d1bbb AArch64: support arm64_32, an ILP32 slice for watchOS. 6 anni fa
TargetOptionsImpl.cpp 6b547686c5 Update the file headers across all of the LLVM projects in the monorepo 6 anni fa
TargetPassConfig.cpp be9f44f943 Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 6 anni fa
TargetRegisterInfo.cpp 96b3b7ad39 [TargetRegisterInfo] Remove SVT argument from getCommonSubClass. 6 anni fa
TargetSchedule.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
TargetSubtargetInfo.cpp 99a4c92625 [Subtarget] Merge ProcSched and ProcDesc arrays in MCSubtargetInfo into a single array. 6 anni fa
TwoAddressInstructionPass.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
UnreachableBlockElim.cpp 57a8129407 Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 6 anni fa
ValueTypes.cpp 7adbcdcc55 [ValueTypes] Add v16f16 and v32f16 to EVT::getEVTString and Tablegen's getEnumName 6 anni fa
VirtRegMap.cpp 25c2d2fbd9 Eliminate implicit Register->unsigned conversions in VirtRegMap. NFC 6 anni fa
WasmEHPrepare.cpp 421f4e7b6a [WebAssembly] Make rethrow take an except_ref type argument 6 anni fa
WinEHPrepare.cpp c3f211d97b Fix parameter name comments using clang-tidy. NFC. 6 anni fa
XRayInstrumentation.cpp 856ec6e1b0 [Backend] Keep call site info valid through the backend 6 anni fa

README.txt

//===---------------------------------------------------------------------===//

Common register allocation / spilling problem:

mul lr, r4, lr
str lr, [sp, #+52]
ldr lr, [r1, #+32]
sxth r3, r3
ldr r4, [sp, #+52]
mla r4, r3, lr, r4

can be:

mul lr, r4, lr
mov r4, lr
str lr, [sp, #+52]
ldr lr, [r1, #+32]
sxth r3, r3
mla r4, r3, lr, r4

and then "merge" mul and mov:

mul r4, r4, lr
str r4, [sp, #+52]
ldr lr, [r1, #+32]
sxth r3, r3
mla r4, r3, lr, r4

It also increase the likelihood the store may become dead.

//===---------------------------------------------------------------------===//

bb27 ...
...
%reg1037 = ADDri %reg1039, 1
%reg1038 = ADDrs %reg1032, %reg1039, %noreg, 10
Successors according to CFG: 0x8b03bf0 (#5)

bb76 (0x8b03bf0, LLVM BB @0x8b032d0, ID#5):
Predecessors according to CFG: 0x8b0c5f0 (#3) 0x8b0a7c0 (#4)
%reg1039 = PHI %reg1070, mbb, %reg1037, mbb

Note ADDri is not a two-address instruction. However, its result %reg1037 is an
operand of the PHI node in bb76 and its operand %reg1039 is the result of the
PHI node. We should treat it as a two-address code and make sure the ADDri is
scheduled after any node that reads %reg1039.

//===---------------------------------------------------------------------===//

Use local info (i.e. register scavenger) to assign it a free register to allow
reuse:
ldr r3, [sp, #+4]
add r3, r3, #3
ldr r2, [sp, #+8]
add r2, r2, #2
ldr r1, [sp, #+4] <==
add r1, r1, #1
ldr r0, [sp, #+4]
add r0, r0, #2

//===---------------------------------------------------------------------===//

LLVM aggressively lift CSE out of loop. Sometimes this can be negative side-
effects:

R1 = X + 4
R2 = X + 7
R3 = X + 15

loop:
load [i + R1]
...
load [i + R2]
...
load [i + R3]

Suppose there is high register pressure, R1, R2, R3, can be spilled. We need
to implement proper re-materialization to handle this:

R1 = X + 4
R2 = X + 7
R3 = X + 15

loop:
R1 = X + 4 @ re-materialized
load [i + R1]
...
R2 = X + 7 @ re-materialized
load [i + R2]
...
R3 = X + 15 @ re-materialized
load [i + R3]

Furthermore, with re-association, we can enable sharing:

R1 = X + 4
R2 = X + 7
R3 = X + 15

loop:
T = i + X
load [T + 4]
...
load [T + 7]
...
load [T + 15]
//===---------------------------------------------------------------------===//

It's not always a good idea to choose rematerialization over spilling. If all
the load / store instructions would be folded then spilling is cheaper because
it won't require new live intervals / registers. See 2003-05-31-LongShifts for
an example.

//===---------------------------------------------------------------------===//

With a copying garbage collector, derived pointers must not be retained across
collector safe points; the collector could move the objects and invalidate the
derived pointer. This is bad enough in the first place, but safe points can
crop up unpredictably. Consider:

%array = load { i32, [0 x %obj] }** %array_addr
%nth_el = getelementptr { i32, [0 x %obj] }* %array, i32 0, i32 %n
%old = load %obj** %nth_el
%z = div i64 %x, %y
store %obj* %new, %obj** %nth_el

If the i64 division is lowered to a libcall, then a safe point will (must)
appear for the call site. If a collection occurs, %array and %nth_el no longer
point into the correct object.

The fix for this is to copy address calculations so that dependent pointers
are never live across safe point boundaries. But the loads cannot be copied
like this if there was an intervening store, so may be hard to get right.

Only a concurrent mutator can trigger a collection at the libcall safe point.
So single-threaded programs do not have this requirement, even with a copying
collector. Still, LLVM optimizations would probably undo a front-end's careful
work.

//===---------------------------------------------------------------------===//

The ocaml frametable structure supports liveness information. It would be good
to support it.

//===---------------------------------------------------------------------===//

The FIXME in ComputeCommonTailLength in BranchFolding.cpp needs to be
revisited. The check is there to work around a misuse of directives in inline
assembly.

//===---------------------------------------------------------------------===//

It would be good to detect collector/target compatibility instead of silently
doing the wrong thing.

//===---------------------------------------------------------------------===//

It would be really nice to be able to write patterns in .td files for copies,
which would eliminate a bunch of explicit predicates on them (e.g. no side
effects). Once this is in place, it would be even better to have tblgen
synthesize the various copy insertion/inspection methods in TargetInstrInfo.

//===---------------------------------------------------------------------===//

Stack coloring improvements:

1. Do proper LiveStacks analysis on all stack objects including those which are
not spill slots.
2. Reorder objects to fill in gaps between objects.
e.g. 4, 1, , 4, 1, 1, 1, , 4 => 4, 1, 1, 1, 1, 4, 4

//===---------------------------------------------------------------------===//

The scheduler should be able to sort nearby instructions by their address. For
example, in an expanded memset sequence it's not uncommon to see code like this:

movl $0, 4(%rdi)
movl $0, 8(%rdi)
movl $0, 12(%rdi)
movl $0, 0(%rdi)

Each of the stores is independent, and the scheduler is currently making an
arbitrary decision about the order.

//===---------------------------------------------------------------------===//

Another opportunitiy in this code is that the $0 could be moved to a register:

movl $0, 4(%rdi)
movl $0, 8(%rdi)
movl $0, 12(%rdi)
movl $0, 0(%rdi)

This would save substantial code size, especially for longer sequences like
this. It would be easy to have a rule telling isel to avoid matching MOV32mi
if the immediate has more than some fixed number of uses. It's more involved
to teach the register allocator how to do late folding to recover from
excessive register pressure.