llvm-6502/lib/Transforms/Scalar
Dan Gohman 40a5a1b39e Extend ScalarEvolution's multiple-exit support to compute exact
trip counts in more cases.

Generalize ScalarEvolution's isLoopGuardedByCond code to recognize
And and Or conditions, splitting the code out into an
isNecessaryCond helper function so that it can evaluate Ands and Ors
recursively, and make SCEVExpander be much more aggressive about
hoisting instructions out of loops.

test/CodeGen/X86/pr3495.ll has an additional instruction now, but
it appears to be due to an arbitrary register allocation difference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74048 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-24 01:18:18 +00:00
..
ADCE.cpp Allow readonly functions to unwind exceptions. Teach 2009-05-06 06:49:50 +00:00
BasicBlockPlacement.cpp
CMakeLists.txt
CodeGenPrepare.cpp Fix old-style type names in comments. 2009-06-14 23:30:43 +00:00
CondPropagate.cpp Avoid making the transformation enabled by my last patch if the new destinations have phi nodes. 2009-04-15 00:43:54 +00:00
ConstantProp.cpp
DCE.cpp Eliminate several more unnecessary intptr_t casts. 2009-02-18 05:09:16 +00:00
DeadStoreElimination.cpp Rename PaddedSize to AllocSize, in the hope that this 2009-05-09 07:06:46 +00:00
GVN.cpp This fixes a bug introduced in 72661, which can 2009-06-17 20:48:23 +00:00
GVNPRE.cpp Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
IndVarSimplify.cpp Extend ScalarEvolution's multiple-exit support to compute exact 2009-06-24 01:18:18 +00:00
InstructionCombining.cpp Generalize the zext(trunc(t) & C) instcombine to work even with 2009-06-18 16:30:21 +00:00
JumpThreading.cpp make jump threading handle lexically identical compare instructions 2009-06-19 16:27:56 +00:00
LICM.cpp Revert r67798: it breaks llvm-gcc bootstrap on x86-64-linux, presumably due to 2009-03-27 14:56:47 +00:00
LoopDeletion.cpp SCEVHandle is no more! 2009-06-22 21:39:50 +00:00
LoopIndexSplit.cpp Support vector casts in more places, fixing a variety of assertion 2009-06-15 22:12:54 +00:00
LoopRotation.cpp Do not count DbgInfoIntrinsic while estimating loop header size. 2009-03-06 03:51:30 +00:00
LoopStrengthReduce.cpp Extend ScalarEvolution's multiple-exit support to compute exact 2009-06-24 01:18:18 +00:00
LoopUnroll.cpp Adjust loop size estimate for full unrolling; 2009-04-20 22:19:33 +00:00
LoopUnswitch.cpp Allow readonly functions to unwind exceptions. Teach 2009-05-06 06:49:50 +00:00
Makefile
MemCpyOptimizer.cpp Rename PaddedSize to AllocSize, in the hope that this 2009-05-09 07:06:46 +00:00
PredicateSimplifier.cpp Use cast<> instead of dyn_cast<> for things that are known to be 2009-06-06 17:49:35 +00:00
Reassociate.cpp Make the key of ValueRankMap an AssertingVH, so that we die violently 2009-03-31 22:13:29 +00:00
Reg2Mem.cpp
Scalar.cpp add a bunch more passes to the C bindings (PR3734), patch by 2009-03-06 16:52:18 +00:00
ScalarReplAggregates.cpp Use Type::getScalarType. 2009-06-16 00:20:26 +00:00
SCCP.cpp Don't crash on multiple return value with no obvious inserted value. 2009-06-06 23:13:08 +00:00
SimplifyCFGPass.cpp second half of fix for PR4366: don't zap store to null of 2009-06-12 21:01:07 +00:00
SimplifyHalfPowrLibCalls.cpp
SimplifyLibCalls.cpp part of PR4405: disable a contentious optimization for 2009-06-19 04:17:36 +00:00
TailDuplication.cpp Allow readonly functions to unwind exceptions. Teach 2009-05-06 06:49:50 +00:00
TailRecursionElimination.cpp Improve tail call elim to move loads above readonly calls 2009-06-19 04:22:16 +00:00