forked from OSchip/llvm-project
a9633d5f0b
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 |
||
---|---|---|
.. | ||
ADCE.cpp | ||
AlignmentFromAssumptions.cpp | ||
BDCE.cpp | ||
CMakeLists.txt | ||
CallSiteSplitting.cpp | ||
ConstantHoisting.cpp | ||
ConstantProp.cpp | ||
CorrelatedValuePropagation.cpp | ||
DCE.cpp | ||
DeadStoreElimination.cpp | ||
DivRemPairs.cpp | ||
EarlyCSE.cpp | ||
FlattenCFGPass.cpp | ||
Float2Int.cpp | ||
GVN.cpp | ||
GVNHoist.cpp | ||
GVNSink.cpp | ||
GuardWidening.cpp | ||
IVUsersPrinter.cpp | ||
IndVarSimplify.cpp | ||
InductiveRangeCheckElimination.cpp | ||
InferAddressSpaces.cpp | ||
InstSimplifyPass.cpp | ||
JumpThreading.cpp | ||
LICM.cpp | ||
LLVMBuild.txt | ||
LoopAccessAnalysisPrinter.cpp | ||
LoopDataPrefetch.cpp | ||
LoopDeletion.cpp | ||
LoopDistribute.cpp | ||
LoopFuse.cpp | ||
LoopIdiomRecognize.cpp | ||
LoopInstSimplify.cpp | ||
LoopInterchange.cpp | ||
LoopLoadElimination.cpp | ||
LoopPassManager.cpp | ||
LoopPredication.cpp | ||
LoopRerollPass.cpp | ||
LoopRotation.cpp | ||
LoopSimplifyCFG.cpp | ||
LoopSink.cpp | ||
LoopStrengthReduce.cpp | ||
LoopUnrollAndJamPass.cpp | ||
LoopUnrollPass.cpp | ||
LoopUnswitch.cpp | ||
LoopVersioningLICM.cpp | ||
LowerAtomic.cpp | ||
LowerExpectIntrinsic.cpp | ||
LowerGuardIntrinsic.cpp | ||
LowerWidenableCondition.cpp | ||
MakeGuardsExplicit.cpp | ||
MemCpyOptimizer.cpp | ||
MergeICmps.cpp | ||
MergedLoadStoreMotion.cpp | ||
NaryReassociate.cpp | ||
NewGVN.cpp | ||
PartiallyInlineLibCalls.cpp | ||
PlaceSafepoints.cpp | ||
Reassociate.cpp | ||
Reg2Mem.cpp | ||
RewriteStatepointsForGC.cpp | ||
SCCP.cpp | ||
SROA.cpp | ||
Scalar.cpp | ||
Scalarizer.cpp | ||
SeparateConstOffsetFromGEP.cpp | ||
SimpleLoopUnswitch.cpp | ||
SimplifyCFGPass.cpp | ||
Sink.cpp | ||
SpeculateAroundPHIs.cpp | ||
SpeculativeExecution.cpp | ||
StraightLineStrengthReduce.cpp | ||
StructurizeCFG.cpp | ||
TailRecursionElimination.cpp | ||
WarnMissedTransforms.cpp |