llvm-project/llvm/lib/Transforms/Scalar
Florian Hahn 3afb974aa5 [LoopInterchange] Preserve ScalarEvolution, by forgetting about interchanged loops.
As preparation for LoopInterchange becoming a loop pass, it needs to
preserve ScalarEvolution. Even though interchanging should not change
the trip count of the loop, it modifies loop entry, latch and exit
blocks.

I added -verify-scev to some loop interchange tests, but the verification does
not catch problems caused by missing invalidation of SE in loop interchange, as
the trip counts themselves do not change. So there might be potential to
make the SE verification covering more stuff in the future.

Reviewers: mkazantsev, efriedma, karthikthecool

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D52026

llvm-svn: 342209
2018-09-14 07:50:20 +00:00
..
ADCE.cpp [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
AlignmentFromAssumptions.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
BDCE.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
CMakeLists.txt [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
CallSiteSplitting.cpp [CallSiteSplitting] Add debug location to created PHI nodes. 2018-09-11 17:55:58 +00:00
ConstantHoisting.cpp Revert "Revert r341269: [Constant Hoisting] Hoisting Constant GEP Expressions" 2018-09-04 22:17:03 +00:00
ConstantProp.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
CorrelatedValuePropagation.cpp [Dominators] Convert existing passes and utils to use the DomTreeUpdater class 2018-08-03 05:08:17 +00:00
DCE.cpp [DCE] Add DebugCounter support 2018-09-13 20:29:50 +00:00
DeadStoreElimination.cpp Test commit 2018-08-17 18:40:41 +00:00
DivRemPairs.cpp Reland r338431: "Add DebugCounters to DivRemPairs" 2018-08-01 23:14:14 +00:00
EarlyCSE.cpp Re-enable "[NFC] Unify guards detection" 2018-08-30 03:39:16 +00:00
FlattenCFGPass.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Float2Int.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
GVN.cpp [NFC] Remove meaningless code from GVN 2018-09-14 04:50:38 +00:00
GVNHoist.cpp [GVNHoist] computeInsertionPoints() miscalculates IDF 2018-09-12 14:28:23 +00:00
GVNSink.cpp [Local] Make DoesKMove required for combineMetadata. 2018-08-24 11:40:04 +00:00
GuardWidening.cpp Re-enable "[NFC] Unify guards detection" 2018-08-30 03:39:16 +00:00
IVUsersPrinter.cpp
IndVarSimplify.cpp [IndVars][NFC] Refactor to make modifications of Changed transparent 2018-09-11 03:57:22 +00:00
InductiveRangeCheckElimination.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
InferAddressSpaces.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
InstSimplifyPass.cpp [instsimplify] Move the instsimplify pass to use more obvious file names 2018-06-29 23:36:03 +00:00
JumpThreading.cpp Re-enable "[NFC] Unify guards detection" 2018-08-30 03:39:16 +00:00
LICM.cpp [LICM] Avoid duplicate work during building AliasSetTracker 2018-09-11 04:07:36 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopDeletion.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopDistribute.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopIdiomRecognize.cpp NFC: remove magic bool in LoopIdiomRecognize 2018-09-07 18:17:59 +00:00
LoopInstSimplify.cpp Update MemorySSA in LoopInstSimplify. 2018-08-22 20:05:21 +00:00
LoopInterchange.cpp [LoopInterchange] Preserve ScalarEvolution, by forgetting about interchanged loops. 2018-09-14 07:50:20 +00:00
LoopLoadElimination.cpp Use SmallPtrSet explicitly for SmallSets with pointer types (NFC). 2018-06-12 11:16:56 +00:00
LoopPassManager.cpp
LoopPredication.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
LoopRerollPass.cpp [LoopReroll] Rewrite induction variable rewriting. 2018-06-22 22:58:55 +00:00
LoopRotation.cpp Refine the loop rotation's API 2018-04-19 20:29:43 +00:00
LoopSimplifyCFG.cpp Update MemorySSA in LoopSimplifyCFG. 2018-08-22 20:10:21 +00:00
LoopSink.cpp LoopSink: Don't sink into blocks without an insertion point (PR38462) 2018-08-29 06:55:27 +00:00
LoopStrengthReduce.cpp [LSR] If no Use is interesting, early return. 2018-07-13 23:40:00 +00:00
LoopUnrollAndJamPass.cpp [UnJ] Improve explicit loop count checks 2018-08-11 07:37:31 +00:00
LoopUnrollPass.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
LoopUnswitch.cpp Update MemorySSA in LoopUnswitch. 2018-09-11 19:19:21 +00:00
LoopVersioningLICM.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LowerAtomic.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
LowerExpectIntrinsic.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
LowerGuardIntrinsic.cpp Re-enable "[NFC] Unify guards detection" 2018-08-30 03:39:16 +00:00
MemCpyOptimizer.cpp [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
MergeICmps.cpp [MergeICmps] Don't crash when memcmp is not available 2018-05-19 12:51:59 +00:00
MergedLoadStoreMotion.cpp [STLExtras] Add size() for ranges, and remove distance() 2018-05-16 23:20:42 +00:00
NaryReassociate.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
NewGVN.cpp [NewGVN] Mark function as changed if we erase instructions. 2018-09-07 11:41:34 +00:00
PartiallyInlineLibCalls.cpp [PartiallyInlineLibCalls] Add DebugCounter support 2018-09-13 20:33:04 +00:00
PlaceSafepoints.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Reassociate.cpp revert r341288 - [Reassociate] swap binop operands to increase factoring potential 2018-09-12 21:29:11 +00:00
Reg2Mem.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
RewriteStatepointsForGC.cpp [Dominators] Convert existing passes and utils to use the DomTreeUpdater class 2018-08-03 05:08:17 +00:00
SCCP.cpp [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
SROA.cpp [SROA] Fix alignment for uses of PHI nodes. 2018-08-30 18:59:24 +00:00
Scalar.cpp [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
Scalarizer.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-20 21:47:29 +00:00
SeparateConstOffsetFromGEP.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch] remove a chain of dead blocks at once 2018-09-04 20:19:41 +00:00
SimplifyCFGPass.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Sink.cpp [IR] Replace `isa<TerminatorInst>` with `isTerminator()`. 2018-08-26 09:51:22 +00:00
SpeculateAroundPHIs.cpp fix comment typo 2018-08-27 14:25:22 +00:00
SpeculativeExecution.cpp Use SmallPtrSet explicitly for SmallSets with pointer types (NFC). 2018-06-12 11:16:56 +00:00
StraightLineStrengthReduce.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
StructurizeCFG.cpp [NFC] Rename the DivergenceAnalysis to LegacyDivergenceAnalysis 2018-08-30 14:21:36 +00:00
TailRecursionElimination.cpp [TailCallElim] Preserve DT and PDT 2018-08-04 08:13:47 +00:00