| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 97453
|
|
|
|
|
|
|
|
|
|
|
|
| |
which branch on undef to branch on a boolean constant for the edge
exiting the loop. This helps ScalarEvolution compute trip counts for
loops.
Teach ScalarEvolution to recognize single-value PHIs, when safe, and
ForgetSymbolicName to forget such single-value PHI nodes as apprpriate
in ForgetSymbolicName.
llvm-svn: 97126
|
|
|
|
| |
llvm-svn: 96780
|
|
|
|
| |
llvm-svn: 96771
|
|
|
|
|
|
| |
to be spurious
llvm-svn: 96662
|
|
|
|
| |
llvm-svn: 96653
|
|
|
|
|
|
|
|
| |
a loop exit value, so that if a loop gets deleted, ScalarEvolution
isn't stick holding on to dangling SCEVAddRecExprs for that loop. This
fixes PR6339.
llvm-svn: 96626
|
|
|
|
| |
llvm-svn: 96614
|
|
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
|
|
|
|
|
|
|
|
|
| |
bug fixes, and with improved heuristics for analyzing foreign-loop
addrecs.
This change also flattens IVUsers, eliminating the stride-oriented
groupings, which makes it easier to work with.
llvm-svn: 95975
|
|
|
|
| |
llvm-svn: 95781
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new version is much more aggressive about doing "full" reduction in
cases where it reduces register pressure, and also more aggressive about
rewriting induction variables to count down (or up) to zero when doing so
reduces register pressure.
It currently uses fairly simplistic algorithms for finding reuse
opportunities, but it introduces a new framework allows it to combine
multiple strategies at once to form hybrid solutions, instead of doing
all full-reduction or all base+index.
llvm-svn: 94061
|
|
|
|
| |
llvm-svn: 92735
|
|
|
|
| |
llvm-svn: 92609
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
LoopSimplify form may not be available.
llvm-svn: 86175
|
|
|
|
|
|
| |
clears out more information than just the stored backedge taken count.
llvm-svn: 85664
|
|
|
|
| |
llvm-svn: 85327
|
|
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
|
|
|
| |
llvm-svn: 80766
|
|
|
|
|
|
|
|
| |
sinking code, since they are special. If the loop preheader happens
to be the entry block of a function, don't sink static allocas
out of it. This fixes PR4775.
llvm-svn: 80010
|
|
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
|
|
|
|
|
| |
that Value's operator<< doesn't include one.
llvm-svn: 79240
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
| |
llvm-svn: 77635
|
|
|
|
| |
llvm-svn: 77152
|
|
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
|
|
|
| |
llvm-svn: 76702
|
|
|
|
|
|
| |
using it.
llvm-svn: 75852
|
|
|
|
| |
llvm-svn: 75723
|
|
|
|
|
|
|
| |
This results in the pass manager running IVUsers only once for
indvars, instead of twice.
llvm-svn: 75633
|
|
|
|
|
|
| |
block has a single unique exiting block.
llvm-svn: 75579
|
|
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
|
|
|
| |
llvm-svn: 74918
|
|
|
|
| |
llvm-svn: 74748
|
|
|
|
|
|
|
| |
PassManager was scheduling LCSSA before LoopSimplify, which does not
preserve LCSSA.
llvm-svn: 74661
|
|
|
|
|
|
|
|
| |
inserted to replace that value must dominate all of of the basic
blocks associated with the uses of the value in the PHI, not just
one of them.
llvm-svn: 74376
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This helps it avoid reusing an instruction that doesn't dominate all
of the users, in cases where the original instruction was inserted
before all of the users were known. This may result in redundant
expansions of sub-expressions that depend on loop-unpredictable values
in some cases, however this isn't very common, and it primarily impacts
IndVarSimplify, so GVN can be expected to clean these up.
This eliminates the need for IndVarSimplify's FixUsesBeforeDefs,
which fixes several bugs.
llvm-svn: 74352
|
|
|
|
|
|
|
|
| |
terminator, instead of after the last phi. This fixes a bug
exposed by ScalarEvolution analyzing more kinds of loops.
This fixes PR4436.
llvm-svn: 74072
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 73910
|
|
|
|
| |
llvm-svn: 73906
|
|
|
|
|
|
|
|
| |
now, this hasn't mattered, because ScalarEvolution hasn't been able
to compute trip counts for loops with multiple exits. But it will
soon.
llvm-svn: 73864
|
|
|
|
| |
llvm-svn: 73355
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
induction variable when the addrec to be expanded does not require
a wider type. This eliminates the need for IndVarSimplify to
micro-manage SCEV expansions, because SCEVExpander now
automatically expands them in the form that IndVarSimplify considers
to be canonical. (LSR still micro-manages its SCEV expansions,
because it's optimizing for the target, rather than for
other optimizations.)
Also, this uses the new getAnyExtendExpr, which has more clever
expression simplification logic than the IndVarSimplify code it
replaces, and this cleans up some ugly expansions in code such as
the included masked-iv.ll testcase.
llvm-svn: 73294
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt
llvm-svn: 72897
|
|
|
|
|
|
| |
be simplified to a loop-invariant value. This fixes PR4315.
llvm-svn: 72798
|
|
|
|
|
|
|
|
| |
in the case where a loop exit value cannot be computed, instead of only in
some cases while using SCEVCouldNotCompute in others. This simplifies
getSCEVAtScope's callers.
llvm-svn: 72375
|
|
|
|
|
|
|
| |
one of the RecursivelyDeleteTriviallyDeadInstructions.
Add a comment explaining why the cache needs to be cleared.
llvm-svn: 72372
|
|
|
|
|
|
| |
Also fix 80 column violation.
llvm-svn: 72371
|