llvm-6502/lib/Transforms/Scalar
Evan Cheng 2bd122c4d9 Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free.
e.g.
Turns this loop:
LBB1_1: # entry.bb_crit_edge
        xorl    %ecx, %ecx
        xorw    %dx, %dx
        movw    %dx, %si
LBB1_2: # bb
        movl    L_X$non_lazy_ptr, %edi
        movw    %si, (%edi)
        movl    L_Y$non_lazy_ptr, %edi
        movw    %dx, (%edi)
		addw    $4, %dx
		incw    %si
		incl    %ecx
		cmpl    %eax, %ecx
		jne     LBB1_2  # bb
	
into

LBB1_1: # entry.bb_crit_edge
        xorl    %ecx, %ecx
        xorw    %dx, %dx
LBB1_2: # bb
        movl    L_X$non_lazy_ptr, %esi
        movw    %cx, (%esi)
        movl    L_Y$non_lazy_ptr, %esi
        movw    %dx, (%esi)
        addw    $4, %dx
		incl    %ecx
        cmpl    %eax, %ecx
        jne     LBB1_2  # bb


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43375 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-26 01:56:11 +00:00
..
ADCE.cpp New CallInst interface to address GLIBCXX_DEBUG errors caused by 2007-08-01 03:43:44 +00:00
BasicBlockPlacement.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
CodeGenPrepare.cpp wrap some long lines. Major offenders that are left include 2007-08-02 16:53:43 +00:00
CondPropagate.cpp Fix PR1575 and test/Transforms/CondProp/2007-08-01-InvalidRead.ll 2007-08-02 04:47:05 +00:00
ConstantProp.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
CorrelatedExprs.cpp Remove a bogus return statement, what appears to have been a pasto 2007-07-26 15:29:35 +00:00
DCE.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
DeadStoreElimination.cpp Don't DSe volatile stores. 2007-08-26 21:14:47 +00:00
GCSE.cpp Use DominatorTree instead of ETForest. 2007-06-07 18:45:06 +00:00
GVN.cpp Allow GVN to eliminate redundant calls to functions without side effects. 2007-10-18 19:39:33 +00:00
GVNPRE.cpp explicit keywords. 2007-09-24 15:48:49 +00:00
IndVarSimplify.cpp Move the SCEV object factors from being static members of the individual 2007-10-22 18:31:58 +00:00
InstructionCombining.cpp simplify some code by using the new isNaN predicate 2007-10-24 18:54:45 +00:00
LICM.cpp Use empty() member functions when that's what's being tested for instead 2007-10-03 19:26:29 +00:00
LoopIndexSplit.cpp Handle multiple induction variables. 2007-09-25 18:24:48 +00:00
LoopRotation.cpp Use SmallVector instead of std::vector. 2007-08-21 00:31:24 +00:00
LoopStrengthReduce.cpp Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free. 2007-10-26 01:56:11 +00:00
LoopUnroll.cpp wrap some long lines. Major offenders that are left include 2007-08-02 16:53:43 +00:00
LoopUnswitch.cpp Do not walk invalid iterator. 2007-10-09 21:31:36 +00:00
LowerGC.cpp Change llvm.gcroot to not init the root to null at runtime, this prevents 2007-09-12 17:53:10 +00:00
LowerPacked.cpp Update GEP constructors to use an iterator interface to fix 2007-09-04 15:46:09 +00:00
Makefile DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE now 2005-10-24 02:26:13 +00:00
PredicateSimplifier.cpp Fix optimization. %x = sub %x, %y does not imply that %y is zero. 2007-09-20 00:48:36 +00:00
Reassociate.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
Reg2Mem.cpp Reg2Mem cleanup and optimizations: 2007-10-21 23:05:16 +00:00
ScalarReplAggregates.cpp Don't do SRA for unions with long double fields. 2007-09-28 00:21:38 +00:00
SCCP.cpp Use empty() member functions when that's what's being tested for instead 2007-10-03 19:26:29 +00:00
SimplifyCFG.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
TailDuplication.cpp Fix typo in comment. 2007-05-06 13:37:16 +00:00
TailRecursionElimination.cpp Prevent tailcallelim from breaking "recursive" calls to builtins. 2007-09-10 20:58:55 +00:00