llvm-project/llvm/lib/Transforms/Utils
Florian Hahn 7c0ff64b0f
[LAA] Change to function analysis for new PM.
At the moment, LoopAccessAnalysis is a loop analysis for the new pass
manager. The issue with that is that LAI caches SCEV expressions and
modifications in a loop may impact SCEV expressions in other loops, but
we do not have a convenient way to invalidate LAI for other loops
withing a loop pipeline.

To avoid this issue, turn it into a function analysis which returns a
manager object that keeps track of the individual LAI objects per loop.

Fixes #50940.

Fixes #51669.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D134606
2022-10-01 15:44:27 +01:00
..
AMDGPUEmitPrintf.cpp
ASanStackFrameLayout.cpp
AddDiscriminators.cpp [llvm] Don't use Optional::getValue (NFC) 2022-06-20 22:45:45 -07:00
AssumeBundleBuilder.cpp
BasicBlockUtils.cpp Use PoisonValue instead of UndefValue when RAUWing unreachable code [NFC] 2022-09-10 14:28:01 +01:00
BreakCriticalEdges.cpp [BasicBlockUtils] Allow critical edge splitting with callbr terminators 2022-07-08 09:20:44 +02:00
BuildLibCalls.cpp [InstCombine] Remove assumptions about int having 32 bits 2022-08-16 15:35:08 -06:00
BypassSlowDivision.cpp
CMakeLists.txt [misexpect] Re-implement MisExpect Diagnostics 2022-04-19 21:23:48 +00:00
CallGraphUpdater.cpp Use PoisonValue instead of UndefValue when RAUWing unreachable code [NFC] 2022-09-10 14:28:01 +01:00
CallPromotionUtils.cpp
CanonicalizeAliases.cpp [llvm] Fix comment typos (NFC) 2022-08-07 00:16:14 -07:00
CanonicalizeFreezeInLoops.cpp
CloneFunction.cpp [MemProf] Update metadata during inlining 2022-09-30 19:21:15 -07:00
CloneModule.cpp
CodeExtractor.cpp [Transform] Use range-based for loops (NFC) 2022-08-27 23:54:32 -07:00
CodeLayout.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
CodeMoverUtils.cpp [llvm] Qualify auto in range-based for loops (NFC) 2022-08-13 12:55:42 -07:00
CtorUtils.cpp [GlobalOpt] Enable optimization of constructors with different priorities 2022-05-13 22:19:29 +00:00
Debugify.cpp [Debugify][OriginalDIMode] Make HTML reporting infrastructure more resilient 2022-09-29 16:48:06 +02:00
DemoteRegToStack.cpp
EntryExitInstrumenter.cpp [LegacyPM] Remove {,PostInline}EntryExitInstrumenterPass 2022-07-23 15:30:15 -07:00
EscapeEnumerator.cpp
Evaluator.cpp [Transform] Use range-based for loops (NFC) 2022-08-27 23:54:32 -07:00
FixIrreducible.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
FlattenCFG.cpp [Transform] Use range-based for loops (NFC) 2022-08-27 23:54:32 -07:00
FunctionComparator.cpp [llvm] Handle dso_local_equivalent in FunctionComparator 2022-09-22 18:42:31 +00:00
FunctionImportUtils.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-14 12:51:58 -07:00
GlobalStatus.cpp [GlobalOpt] Perform store->dominated load forwarding for stored once globals 2022-06-24 09:09:26 -07:00
GuardUtils.cpp
HelloWorld.cpp
InjectTLIMappings.cpp
InlineFunction.cpp [MemProf] Update metadata during inlining 2022-09-30 19:21:15 -07:00
InstructionNamer.cpp
IntegerDivision.cpp [IntegerDivision][AMDGPU] Use CreateLogicalOr to block poison propagation. 2022-09-15 09:38:02 -07:00
LCSSA.cpp [LCSSA] Update unreachable uses with poison. 2022-09-04 22:26:18 +01:00
LibCallsShrinkWrap.cpp [iwyu] Move <cmath> out of llvm/Support/MathExtras.h 2022-09-28 20:49:01 +02:00
Local.cpp [SimplifyCFG][TranformUtils]Do not simplify away a trivial basic block if both this block and at least one of its predecessors are loop latches. 2022-09-28 10:48:14 -07:00
LoopPeel.cpp LoopPeel: Pass through AssumptionCache (NFC) 2022-09-26 14:52:59 -04:00
LoopRotationUtils.cpp [LoopRotate] Drop loop dispositions when rotating loops. PR56260 2022-09-19 18:01:02 +07:00
LoopSimplify.cpp Revert "[SimplifyCFG] accumulate bonus insts cost" 2022-09-19 14:46:43 +02:00
LoopUnroll.cpp [LoopUnroll] Forget block and loop dispositions during unrolling. 2022-09-27 08:49:04 +01:00
LoopUnrollAndJam.cpp [llvm] Don't use Optional::getValue (NFC) 2022-06-20 22:45:45 -07:00
LoopUnrollRuntime.cpp [Transforms] Fix comment typos (NFC) 2022-08-07 23:55:24 -07:00
LoopUtils.cpp [LoopDeletion] Clear block & loop dispo cache after breaking backedge. 2022-09-30 11:21:58 +01:00
LoopVersioning.cpp [LAA] Change to function analysis for new PM. 2022-10-01 15:44:27 +01:00
LowerAtomic.cpp [NFC] Switch a few uses of undef to poison as placeholders for unreachable code 2022-07-23 21:50:11 +01:00
LowerGlobalDtors.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
LowerInvoke.cpp
LowerMemIntrinsics.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
LowerSwitch.cpp LowerSwitch: Avoid inserting NewDefault block 2022-04-14 13:30:56 +08:00
MatrixUtils.cpp [Matrix] Refactor tiled loops in a struct. NFC 2022-07-26 11:02:22 -07:00
Mem2Reg.cpp
MemoryOpRemark.cpp
MemoryTaggingSupport.cpp [MTE] [HWASan] unify isInterestingAlloca 2022-09-28 15:52:34 -07:00
MetaRenamer.cpp [llvm] Use std::size instead of llvm::array_lengthof 2022-09-08 09:01:53 -06:00
MisExpect.cpp [llvm][misexpect] Re-enable MisExpect for SampleProfiling 2022-08-26 20:24:10 +00:00
ModuleUtils.cpp [llvm] Use value instead of getValue (NFC) 2022-07-13 23:11:56 -07:00
NameAnonGlobals.cpp [LegacyPM] Remove NameAnonGlobalLegacyPass 2022-07-17 14:38:29 -07:00
PredicateInfo.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
PromoteMemoryToRegister.cpp [Mem2Reg] Consistently preserve nonnull assume for uninit load 2022-07-12 12:53:08 +02:00
RelLookupTableConverter.cpp [RelLookupTableConverter] Bail on invalid pointer size (x32) 2022-08-09 09:36:39 +02:00
SCCPSolver.cpp [SCCP] Make check for unknown/undef in unary op handling more explicit (NFCI) 2022-07-14 10:56:11 +02:00
SSAUpdater.cpp [NFC] Switch a few uses of undef to poison as placeholders for unreachable code 2022-07-30 13:55:56 +01:00
SSAUpdaterBulk.cpp
SampleProfileInference.cpp [llvm] Use range-based for loops (NFC) 2022-09-03 11:17:40 -07:00
SampleProfileLoaderBaseUtil.cpp Remove unneeded cl::ZeroOrMore for cl::opt/cl::list options 2022-06-05 00:31:44 -07:00
SanitizerStats.cpp
ScalarEvolutionExpander.cpp [SCEVExpander] Move LCSSA fixup to ::expand. 2022-09-29 20:49:56 +01:00
SimplifyCFG.cpp Revert "[SimplifyCFG] accumulate bonus insts cost" 2022-09-19 14:46:43 +02:00
SimplifyIndVar.cpp [SCEV] Prove condition invariance via context, try 2 2022-08-22 14:31:19 +07:00
SimplifyLibCalls.cpp [iwyu] Move <cmath> out of llvm/Support/MathExtras.h 2022-09-28 20:49:01 +02:00
SizeOpts.cpp [llvm] Remove unneeded cl::ZeroOrMore for cl::opt options. NFC 2022-06-03 21:59:05 -07:00
SplitModule.cpp [llvm] Qualify auto in range-based for loops (NFC) 2022-08-13 12:55:42 -07:00
StripGCRelocates.cpp [NFC] Rename Instrinsic to Intrinsic 2022-04-25 18:13:23 +01:00
StripNonLineTableDebugInfo.cpp
SymbolRewriter.cpp
UnifyFunctionExitNodes.cpp
UnifyLoopExits.cpp [Transforms] Qualify auto in range-based for loops (NFC) 2022-08-27 21:21:02 -07:00
Utils.cpp [LegacyPM] Remove NameAnonGlobalLegacyPass 2022-07-17 14:38:29 -07:00
VNCoercion.cpp [VNCoercion] Separate constant/non-constant mem intrinsic implementations (NFCI) 2022-06-30 15:26:06 +02:00
ValueMapper.cpp