llvm-project/llvm/lib/Transforms/Scalar
Florian Hahn 6feb637124 [LoopInterchange] Preserve LCSSA.
This patch extends LoopInterchange to move LCSSA to the right place
after interchanging. This is required for LoopInterchange to become a
function pass.

An alternative to the manual moving of the PHIs, we could also re-form
the LCSSA phis for a set of interchanged loops, but that's more
expensive.

Reviewers: efriedma, mcrosier, davide

Reviewed By: efriedma

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

llvm-svn: 343132
2018-09-26 19:34:25 +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 "[ConstHoist] Do not rebase single (or few) dependent constant"" 2018-09-26 00:59:09 +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 [EarlyCSEwMemorySSA] Add MSSA verification and tests to make EarlyCSE failures easier to track. 2018-09-17 22:35:21 +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] Remove unreasonable checks in rewriteLoopExitValues 2018-09-18 04:57:18 +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 Merge clang's isRepeatedBytePattern with LLVM's isBytewiseValue 2018-09-21 05:17:42 +00:00
LoopInstSimplify.cpp Update MemorySSA in LoopInstSimplify. 2018-08-22 20:05:21 +00:00
LoopInterchange.cpp [LoopInterchange] Preserve LCSSA. 2018-09-26 19:34:25 +00:00
LoopLoadElimination.cpp Use SmallPtrSet explicitly for SmallSets with pointer types (NFC). 2018-06-12 11:16:56 +00:00
LoopPassManager.cpp [New PM] Introducing PassInstrumentation framework 2018-09-20 17:08:45 +00:00
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 Merge clang's isRepeatedBytePattern with LLVM's isBytewiseValue 2018-09-21 05:17:42 +00:00
MergeICmps.cpp Re-submitting changes in D51550 because it failed to patch. 2018-09-24 20:47:12 +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 [IPSCCP] Fix a problem with removing labels in a switch with undef condition 2018-09-20 09:00:17 +00:00
SROA.cpp [SROA] Fix alignment for uses of PHI nodes. 2018-08-30 18:59:24 +00:00
Scalar.cpp [LLVM-C][OCaml] Add UnifyFunctionExitNodes pass to C and OCaml APIs 2018-09-18 13:36:03 +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 revert changes from r342722 2018-09-21 16:31:51 +00:00
TailRecursionElimination.cpp [TailCallElim] Preserve DT and PDT 2018-08-04 08:13:47 +00:00