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
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
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
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
Reg2Mem.cpp
Scalar.cpp
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