| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
|
| |
|
|
| |
llvm-svn: 91653
|
| |
|
|
| |
llvm-svn: 91647
|
| |
|
|
|
|
|
|
| |
of 91296 that caused trouble -- the Processed list needs to be
preserved for the livetime of the pass, as AddUsersIfInteresting
is called from other passes.
llvm-svn: 91641
|
| |
|
|
|
|
| |
introduced a non-deterministic behavior in the optimizer somewhere.
llvm-svn: 91598
|
| |
|
|
| |
llvm-svn: 91432
|
| |
|
|
|
|
| |
condition was inverted when the code was converted to contains().
llvm-svn: 91295
|
| |
|
|
| |
llvm-svn: 91293
|
| |
|
|
|
|
| |
the ScalarEvolution pointer into the functions which need it.
llvm-svn: 91289
|
| |
|
|
| |
llvm-svn: 91288
|
| |
|
|
| |
llvm-svn: 91287
|
| |
|
|
| |
llvm-svn: 91283
|
| |
|
|
| |
llvm-svn: 91282
|
| |
|
|
|
|
| |
SCEVExpander does this automatically.
llvm-svn: 91281
|
| |
|
|
| |
llvm-svn: 91280
|
| |
|
|
| |
llvm-svn: 89145
|
| |
|
|
| |
llvm-svn: 89123
|
| |
|
|
|
|
| |
use postinc iv.
llvm-svn: 89116
|
| |
|
|
| |
llvm-svn: 89110
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
cannot be folded into target cmp instruction.
- Avoid a phase ordering issue where early cmp optimization would prevent the
later count-to-zero optimization.
- Add missing checks which could cause LSR to reuse stride that does not have
users.
- Fix a bug in count-to-zero optimization code which failed to find the pre-inc
iv's phi node.
- Remove, tighten, loosen some incorrect checks disable valid transformations.
- Quite a bit of code clean up.
llvm-svn: 86969
|
| |
|
|
| |
llvm-svn: 86761
|
| |
|
|
| |
llvm-svn: 86715
|
| |
|
|
| |
llvm-svn: 86193
|
| |
|
|
|
|
| |
LoopSimplify form may not be available.
llvm-svn: 86175
|
| |
|
|
|
|
|
|
|
|
| |
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
|
| |
|
|
|
|
| |
CmpInst::isSigned.
llvm-svn: 85037
|
| |
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that get created during loop unswitching, and fix SplitBlockPredecessors'
LCSSA updating code to create new PHIs instead of trying to just move
existing ones.
Also, optimize Loop::verifyLoop, since it gets called a lot. Use
searches on a sorted list of blocks instead of calling the "contains"
function, as is done in other places in the Loop class, since "contains"
does a linear search. Also, don't call verifyLoop from LoopSimplify or
LCSSA, as the PassManager is already calling verifyLoop as part of
LoopInfo's verifyAnalysis.
llvm-svn: 81221
|
| |
|
|
|
|
| |
tests significantly.
llvm-svn: 81101
|
| |
|
|
|
|
|
|
|
| |
that these passes are properly preserved.
Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.
llvm-svn: 80926
|
| |
|
|
| |
llvm-svn: 80766
|
| |
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
| |
|
|
| |
llvm-svn: 78948
|
| |
|
|
|
|
| |
own struct type.
llvm-svn: 78610
|
| |
|
|
|
|
|
| |
matches what the comment says, and it avoids spurious BitCast
instructions for Argument values.
llvm-svn: 78121
|
| |
|
|
|
|
|
|
| |
change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721
|
| |
|
|
| |
llvm-svn: 77519
|
| |
|
|
| |
llvm-svn: 77516
|
| |
|
|
| |
llvm-svn: 77494
|
| |
|
|
| |
llvm-svn: 77247
|
| |
|
|
| |
llvm-svn: 77152
|
| |
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
| |
|
|
| |
llvm-svn: 76702
|
| |
|
|
|
|
|
|
|
|
| |
using the Curiously Recurring Template Pattern with LoopBase.
This will help further refactoring, and future functionality for
Loop. Also, Headers can now foward-declare Loop, instead of pulling
in LoopInfo.h or doing tricks.
llvm-svn: 75519
|
| |
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
| |
|
|
| |
llvm-svn: 74918
|
| |
|
|
| |
llvm-svn: 74753
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 74048
|
| |
|
|
|
|
| |
preheader is already an instruction.
llvm-svn: 74031
|
| |
|
|
| |
llvm-svn: 73906
|