llvm-6502/lib/Transforms/Scalar
Andrew Trick 06988bcf6a Made SCEV's UDiv expressions more canonical. When dividing a
recurrence, the initial values low bits can sometimes be ignored.

To take advantage of this, added FoldIVUser to IndVarSimplify to fold
an IV operand into a udiv/lshr if the operator doesn't affect the
result.

-indvars -disable-iv-rewrite now transforms

i = phi i4
i1 = i0 + 1
idx = i1 >> (2 or more)
i4 = i + 4

into

i = phi i4
idx = i0 >> ...
i4 = i + 4


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137013 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-06 07:00:37 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CMakeLists.txt Rewrite the CMake build to use explicit dependencies between libraries, 2011-07-29 00:14:25 +00:00
CodeGenPrepare.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp Don't include Operator.h from InstrTypes.h. 2011-04-11 09:35:34 +00:00
DCE.cpp Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
DeadStoreElimination.cpp Misc mid-level changes for new 'fence' instruction. 2011-07-27 01:08:30 +00:00
EarlyCSE.cpp Duncan deftly points out that readnone functions aren't 2011-01-03 23:38:13 +00:00
GVN.cpp Convert ConstantExpr::getGetElementPtr and 2011-07-21 14:31:17 +00:00
IndVarSimplify.cpp Made SCEV's UDiv expressions more canonical. When dividing a 2011-08-06 07:00:37 +00:00
JumpThreading.cpp Calculate GetBestDestForJumpOnUndef correctly. 2011-06-27 21:51:12 +00:00
LICM.cpp Bring LICM into compliance with the new "Memory Model for Concurrent Operations" in LangRef. 2011-07-20 21:37:47 +00:00
LoopDeletion.cpp Don't use PN->replaceUsesOfWith() to change a PHINode's incoming blocks, 2011-06-21 10:02:43 +00:00
LoopIdiomRecognize.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
LoopInstSimplify.cpp LoopInstSimplify preserves ScalarEvolution. 2011-02-11 06:08:25 +00:00
LoopRotation.cpp Make better use of the PHINode API. 2011-06-20 14:18:48 +00:00
LoopStrengthReduce.cpp LSR, correct fix for rdar://9786536. Silly casting bug. 2011-07-21 01:45:54 +00:00
LoopUnrollPass.cpp Move trip count discovery outside of the generic LoopUnroll helper. This 2011-07-23 00:33:05 +00:00
LoopUnswitch.cpp Reinstate r133513 (reverted in r133700) with an additional fix for a 2011-06-23 09:09:15 +00:00
LowerAtomic.cpp Misc optimizer+codegen work for 'cmpxchg' and 'atomicrmw'. They appear to be 2011-07-29 03:05:32 +00:00
Makefile
MemCpyOptimizer.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
ObjCARC.cpp Fix an obvious type. Patch by Ivan Krasin. 2011-08-04 18:40:26 +00:00
Reassociate.cpp Revert r136503 and r136480 in an effort to fix non-determinism in the llvm-gcc buildbots on i386. Devang is looking into the root cause. 2011-08-02 02:23:42 +00:00
Reg2Mem.cpp Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
Scalar.cpp Add LLVMAddLowerExpectIntrinsicPass to the C API. 2011-07-25 20:57:59 +00:00
ScalarReplAggregates.cpp Finish adding support for lifetime intrinsics to SROA. Fixes PR10121! 2011-07-25 23:14:22 +00:00
SCCP.cpp Add new atomic instructions to SCCP. No functional change, but stops debug spam. 2011-08-02 21:35:16 +00:00
SimplifyCFGPass.cpp Convert CallInst and InvokeInst APIs to use ArrayRef. 2011-07-15 08:37:34 +00:00
SimplifyLibCalls.cpp land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
Sink.cpp
TailDuplication.cpp
TailRecursionElimination.cpp Don't do tail calls in a function that call setjmp. The stack might be 2011-05-16 03:05:33 +00:00