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

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.