llvm-project/llvm/lib/Transforms/Scalar
Denis Antrushin 99a6e405ed [IRCE] Use SCEVExpander to modify loop bound
IRCE pass checks that it can calculate loop bounds by checking
SCEV availability at loop entry. However it is possible that loop
bound SCEV is loop invariant, but instruction used to compute it
resides within loop. In such case adjusting loop bound in preheader
using IRBuilder leads to malformed SSA.
Use SCEVExpander instead to generate proper instructions.

Reviewed-by: mkazantsev
Differential Revision: https://reviews.llvm.org/D73496
2020-02-06 12:44:43 +03:00
..
ADCE.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
AlignmentFromAssumptions.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
BDCE.cpp Clang-trunk Generates Wrong Debug values with -O1 2019-11-21 13:53:10 -08:00
CMakeLists.txt [Matrix] Add first set of matrix intrinsics and initial lowering pass. 2019-12-12 15:42:18 +00:00
CallSiteSplitting.cpp Add missing includes needed to prune LLVMContext.h include, NFC 2019-11-14 15:23:15 -08:00
ConstantHoisting.cpp [ConstantHoisting] Ignore unreachable bb:s when collecting candidates 2019-12-19 15:07:55 +01:00
ConstantProp.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
CorrelatedValuePropagation.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
DCE.cpp [BasicBlockUtils] Add utility to remove redundant dbg.value instrs 2019-12-16 11:41:21 +01:00
DeadStoreElimination.cpp NFC. Comments cleanup in DSE::memoryIsNotModifiedBetween 2020-01-31 15:22:33 -08:00
DivRemPairs.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
EarlyCSE.cpp [Transforms] Simplify with make_early_inc_range 2020-02-02 00:54:32 -08:00
FlattenCFGPass.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
Float2Int.cpp Add missing includes needed to prune LLVMContext.h include, NFC 2019-11-14 15:23:15 -08:00
GVN.cpp [GVN] Add GVNOption to control load-pre more fine-grained. 2020-02-03 23:00:58 -08:00
GVNHoist.cpp [MemorySSA] Moving at the end often means before terminator. 2019-11-20 17:11:00 -08:00
GVNSink.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
GuardWidening.cpp Broaden the definition of a "widenable branch" 2019-11-21 10:46:16 -08:00
IVUsersPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
IndVarSimplify.cpp [IndVarSimplify] Fix for MemorySSA preserve. 2020-01-23 11:06:16 -08:00
InductiveRangeCheckElimination.cpp [IRCE] Use SCEVExpander to modify loop bound 2020-02-06 12:44:43 +03:00
InferAddressSpaces.cpp Resubmit "[Alignment][NFC] Deprecate CreateMemCpy/CreateMemMove" 2019-12-17 10:07:46 +01:00
InstSimplifyPass.cpp [Utils] Use WeakTrackingVH in vector used as scratch storage. 2020-01-23 16:04:57 -08:00
JumpThreading.cpp Resubmit^2: [JumpThreading] Thread jumps through two basic blocks 2020-02-05 09:23:37 -08:00
LICM.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoopAccessAnalysisPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoopDataPrefetch.cpp Revert "[SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC)." 2020-01-04 18:44:38 +00:00
LoopDeletion.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LoopDistribute.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LoopFuse.cpp [LoopFusion] Move instructions from FC1.GuardBlock to FC0.GuardBlock and 2020-01-30 18:02:22 +00:00
LoopIdiomRecognize.cpp [LoopIdiomRecognize] Teach LoopIdiomRecognize to preserve MemorySSA. 2020-01-23 11:31:12 -08:00
LoopInstSimplify.cpp [Utils] Use WeakTrackingVH in vector used as scratch storage. 2020-01-23 16:04:57 -08:00
LoopInterchange.cpp [LoopInterchange] Improve inner exit loop safety checks. 2019-12-04 17:46:01 +00:00
LoopLoadElimination.cpp Revert "[SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC)." 2020-01-04 18:44:38 +00:00
LoopPassManager.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoopPredication.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopRerollPass.cpp Revert "[SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC)." 2020-01-04 18:44:38 +00:00
LoopRotation.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopSimplifyCFG.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopSink.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LoopStrengthReduce.cpp [LoopStrengthReduce] Teach LoopStrengthReduce to preserve MemorySSA is available. 2020-01-24 10:13:52 -08:00
LoopUnrollAndJamPass.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopUnrollPass.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopUnswitch.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
LoopVersioningLICM.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LowerAtomic.cpp [Transforms] Simplify with make_early_inc_range 2020-02-02 00:54:32 -08:00
LowerConstantIntrinsics.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LowerExpectIntrinsic.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
LowerGuardIntrinsic.cpp Move widenable branch formation into makeGuardControlFlowExplicit helper 2019-11-20 12:54:05 -08:00
LowerMatrixIntrinsics.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LowerWidenableCondition.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MakeGuardsExplicit.cpp D'oh. Fix assert after a84922916e. 2019-11-20 22:22:51 -05:00
MemCpyOptimizer.cpp [MemCpyOpt] Simplify find*Alignment 2020-02-06 06:42:07 +09:00
MergeICmps.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
MergedLoadStoreMotion.cpp [Transforms] Simplify with make_early_inc_range 2020-02-02 00:54:32 -08:00
NaryReassociate.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
NewGVN.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
PartiallyInlineLibCalls.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
PlaceSafepoints.cpp [NFC] Refactor InlineResult for readability 2020-01-15 13:34:20 -08:00
Reassociate.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
Reg2Mem.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
RewriteStatepointsForGC.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
SCCP.cpp [IPSCCP] Use ParamState for arguments at call sites. 2020-01-23 13:55:42 -08:00
SROA.cpp [Alignment][NFC] Use Align with CreateAlignedStore 2020-01-23 17:34:32 +01:00
Scalar.cpp [BasicBlockUtils] Add utility to remove redundant dbg.value instrs 2019-12-16 11:41:21 +01:00
Scalarizer.cpp [Alignment][NFC] Use Align with CreateAlignedStore 2020-01-23 17:34:32 +01:00
SeparateConstOffsetFromGEP.cpp [SeparateConstOffsetFromGEP] Fix: sext(a) + sext(b) -> sext(a + b) matches add and sub instructions with one another 2020-01-17 12:22:52 -05:00
SimpleLoopUnswitch.cpp [NFCI] Update according to style. 2020-02-04 17:11:36 -08:00
SimplifyCFGPass.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
Sink.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
SpeculateAroundPHIs.cpp Rename TTI::getIntImmCost for instructions and intrinsics 2019-12-11 18:00:20 -08:00
SpeculativeExecution.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
StraightLineStrengthReduce.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
StructurizeCFG.cpp Add missing includes needed to prune LLVMContext.h include, NFC 2019-11-14 15:23:15 -08:00
TailRecursionElimination.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00
WarnMissedTransforms.cpp Sink all InitializePasses.h includes 2019-11-13 16:34:37 -08:00