llvm-project/llvm/lib/Transforms/Scalar
Arthur Eubanks ea0e2ca1ac [SROA] Allow SROA on pointers with invariant group intrinsic uses
When we are able to SROA an alloca, we know all uses of it, meaning we
don't have to preserve the invariant group intrinsics and metadata.

It's possible that we could lose information regarding redundant
loads/stores, but that's unlikely to have any real impact since right
now the only user is Clang and vtables.

Reviewed By: rnk

Differential Revision: https://reviews.llvm.org/D99760
2021-04-05 19:53:40 -07:00
..
ADCE.cpp Reapply "[DebugInfo] Handle multiple variable location operands in IR" 2021-03-17 16:45:25 +00:00
AlignmentFromAssumptions.cpp [AssumeBundles] offset should be added to correctly calculate align 2021-04-02 12:32:05 +09:00
AnnotationRemarks.cpp [AnnotationRemarks] Use subprogram location for summary remarks. 2021-03-23 12:05:41 +00:00
BDCE.cpp
CMakeLists.txt [ScalarizeMaskedMemIntrinsic] Move from CodeGen into Transforms 2020-12-08 12:25:58 -05:00
CallSiteSplitting.cpp [Support] Introduce a new InstructionCost class 2020-12-11 08:12:54 +00:00
ConstantHoisting.cpp [ConstantHoisting] Fix bug where constant materialization could insert into EH pad 2021-02-01 11:23:56 -08:00
ConstraintElimination.cpp [ConstraintElimination] Only strip casts preserving the representation. 2021-03-26 20:07:41 +00:00
CorrelatedValuePropagation.cpp [CVP] Remove -cvp-dont-add-nowrap-flags option 2021-03-07 18:19:31 +01:00
DCE.cpp [Scalar] Use range-based for loops (NFC) 2021-02-25 19:54:38 -08:00
DeadStoreElimination.cpp [DSE] Extending isOverwrite to support offsetted fully overlapping stores 2021-03-10 21:09:33 +01:00
DivRemPairs.cpp [ValueTracking] Use assume's noundef operand bundle 2020-10-14 20:16:33 +09:00
EarlyCSE.cpp [gvn] CSE gc.relocates based on meaning, not spelling (try 2) 2021-03-16 10:59:31 -07:00
FlattenCFGPass.cpp [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
Float2Int.cpp [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
GVN.cpp [NFC] Undo some erroneous renamings 2021-04-01 13:10:10 +07:00
GVNHoist.cpp Require chained analyses in BasicAA and AAResults to be transitive 2021-01-11 11:50:07 +01:00
GVNSink.cpp [Transforms] Use llvm::append_range (NFC) 2021-01-20 21:35:54 -08:00
GuardWidening.cpp [llvm] Use llvm::all_of (NFC) 2021-01-19 20:19:17 -08:00
IVUsersPrinter.cpp
IndVarSimplify.cpp [indvars[ Fix pr49802 by checking for SCEVCouldNotCompute 2021-04-01 17:53:44 -07:00
InductiveRangeCheckElimination.cpp [IRCE] Use m_LogicalAnd 2021-03-27 15:23:18 +09:00
InferAddressSpaces.cpp [NewPM] Port infer-address-spaces 2020-12-28 19:58:12 -08:00
InstSimplifyPass.cpp [Bindings] Move LLVMAddInstructionSimplifyPass to Scalar.cpp 2020-09-02 10:35:39 -07:00
JumpThreading.cpp Make FindAvailableLoadedValue TBAA aware 2021-03-24 17:20:26 +00:00
LICM.cpp Plumb TLI through isSafeToExecuteUnconditionally [NFC] 2021-03-24 17:52:04 -07:00
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp [LoopInfo] empty() -> isInnermost(), add isOutermost() 2020-09-22 23:28:51 +03:00
LoopDeletion.cpp [LoopDeletion] Handle inner loops w/untaken backedges 2021-01-22 16:31:29 -08:00
LoopDistribute.cpp [NFC] Reduce include files dependency and AA header cleanup (part 2). 2020-12-17 14:04:48 +03:00
LoopFlatten.cpp [LoopFlatten] Do not report CFG analyses as up-to-date 2021-04-01 15:52:36 +07:00
LoopFuse.cpp [LoopFusion] Bails out if only the second candidate is guarded (PR48060) 2021-04-06 01:08:56 +08:00
LoopIdiomRecognize.cpp Revert "[loop-idiom] Hoist loop memcpys to loop preheader" 2021-03-30 11:47:12 +02:00
LoopInstSimplify.cpp
LoopInterchange.cpp [LoopInterchange] fix tightlyNested() in LoopInterchange legality 2021-03-24 15:49:25 -04:00
LoopLoadElimination.cpp [LoopLoadElim] Pass ScalarEvolution in old pass manager. PR49141 2021-02-15 18:08:23 +07:00
LoopPassManager.cpp [NewPM] Verify LoopAnalysisResults after a loop pass 2021-03-19 14:56:37 -07:00
LoopPredication.cpp [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
LoopRerollPass.cpp [Scalar] Use range-based for loops (NFC) 2021-02-25 19:54:38 -08:00
LoopRotation.cpp [LoopRotate] Add PrepareForLTO stage, avoid rotating with inline cands. 2021-01-19 10:15:29 +00:00
LoopSimplifyCFG.cpp [DominatorTree] Add support for mixed pre/post CFG views. 2021-01-06 14:53:09 -08:00
LoopSink.cpp [llvm] Use set_is_subset (NFC) 2021-02-28 10:59:20 -08:00
LoopStrengthReduce.cpp Reapply "[DebugInfo] Handle multiple variable location operands in IR" 2021-03-17 16:45:25 +00:00
LoopUnrollAndJamPass.cpp [LoopUnrollAndJam] Allow unroll and jam loops forced by user. 2020-09-17 19:40:14 +00:00
LoopUnrollPass.cpp NFC: Migrate LoopUnrollPass to work on InstructionCost 2021-02-04 14:05:40 +00:00
LoopUnswitch.cpp [LoopUnswitch] Use reference variables instead of pointer one 2021-03-29 13:08:46 +01:00
LoopVersioningLICM.cpp [SCEV] Use isa<> pattern for testing for CouldNotCompute [NFC] 2020-11-24 18:47:49 -08:00
LowerAtomic.cpp
LowerConstantIntrinsics.cpp [LowerConstantIntrinsics] Preserve Dominator Tree, if avaliable 2021-01-30 01:14:50 +03:00
LowerExpectIntrinsic.cpp [TargetTransformInfo] move branch probability query from TargetLoweringInfo 2021-03-22 15:55:34 -04:00
LowerGuardIntrinsic.cpp
LowerMatrixIntrinsics.cpp [TTI] Return a TypeSize from getRegisterBitWidth. 2021-03-24 14:45:13 +00:00
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp [MemCpyOpt] Add missing MemorySSAWrapperPass dependency macro 2021-03-16 20:30:00 +01:00
MergeICmps.cpp [Transforms/Scalar] Use range-based for loops (NFC) 2021-02-04 21:18:05 -08:00
MergedLoadStoreMotion.cpp
NaryReassociate.cpp [NARY-REASSOCIATE] Support reassociation of min/max 2021-04-02 15:30:13 +07:00
NewGVN.cpp [llvm] Use set_is_subset (NFC) 2021-02-28 10:59:20 -08:00
PartiallyInlineLibCalls.cpp [PartiallyInlineLibCalls] Preserve Dominator Tree, if avaliable 2021-01-29 01:11:36 +03:00
PlaceSafepoints.cpp [Transforms] Use llvm::append_range (NFC) 2020-12-27 09:57:29 -08:00
Reassociate.cpp [Reassociate] allow or->add with shl operands 2021-02-07 09:45:19 -05:00
Reg2Mem.cpp [Reg2Mem] add support for the new pass manager 2020-11-08 11:14:05 +00:00
RewriteStatepointsForGC.cpp [rs4gc] Use loops instead of straightline code for attribute stripping [nfc] 2021-04-02 09:25:15 -07:00
SCCP.cpp [SCCP] Avoid modifying AdditionalUsers while iterating over it 2021-04-02 19:05:59 +02:00
SROA.cpp [SROA] Allow SROA on pointers with invariant group intrinsic uses 2021-04-05 19:53:40 -07:00
Scalar.cpp [ScalarizeMaskedMemIntrin] Add new PM support 2020-12-08 17:15:22 -05:00
ScalarizeMaskedMemIntrin.cpp Expand masked mem intrinsics correctly wrt big-endian 2021-02-11 08:59:52 +00:00
Scalarizer.cpp [Scalarizer] Use poison as insertelement's placeholder 2021-01-04 00:35:28 +09:00
SeparateConstOffsetFromGEP.cpp SeparateConstOffsetFromGEP::lowerToSingleIndexGEPs - don't use dyn_cast_or_null. NFCI. 2020-12-15 17:27:25 +00:00
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after 431a40e1e2 2021-03-30 19:27:10 -07:00
SimplifyCFGPass.cpp [SimplifyCFG] Change 'LoopHeaders' to be ArrayRef<WeakVH>, not a naked set, thus avoiding dangling pointers 2021-01-23 16:48:35 +03:00
Sink.cpp Sink: Handle instruction sink when a user is dead 2020-10-09 16:20:26 -07:00
SpeculateAroundPHIs.cpp NFC: Migrate SpeculateAroundPHIs to work on InstructionCost 2021-02-02 13:32:45 +00:00
SpeculativeExecution.cpp Reapply "[DebugInfo] Handle multiple variable location operands in IR" 2021-03-17 16:45:25 +00:00
StraightLineStrengthReduce.cpp [Transforms/Scalar] Use range-based for loops (NFC) 2021-02-04 21:18:05 -08:00
StructurizeCFG.cpp [Scalar] Use range-based for loops (NFC) 2021-02-25 19:54:38 -08:00
TailRecursionElimination.cpp [ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of 2021-03-04 11:22:30 -08:00
WarnMissedTransforms.cpp [SVE] Add support for scalable vectors with vectorize.scalable.enable loop attribute 2020-12-02 13:23:43 +00:00