| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
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
|
|
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
|
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
|
|
|
|
|
|
|
| |
name, test whether the SCEV itself is that temporary symbolic name,
in addition to checking whether the symbolic name appears as a
possibly-indirect operand.
llvm-svn: 96216
|
|
|
|
|
|
|
| |
SCEVAddRecExpr doesn't necessarily dominate blocks merely dominated
by all of its operands. This fixes an abort compiling 403.gcc.
llvm-svn: 96056
|
|
|
|
| |
llvm-svn: 95781
|
|
|
|
|
|
|
| |
than int. This will make it more convenient for LSR, which does
a lot of things with int64_t offsets.
llvm-svn: 95281
|
|
|
|
| |
llvm-svn: 95044
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cases, and implement target-independent folding rules for alignof and
offsetof. Also, reassociate reassociative operators when it leads to
more folding.
Generalize ScalarEvolution's isOffsetOf to recognize offsetof on
arrays. Rename getAllocSizeExpr to getSizeOfExpr, and getFieldOffsetExpr
to getOffsetOfExpr, for consistency with analagous ConstantExpr routines.
Make the target-dependent folder promote GEP array indices to
pointer-sized integers, to make implicit casting explicit and exposed
to subsequent folding.
And add a bunch of testcases for this new functionality, and a bunch
of related existing functionality.
llvm-svn: 94987
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use plain SCEVUnknowns with ConstantExpr::getSizeOf and
ConstantExpr::getOffsetOf constants. This eliminates a bunch of
special-case code.
Also add code for pattern-matching these expressions, for clients that
want to recognize them.
Move ScalarEvolution's logic for expanding array and vector sizeof
expressions into an element count times the element size, to expose
the multiplication to subsequent folding, into the regular constant
folder.
llvm-svn: 94737
|
|
|
|
|
|
| |
and clean up some loose ends.
llvm-svn: 94572
|
|
|
|
| |
llvm-svn: 94562
|
|
|
|
|
|
| |
than an iteration count.
llvm-svn: 94549
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have trouble with an intermediate add overflowing. Also, be more conservative
about the case where the induction variable in an SLT loop exit can step past
the RHS of the SLT and overflow in a single step.
Make getSignedRange more aggressive, to recover for some common cases which
the above fixes pessimized.
This addresses rdar://7561161.
llvm-svn: 94512
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 93932
|
|
|
|
|
|
| |
to make more intellegent AddRec folding decisions.
llvm-svn: 93930
|
|
|
|
|
|
| |
so that unnamed blocks are handled.
llvm-svn: 93059
|
|
|
|
|
|
| |
other files to compensate.
llvm-svn: 92075
|
|
|
|
|
|
| |
s/errs/dbgs/g except for certain special cases.
llvm-svn: 92067
|
|
|
|
| |
llvm-svn: 91742
|
|
|
|
| |
llvm-svn: 91722
|
|
|
|
|
|
| |
associative either.
llvm-svn: 91701
|
|
|
|
|
|
| |
is not reassociative.
llvm-svn: 91667
|
|
|
|
| |
llvm-svn: 91659
|
|
|
|
| |
llvm-svn: 91656
|
|
|
|
|
|
|
|
| |
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: 91651
|
|
|
|
| |
llvm-svn: 89641
|
|
|
|
|
|
| |
and ConstantFoldCompareInstOperands.
llvm-svn: 86626
|
|
|
|
|
|
| |
individual operands instead of taking a temporary array
llvm-svn: 86619
|
|
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
|
|
|
| |
llvm-svn: 85717
|
|
|
|
|
|
| |
of the ScalarEvolution pass without needing to #include ScalarEvolution.h.
llvm-svn: 85716
|
|
|
|
|
|
| |
clears out more information than just the stored backedge taken count.
llvm-svn: 85664
|
|
|
|
|
|
| |
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
|
|
|
|
|
|
|
| |
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
|
|
|
|
| |
llvm-svn: 83649
|
|
|
|
|
|
| |
instructions.
llvm-svn: 83606
|
|
|
|
| |
llvm-svn: 83601
|
|
|
|
| |
llvm-svn: 82898
|
|
|
|
|
|
|
|
| |
where the induction variable has a non-unit stride, such as {0,+,2}, and
there are expressions such as {1,+,2} inside the loop formed with
or or add nsw operators.
llvm-svn: 82151
|
|
|
|
| |
llvm-svn: 80918
|
|
|
|
| |
llvm-svn: 80632
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SCEVUnknowns, as the non-SCEVUnknown cases in the getSCEVAtScope code
can also end up repeatedly climing through the same expression trees,
which can be unusably slow when the trees are very tall.
Also, add a quick check for SCEV pointer equality to the main
SCEV comparison routine, as the full comparison code can be expensive
in the case of large expression trees.
These fix compile-time problems in some pathlogical cases.
llvm-svn: 80623
|
|
|
|
|
|
|
|
| |
will always return the same value. This isn't currently necessary,
since this code doesn't currently ever get called under circumstances
where it would matter, but it may some day.
llvm-svn: 80017
|
|
|
|
| |
llvm-svn: 80014
|
|
|
|
| |
llvm-svn: 79882
|
|
|
|
|
|
| |
update all code that this affects.
llvm-svn: 79830
|