llvm-project/llvm/lib/Transforms/Scalar
Max Kazantsev cb8e240334 [LoopSimplifyCFG] Don't delete LCSSA Phis
When removing edges, we also update Phi inputs and may end up removing
a Phi if it has only one input. We should not do it for edges that leave the current
loop because these Phis are LCSSA Phis and need to be preserved.

Thanks @dmgreen	for finding this!

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

llvm-svn: 347484
2018-11-23 07:56:47 +00:00
..
ADCE.cpp [TI removal] Make variables declared as `TerminatorInst` and initialized 2018-10-15 10:04:59 +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 Recommit r346483: [CallSiteSplitting] Only record conditions up to the IDom(call site). 2018-11-14 10:04:30 +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 Introduce DebugCounter into ConstProp pass 2018-11-13 00:31:22 +00:00
CorrelatedValuePropagation.cpp [CorrelatedValuePropagation] Preserve debug locations (PR38178) 2018-11-18 00:29:58 +00:00
DCE.cpp [DCE] Add DebugCounter support 2018-09-13 20:29:50 +00:00
DeadStoreElimination.cpp [TI removal] Make variables declared as `TerminatorInst` and initialized 2018-10-15 10:04:59 +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 [TI removal] Remove `TerminatorInst` from GVN.h and GVN.cpp. 2018-10-15 10:00:15 +00:00
GVNHoist.cpp [TI removal] Make `getTerminator()` return a generic `Instruction`. 2018-10-15 10:42:50 +00:00
GVNSink.cpp Use llvm::copy. NFC 2018-11-17 01:44:25 +00:00
GuardWidening.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00
IVUsersPrinter.cpp
IndVarSimplify.cpp Return "[IndVars] Smart hard uses detection" 2018-11-08 11:54:35 +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 [CSP, Cloning] Update DuplicateInstructionsInSplitBetween to use DomTreeUpdater. 2018-11-13 17:54:43 +00:00
LICM.cpp Revert "[LICM] Make LICM able to hoist phis" 2018-11-19 16:51:57 +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 [InstCombine] Cleanup libfunc attribute inferring 2018-10-16 21:18:31 +00:00
LoopInstSimplify.cpp Update MemorySSA in LoopInstSimplify. 2018-08-22 20:05:21 +00:00
LoopInterchange.cpp [LoopInterchange] Support reductions across inner and outer loop. 2018-11-08 20:44:19 +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 [LoopPredication] add some simple stats 2018-10-17 09:02:54 +00:00
LoopRerollPass.cpp [LoopReroll] Rewrite induction variable rewriting. 2018-06-22 22:58:55 +00:00
LoopRotation.cpp Update MemorySSA in LoopRotate. 2018-10-24 22:46:45 +00:00
LoopSimplifyCFG.cpp [LoopSimplifyCFG] Don't delete LCSSA Phis 2018-11-23 07:56:47 +00:00
LoopSink.cpp [LoopSink] Add preheader to alias set 2018-11-20 16:49:07 +00:00
LoopStrengthReduce.cpp [LSR] Combine unfolded offset into invariant register 2018-11-08 09:01:19 +00:00
LoopUnrollAndJamPass.cpp [UnJ] Improve explicit loop count checks 2018-08-11 07:37:31 +00:00
LoopUnrollPass.cpp [LoopUnroll] allow customization for new-pass-manager version of LoopUnroll 2018-10-31 14:33:14 +00:00
LoopUnswitch.cpp [NFC] Make LoopSafetyInfo abstract to allow alternative implementations 2018-10-16 08:31:05 +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 [MergeICmps] Do not perform the transformation if GEP is used outside of block 2018-11-05 18:16:32 +00:00
MergedLoadStoreMotion.cpp [DebugInfo][InstMerge] Fix -debugify for phi node created by -mldst-motion 2018-11-02 18:25:41 +00:00
NaryReassociate.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
NewGVN.cpp Use llvm::copy. NFC 2018-11-17 01:44:25 +00:00
PartiallyInlineLibCalls.cpp [PartiallyInlineLibCalls] Add DebugCounter support 2018-09-13 20:33:04 +00:00
PlaceSafepoints.cpp [TI removal] Make variables declared as `TerminatorInst` and initialized 2018-10-15 10:04:59 +00:00
Reassociate.cpp [FPEnv] Convert more BinaryOperator::isFNeg(...) to m_FNeg(...) 2018-10-24 14:45:18 +00:00
Reg2Mem.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
RewriteStatepointsForGC.cpp [TI removal] Make variables declared as `TerminatorInst` and initialized 2018-10-15 10:04:59 +00:00
SCCP.cpp [IPSCCP,PM] Preserve PDT in the new pass manager. 2018-11-11 20:22:45 +00:00
SROA.cpp [SROA] Use offset sizes from the DataLayout instead of the pointer siezes. 2018-10-30 11:15:04 +00:00
Scalar.cpp [PM] Port Scalarizer to the new pass manager. 2018-11-21 14:00:17 +00:00
Scalarizer.cpp [PM] correcting return value for new-pass-manager version of Scalarizer 2018-11-21 22:01:19 +00:00
SeparateConstOffsetFromGEP.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch] adding cost multiplier to cap exponential unswitch with 2018-11-16 21:16:43 +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 [SLSR] use 'match' to simplify code; NFC 2018-10-23 14:07:39 +00:00
StructurizeCFG.cpp StructurizeCFG: Simplify inserted PHI nodes 2018-10-17 15:37:41 +00:00
TailRecursionElimination.cpp [TI removal] Make variables declared as `TerminatorInst` and initialized 2018-10-15 10:04:59 +00:00