| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
|
|
|
| |
llvm-svn: 71302
|
|
|
|
|
|
| |
overflow checks.
llvm-svn: 71284
|
|
|
|
|
|
|
| |
add-recurrence to be exposed. Add a new SCEV folding rule to
help simplify expressions in the presence of these extra truncs.
llvm-svn: 71264
|
|
|
|
|
|
| |
constant exprs as well as instructions.
llvm-svn: 71262
|
|
|
|
|
|
|
|
|
| |
which are not analyzed with SCEV techniques, which can require
brute-forcing through a large number of instructions. This
fixes a massive compile-time issue on 400.perlbench (in
particular, the loop in MD5Transform).
llvm-svn: 71259
|
|
|
|
|
|
| |
clients to use it.
llvm-svn: 71258
|
|
|
|
| |
llvm-svn: 71255
|
|
|
|
|
|
| |
separate function.
llvm-svn: 71252
|
|
|
|
|
|
| |
This fixes an old FIXME, and is needed by some upcoming changes.
llvm-svn: 71247
|
|
|
|
|
|
| |
the SCEVUDivExpr case.
llvm-svn: 71173
|
|
|
|
|
|
|
|
| |
to sorting SCEVs by their kind, sort SCEVs of the same kind according
to their operands. This helps avoid things like (a+b) being a distinct
expression from (b+a).
llvm-svn: 71160
|
|
|
|
|
|
| |
headers due to library dependencies.
llvm-svn: 71159
|
|
|
|
|
|
|
| |
SCEVAddRecExpr. This eliminates redundant code for visiting
all the operands of an expression.
llvm-svn: 71157
|
|
|
|
|
|
|
| |
trivially different code on different hosts (due to differing
std::sort implementations).
llvm-svn: 71124
|
|
|
|
|
|
|
|
|
|
|
|
| |
CallbackVH, with fixes. allUsesReplacedWith need to
walk the def-use chains and invalidate all users of a
value that is replaced. SCEVs of users need to be
recalcualted even if the new value is equivalent. Also,
make forgetLoopPHIs walk def-use chains, since any
SCEV that depends on a PHI should be recalculated when
more information about that PHI becomes available.
llvm-svn: 70927
|
|
|
|
| |
llvm-svn: 70925
|
|
|
|
| |
llvm-svn: 70924
|
|
|
|
| |
llvm-svn: 70919
|
|
|
|
| |
llvm-svn: 70661
|
|
|
|
|
|
|
|
|
| |
makes ScalarEvolution::deleteValueFromRecords, and it's code that
subtly needed to be called before ReplaceAllUsesWith, unnecessary.
It also makes ValueDeletionListener unnecessary.
llvm-svn: 70645
|
|
|
|
|
|
|
| |
it also forget any SCEVs associated with loop-header PHIs in the loop,
as they may be dependent on trip count information.
llvm-svn: 70633
|
|
|
|
|
|
|
|
| |
artificial "ptrtoint", as it tends to clutter up complicated
expressions. The cast operators now print both source and
destination types, which is usually sufficient.
llvm-svn: 70554
|
|
|
|
| |
llvm-svn: 70550
|
|
|
|
|
|
| |
avoids duplicate scevs that differ only in type.
llvm-svn: 70549
|
|
|
|
|
|
| |
gone lost during the pImpl conversion.
llvm-svn: 70536
|
|
|
|
| |
llvm-svn: 70510
|
|
|
|
|
|
|
|
|
|
|
|
| |
compute an upper-bound value for the trip count, in addition to
the actual trip count. Use this to allow getZeroExtendExpr and
getSignExtendExpr to fold casts in more cases.
This may eventually morph into a more general value-range
analysis capability; there are certainly plenty of places where
more complete value-range information would allow more folding.
llvm-svn: 70509
|
|
|
|
|
|
| |
in getSCEVAtScope.
llvm-svn: 70495
|
|
|
|
|
|
| |
a SCEVable type, not just integer types.
llvm-svn: 70463
|
|
|
|
| |
llvm-svn: 70422
|
|
|
|
|
|
|
|
| |
(sext i8 {-128,+,1} to i64) to i64 {-128,+,1}, where the iteration
crosses from negative to positive, but is still safe if the trip
count is within range.
llvm-svn: 70421
|
|
|
|
|
|
|
| |
print sext, zext, and trunc, instead of signextend, zeroextend,
and truncate, respectively, for consistency with the main IR.
llvm-svn: 70405
|
|
|
|
| |
llvm-svn: 70386
|
|
|
|
| |
llvm-svn: 70357
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
information to simplify [sz]ext({a,+,b}) to {zext(a),+,[zs]ext(b)},
as appropriate.
These functions and the trip count code each call into the other, so
this requires careful handling to avoid infinite recursion. During
the initial trip count computation, conservative SCEVs are used,
which are subsequently discarded once the trip count is actually
known.
Among other benefits, this change lets LSR automatically eliminate
some unnecessary zext-inreg and sext-inreg operation where the
operand is an induction variable.
llvm-svn: 70241
|
|
|
|
| |
llvm-svn: 70176
|
|
|
|
|
|
| |
common, but indvars shouldn't crash on them. This fixes PR4054.
llvm-svn: 70051
|
|
|
|
|
|
| |
whitespace in the same file.
llvm-svn: 69870
|
|
|
|
| |
llvm-svn: 69809
|
|
|
|
|
|
|
| |
practical benefit in the case of ScalarEvolution, and it's otherwise
a nuisance.
llvm-svn: 69749
|
|
|
|
|
|
|
|
| |
type to truncate to should be the number of bits of the value that are
preserved, not the number that are clobbered with sign-extension.
This fixes regressions in ldecod.
llvm-svn: 69704
|
|
|
|
|
|
|
| |
as they appear in LLVM IR. This isn't particularly interesting
on its own; this is just setting up some infrastructure.
llvm-svn: 69655
|
|
|
|
| |
llvm-svn: 69651
|
|
|
|
|
|
| |
and SCEVSignExtendExpr.
llvm-svn: 69649
|
|
|
|
| |
llvm-svn: 69645
|
|
|
|
|
|
| |
the code to minimize dependencies on TargetData.
llvm-svn: 69644
|
|
|
|
| |
llvm-svn: 69643
|
|
|
|
| |
llvm-svn: 69640
|
|
|
|
|
|
| |
instead of allocating and leaking new SCEVCouldNotCompute objects.
llvm-svn: 69452
|