llvm-project/llvm/lib/Transforms/Scalar
Philip Reames a9633d5f0b [LFTR] Use recomputed BE count
This was discussed as part of D62880.  The basic thought is that computing BE taken count after widening should produce (on average) an equally good backedge taken count as the one before widening.  Since there's only one test in the suite which is impacted by this change, and it's essentially equivelent codegen, that seems to be a reasonable assertion.  This change was separated from r362971 so that if this turns out to be problematic, the triggering piece is obvious and easily revertable.

For the nestedIV example from elim-extend.ll, we end up with the following BE counts:
BEFORE: (-2 + (-1 * %innercount) + %limit)
AFTER: (-1 + (sext i32 (-1 + %limit) to i64) + (-1 * (sext i32 %innercount to i64))<nsw>)

Note that before is an i32 type, and the after is an i64.  Truncating the i64 produces the i32. 

llvm-svn: 362975
2019-06-10 19:18:53 +00:00
..
ADCE.cpp
AlignmentFromAssumptions.cpp
BDCE.cpp [BDCE] Optimize find+insert with early insert 2019-03-07 06:38:03 +00:00
CMakeLists.txt Add basic loop fusion pass. 2019-04-17 18:53:27 +00:00
CallSiteSplitting.cpp CallSiteSplitting: Respect convergent and noduplicate 2019-05-29 16:59:48 +00:00
ConstantHoisting.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp Resubmit "[CorrelatedValuePropagation] Fix prof branch_weights metadata handling for SwitchInst" 2019-06-05 05:46:40 +00:00
DCE.cpp
DeadStoreElimination.cpp [DSE] Bugfix to avoid PartialStoreMerging involving non byte-sized stores 2019-05-24 08:32:02 +00:00
DivRemPairs.cpp
EarlyCSE.cpp [EarlyCSE] detect equivalence of selects with inverse conditions and commuted operands (PR41101) 2019-04-16 20:41:20 +00:00
FlattenCFGPass.cpp
Float2Int.cpp [ConstantRange] Add getFull() + getEmpty() named constructors; NFC 2019-03-24 09:34:40 +00:00
GVN.cpp [GVN] non-functional code movement 2019-06-07 23:08:38 +00:00
GVNHoist.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
GVNSink.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
GuardWidening.cpp [GuardWidening] Wire up a NPM version of the LoopGuardWidening pass 2019-04-18 19:17:14 +00:00
IVUsersPrinter.cpp
IndVarSimplify.cpp [LFTR] Use recomputed BE count 2019-06-10 19:18:53 +00:00
InductiveRangeCheckElimination.cpp [MemorySSA] Teach LoopSimplify to preserve MemorySSA. 2019-05-08 17:05:36 +00:00
InferAddressSpaces.cpp [InferAddressSpaces] Enhance the handling of cosntexpr. 2019-05-10 14:57:42 +00:00
InstSimplifyPass.cpp
JumpThreading.cpp [JumpThreading] A bug fix for stale loop info after unfold select 2019-05-15 15:15:16 +00:00
LICM.cpp [LICM] Allow AliasSetMap to contain top-level loops. 2019-05-14 19:41:36 +00:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp
LoopDeletion.cpp
LoopDistribute.cpp
LoopFuse.cpp Fix unused variable warning in LoopFusion pass. 2019-04-25 02:10:02 +00:00
LoopIdiomRecognize.cpp [LoopIdiom] Basic OptimizationRemarkEmitter handling 2019-05-30 13:02:06 +00:00
LoopInstSimplify.cpp
LoopInterchange.cpp [LoopInterchange] Fix handling of LCSSA nodes defined in headers and latches. 2019-05-26 23:38:25 +00:00
LoopLoadElimination.cpp [PGO] Profile guided code size optimization. 2019-04-15 16:49:00 +00:00
LoopPassManager.cpp
LoopPredication.cpp [LoopPred] Fix a bug in unconditional latch bailout introduced in r362284 2019-06-06 18:02:36 +00:00
LoopRerollPass.cpp
LoopRotation.cpp
LoopSimplifyCFG.cpp [LoopSimplifyCFG] Suppress expensive DomTree verification 2019-04-29 13:29:55 +00:00
LoopSink.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
LoopStrengthReduce.cpp Revert "[LSR] Tweak setup cost depth threshold to 10." 2019-05-13 15:37:18 +00:00
LoopUnrollAndJamPass.cpp [PGO] Profile guided code size optimization. 2019-04-15 16:49:00 +00:00
LoopUnrollPass.cpp [NewPassManager] Add tuning option: ForgetAllSCEVInLoopUnroll [NFC]. 2019-05-23 21:52:59 +00:00
LoopUnswitch.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
LoopVersioningLICM.cpp LoopVersioningLICM: Respect convergent and noduplicate 2019-05-29 20:47:59 +00:00
LowerAtomic.cpp Transforms: lower fadd and fsub atomicrmw instructions 2019-05-23 17:03:43 +00:00
LowerExpectIntrinsic.cpp
LowerGuardIntrinsic.cpp
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp
MergeICmps.cpp [MergeICmps] Make the pass compatible with the new pass manager. 2019-05-23 12:35:26 +00:00
MergedLoadStoreMotion.cpp
NaryReassociate.cpp
NewGVN.cpp NewGVN: Handle addrspacecast 2019-06-05 21:15:52 +00:00
PartiallyInlineLibCalls.cpp
PlaceSafepoints.cpp
Reassociate.cpp [Reassociation] Place moved instructions after landing pads 2019-05-08 15:44:24 +00:00
Reg2Mem.cpp
RewriteStatepointsForGC.cpp
SCCP.cpp [SCCP] Add UnaryOperator visitor to SCCP for unary FNeg 2019-06-03 21:53:56 +00:00
SROA.cpp Use the DataLayout::typeSizeEqualsStoreSize helper. NFC 2019-05-24 09:20:20 +00:00
Scalar.cpp [MergeICmps] Make the pass compatible with the new pass manager. 2019-05-23 12:35:26 +00:00
Scalarizer.cpp [Scalarizer] Add UnaryOperator visitor to scalarization pass 2019-06-04 23:01:36 +00:00
SeparateConstOffsetFromGEP.cpp
SimpleLoopUnswitch.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
SimplifyCFGPass.cpp
Sink.cpp
SpeculateAroundPHIs.cpp SpeculateAroundPHIs: Respect convergent 2019-05-29 13:14:39 +00:00
SpeculativeExecution.cpp Support FNeg in SpeculativeExecution pass 2019-05-14 16:51:18 +00:00
StraightLineStrengthReduce.cpp
StructurizeCFG.cpp StructurizeCFG: Relax uniformity checks. 2019-05-24 08:59:17 +00:00
TailRecursionElimination.cpp
WarnMissedTransforms.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00