llvm-project/llvm/lib/Transforms/Scalar
Artur Pilipenko 6ec2c5e402 GC-parseable element atomic memcpy/memmove
This change introduces a GC parseable lowering for element atomic
memcpy/memmove intrinsics. This way runtime can provide an
implementation which can take a safepoint during copy operation.

See "GC-parseable element atomic memcpy/memmove" thread on llvm-dev
for the background and details:
https://groups.google.com/g/llvm-dev/c/NnENHzmX-b8/m/3PyN8Y2pCAAJ

Differential Revision: https://reviews.llvm.org/D88861
2020-10-23 14:06:09 -07:00
..
ADCE.cpp DomTree: Extract (mostly) read-only logic into type-erased base classes 2020-10-20 19:53:07 +02:00
AlignmentFromAssumptions.cpp Reland [AssumeBundles] Use operand bundles to encode alignment assumptions 2020-09-12 15:36:06 +02:00
BDCE.cpp [BDCE] SExt -> ZExt when no sign bits is used and instruction has multiple uses 2020-07-10 08:34:53 +01:00
CMakeLists.txt [LoopFlatten] Add a loop-flattening pass 2020-10-01 13:54:45 +01:00
CallSiteSplitting.cpp [CallSite removal][CallSiteSplitting] Use CallBase instead of CallSite. NFC 2020-04-15 15:38:02 -07:00
ConstantHoisting.cpp [Scalar] ConstantHoistingPass - iterate with const references. NFCI. 2020-09-24 18:40:50 +01:00
ConstraintElimination.cpp [NewPM] Port ConstraintElimination to the new pass manager 2020-09-27 11:12:26 -07:00
CorrelatedValuePropagation.cpp [CVP] Allow two transforms in one invocation 2020-09-28 15:11:42 -07:00
DCE.cpp [DIE] Remove DeadInstEliminationPass 2020-09-21 12:12:25 -07:00
DeadStoreElimination.cpp [DSE] Do not scan users of memory terminators for further reads. 2020-10-20 16:55:22 +01:00
DivRemPairs.cpp [ValueTracking] Use assume's noundef operand bundle 2020-10-14 20:16:33 +09:00
EarlyCSE.cpp Break long line accidentally left in the previous commit 2020-09-23 12:24:45 -05:00
FlattenCFGPass.cpp
Float2Int.cpp [Float2Int] Stop passing around a reference to the class member Roots. NFC 2020-04-16 15:24:13 +02:00
GVN.cpp [GVN LoadPRE] Extend the scope of optimization by using context to prove safety of speculation 2020-10-06 09:25:16 +07:00
GVNHoist.cpp NFC: [GVNHoist] Outline functions from the class 2020-08-17 17:40:04 -07:00
GVNSink.cpp Use llvm::is_contained where appropriate (NFC) 2020-07-27 10:20:44 -07:00
GuardWidening.cpp
IVUsersPrinter.cpp
IndVarSimplify.cpp [SCEV][NFC] Cache symbolic max exit count 2020-10-23 12:29:37 +07:00
InductiveRangeCheckElimination.cpp [IRCE] consolidate profitability check 2020-10-22 11:26:45 +07:00
InferAddressSpaces.cpp InferAddressSpaces: Fix assert with unreachable code 2020-09-15 15:48:43 -04:00
InstSimplifyPass.cpp [Bindings] Move LLVMAddInstructionSimplifyPass to Scalar.cpp 2020-09-02 10:35:39 -07:00
JumpThreading.cpp [ValueTracking] Use assume's noundef operand bundle 2020-10-14 20:16:33 +09:00
LICM.cpp [LICM] Don't require AST in LoopPromoter (NFC) 2020-10-13 22:08:49 +02:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp [LoopInfo] empty() -> isInnermost(), add isOutermost() 2020-09-22 23:28:51 +03:00
LoopDeletion.cpp [LoopDeletion] Forget loop before setting values to undef 2020-09-29 10:38:44 +01:00
LoopDistribute.cpp [LoopVersion] Unify SCEVChecks and alias check handling (NFC). 2020-10-15 22:02:17 +01:00
LoopFlatten.cpp [LoopFlatten] Add a loop-flattening pass 2020-10-01 13:54:45 +01:00
LoopFuse.cpp [LoopInfo] empty() -> isInnermost(), add isOutermost() 2020-09-22 23:28:51 +03:00
LoopIdiomRecognize.cpp [SVE]Clarify TypeSize comparisons in llvm/lib/Transforms 2020-10-23 09:15:17 +01:00
LoopInstSimplify.cpp
LoopInterchange.cpp [LoopInterchange][NewPM] Port -loop-interchange to NPM 2020-10-09 09:21:31 -07:00
LoopLoadElimination.cpp [LoopVersion] Unify SCEVChecks and alias check handling (NFC). 2020-10-15 22:02:17 +01:00
LoopPassManager.cpp [NewPM][PassInstrumentation] Add PreservedAnalyses parameter to AfterPass* callbacks 2020-08-21 16:10:42 +07:00
LoopPredication.cpp [SVE]Clarify TypeSize comparisons in llvm/lib/Transforms 2020-10-23 09:15:17 +01:00
LoopRerollPass.cpp [LoopReroll][NewPM] Port -loop-reroll to NPM 2020-09-25 12:09:06 -07:00
LoopRotation.cpp
LoopSimplifyCFG.cpp [LoopInfo] empty() -> isInnermost(), add isOutermost() 2020-09-22 23:28:51 +03:00
LoopSink.cpp
LoopStrengthReduce.cpp [LSR] ignore profitable chain when reg num is not major cost. 2020-10-23 09:35:48 -04:00
LoopUnrollAndJamPass.cpp [LoopUnrollAndJam] Allow unroll and jam loops forced by user. 2020-09-17 19:40:14 +00:00
LoopUnrollPass.cpp [NFC] fix some typos in LoopUnrollPass 2020-10-17 14:20:55 +01:00
LoopUnswitch.cpp [BFI] Make BFI information available through loop passes inside LoopStandardAnalysisResults 2020-09-15 16:16:24 -07:00
LoopVersioningLICM.cpp [LoopVersion] Unify SCEVChecks and alias check handling (NFC). 2020-10-15 22:02:17 +01:00
LowerAtomic.cpp
LowerConstantIntrinsics.cpp Preserve GlobalsAA analysis result in LowerConstantIntrinsics 2020-07-02 15:40:41 +01:00
LowerExpectIntrinsic.cpp Implements [[likely]] and [[unlikely]] in IfStmt. 2020-09-09 20:48:37 +02:00
LowerGuardIntrinsic.cpp
LowerMatrixIntrinsics.cpp [LowerMatrixIntrinsics][NewPM] Fix PreservedAnalyses result 2020-10-21 12:42:16 -07:00
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp [MemCpyOpt] Move GEP during call slot optimization 2020-10-22 20:40:56 +02:00
MergeICmps.cpp [Transforms] visitCmpBlock - don't dereference a dyn_cast<>. NFCI. 2020-10-08 20:18:32 +01:00
MergedLoadStoreMotion.cpp
NaryReassociate.cpp [SVE]Clarify TypeSize comparisons in llvm/lib/Transforms 2020-10-23 09:15:17 +01:00
NewGVN.cpp DomTree: Extract (mostly) read-only logic into type-erased base classes 2020-10-20 19:53:07 +02:00
PartiallyInlineLibCalls.cpp
PlaceSafepoints.cpp [Statepoint] Replace uses of isX functions with idiomatic isa<X> 2020-05-27 18:32:28 -07:00
Reassociate.cpp [DebugInfo] Reduce SalvageDebugInfo() functions 2020-06-08 19:28:18 +01:00
Reg2Mem.cpp
RewriteStatepointsForGC.cpp GC-parseable element atomic memcpy/memmove 2020-10-23 14:06:09 -07:00
SCCP.cpp [ValueTracking] Use assume's noundef operand bundle 2020-10-14 20:16:33 +09:00
SROA.cpp [SROA] rewritePartition()/findCommonType(): if uses have conflicting type, try getTypePartition() before falling back to largest integral use type (PR47592) 2020-10-07 09:20:19 +03:00
Scalar.cpp [LoopInterchange][NewPM] Port -loop-interchange to NPM 2020-10-09 09:21:31 -07:00
Scalarizer.cpp [Scalarizer] Avoid changing name of non-instructions 2020-09-15 14:15:50 +02:00
SeparateConstOffsetFromGEP.cpp Remove getNumUses() comparisons (NFC) 2020-05-02 11:05:19 +02:00
SimpleLoopUnswitch.cpp [LoopInfo] empty() -> isInnermost(), add isOutermost() 2020-09-22 23:28:51 +03:00
SimplifyCFGPass.cpp Revert "Revert "SimplifyCFG: Clean up optforfuzzing implementation"" 2020-10-21 17:08:56 -07:00
Sink.cpp Sink: Handle instruction sink when a user is dead 2020-10-09 16:20:26 -07:00
SpeculateAroundPHIs.cpp [NFC][CostModel] Add TargetCostKind to relevant APIs 2020-05-05 10:35:54 +01:00
SpeculativeExecution.cpp SpeculativeExecution: Fix for logic change introduced in D81730. 2020-07-09 15:45:23 +03:00
StraightLineStrengthReduce.cpp
StructurizeCFG.cpp [LowerSwitch][NewPM] Port lowerswitch to NPM 2020-09-15 18:18:31 -07:00
TailRecursionElimination.cpp [TRE][NFC] Refactor Basic Block Processing 2020-09-25 16:01:05 -07:00
WarnMissedTransforms.cpp [TTI] Clean up includes (NFC). 2020-04-19 20:11:59 +01:00