#
e9a38d16 |
| 02-May-2009 |
Dan Gohman <gohman@apple.com> |
Convert ScalarEvolution to use CallbackVH for its internal map. This makes ScalarEvolution::deleteValueFromRecords, and it's code that subtly needed to be called before ReplaceAllUsesWith, unnecessar
Convert ScalarEvolution to use CallbackVH for its internal map. This makes ScalarEvolution::deleteValueFromRecords, and it's code that subtly needed to be called before ReplaceAllUsesWith, unnecessary.
It also makes ValueDeletionListener unnecessary.
llvm-svn: 70645
show more ...
|
#
f150572a |
| 02-May-2009 |
Dan Gohman <gohman@apple.com> |
When ScalarEvolution is told to forget the trip count for a loop, have it also forget any SCEVs associated with loop-header PHIs in the loop, as they may be dependent on trip count information.
llvm
When ScalarEvolution is told to forget the trip count for a loop, have 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
show more ...
|
#
7227bc88 |
| 01-May-2009 |
Dan Gohman <gohman@apple.com> |
When printing a SCEVUnknown with pointer type, don't print an artificial "ptrtoint", as it tends to clutter up complicated expressions. The cast operators now print both source and destination types,
When printing a SCEVUnknown with pointer type, don't print an 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
show more ...
|
#
90f73564 |
| 01-May-2009 |
Dan Gohman <gohman@apple.com> |
Fix an 80-column violation.
llvm-svn: 70550
|
#
194e42c6 |
| 01-May-2009 |
Dan Gohman <gohman@apple.com> |
When creating cast scevs, canonicalize the destination type. This avoids duplicate scevs that differ only in type.
llvm-svn: 70549
|
#
83aec26e |
| 01-May-2009 |
Torok Edwin <edwintorok@gmail.com> |
hasSCEV() was declared in ScalarEvolution.h, but never defined. This must have gone lost during the pImpl conversion.
llvm-svn: 70536
|
#
fa066ef1 |
| 30-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Add some comments, and tidy up some whitespace.
llvm-svn: 70510
|
#
2b8da35f |
| 30-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Extend ScalarEvolution's getBackedgeTakenCount to be able to compute an upper-bound value for the trip count, in addition to the actual trip count. Use this to allow getZeroExtendExpr and getSignExte
Extend ScalarEvolution's getBackedgeTakenCount to be able to 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
show more ...
|
#
4bafc421 |
| 30-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Don't try to mix integers and pointers in an icmp instruction in getSCEVAtScope.
llvm-svn: 70495
|
#
7216b9da |
| 30-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Fix ScalarEvolution::print to print a value for any Instruction with a SCEVable type, not just integer types.
llvm-svn: 70463
|
#
0098d01e |
| 29-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Implement getSCEVAtScope for SCEV cast expressions.
llvm-svn: 70422
|
#
494dac3f |
| 29-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Generalize the cast-of-addrec folding to handle folding of SCEVs like (sext i8 {-128,+,1} to i64) to i64 {-128,+,1}, where the iteration crosses from negative to positive, but is still safe if the tr
Generalize the cast-of-addrec folding to handle folding of SCEVs like (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
show more ...
|
#
d9b11b2e |
| 29-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Include the source type in SCEV cast expression debug output, and print sext, zext, and trunc, instead of signextend, zeroextend, and truncate, respectively, for consistency with the main IR.
llvm-s
Include the source type in SCEV cast expression debug output, and print sext, zext, and trunc, instead of signextend, zeroextend, and truncate, respectively, for consistency with the main IR.
llvm-svn: 70405
show more ...
|
#
b0bc5c2f |
| 29-Apr-2009 |
Dale Johannesen <dalej@apple.com> |
Fix recent regression in gcc.dg/pr26719.c (6835035).
llvm-svn: 70386
|
#
95c5b0e5 |
| 29-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Update comments to reflect the current code.
llvm-svn: 70357
|
#
76466373 |
| 27-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Teach getZeroExtendExpr and getSignExtendExpr to use trip-count information to simplify [sz]ext({a,+,b}) to {zext(a),+,[zs]ext(b)}, as appropriate.
These functions and the trip count code each call
Teach getZeroExtendExpr and getSignExtendExpr to use trip-count 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
show more ...
|
#
05c1d372 |
| 27-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Handle ands with ~0 correctly too. This fixes PR4052.
llvm-svn: 70176
|
#
df19948e |
| 25-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Handle ands with 0 and shifts by 0 correctly. These aren't common, but indvars shouldn't crash on them. This fixes PR4054.
llvm-svn: 70051
|
#
b4d9f7a9 |
| 23-Apr-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Simplify trunc(extend(x)) in SCEVs, just for completeness. Also fix some odd whitespace in the same file.
llvm-svn: 69870
|
#
79af854f |
| 22-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Simplify trivial cast-of-cast SCEVs.
llvm-svn: 69809
|
#
c8e23627 |
| 21-Apr-2009 |
Dan Gohman <gohman@apple.com> |
De-pImpl-ify ScalarEvolution. The pImpl pattern doesn't provide much practical benefit in the case of ScalarEvolution, and it's otherwise a nuisance.
llvm-svn: 69749
|
#
e14efcc9 |
| 21-Apr-2009 |
Dan Gohman <gohman@apple.com> |
When turning (ashr(shl(x, n), n)) into sext(trunc(x)), the width of the type to truncate to should be the number of bits of the value that are preserved, not the number that are clobbered with sign-e
When turning (ashr(shl(x, n), n)) into sext(trunc(x)), the width of the 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
show more ...
|
#
0ec05374 |
| 21-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Teach ScalarEvolution how to recognize zext-inreg and sext-inreg, as they appear in LLVM IR. This isn't particularly interesting on its own; this is just setting up some infrastructure.
llvm-svn: 69
Teach ScalarEvolution how to recognize zext-inreg and sext-inreg, as they appear in LLVM IR. This isn't particularly interesting on its own; this is just setting up some infrastructure.
llvm-svn: 69655
show more ...
|
#
c4938497 |
| 21-Apr-2009 |
Dan Gohman <gohman@apple.com> |
This FIXME is fixed, now that SCEV understands pointers.
llvm-svn: 69651
|
#
4860db61 |
| 21-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Factor out a common base class from SCEVTruncateExpr, SCEVZeroExtendExpr, and SCEVSignExtendExpr.
llvm-svn: 69649
|