#
f0022125 |
| 28-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Use a SmallPtrSet as a temporary union predicate; NFC
Summary: Instead of creating and destroying SCEVUnionPredicate instances (which internally creates and destroys a DenseMap), use temporar
[SCEV] Use a SmallPtrSet as a temporary union predicate; NFC
Summary: Instead of creating and destroying SCEVUnionPredicate instances (which internally creates and destroys a DenseMap), use temporary SmallPtrSet instances of remember the set of predicates that will get reified into a SCEVUnionPredicate.
Reviewers: silviu.baranga, sbaranga
Subscribers: sanjoy, mcrosier, llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D25000
llvm-svn: 282606
show more ...
|
#
237c8454 |
| 27-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Replace a struct with a function; NFC
We can do this now thanks to C++11 lambdas.
llvm-svn: 282515
|
#
a2602141 |
| 27-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Use find instead of find_as; NFC
We don't need the extra generality here.
llvm-svn: 282514
|
#
c220ac79 |
| 27-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Reduce the scope of a struct; NFC
llvm-svn: 282513
|
#
c46bceb6 |
| 27-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Remove custom RAII wrapper; NFC
Instead use the pre-existing `scope_exit` class.
llvm-svn: 282512
|
#
db933757 |
| 27-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Make PendingLoopPredicates more frugal; NFCI
I don't expect `PendingLoopPredicates` to have very many elements (e.g. when -O3'ing the sqlite3 amalgamation, `PendingLoopPredicates` has at most
[SCEV] Make PendingLoopPredicates more frugal; NFCI
I don't expect `PendingLoopPredicates` to have very many elements (e.g. when -O3'ing the sqlite3 amalgamation, `PendingLoopPredicates` has at most 3 elements). So now we use a `SmallPtrSet` for it instead of the more heavyweight `DenseSet`.
llvm-svn: 282511
show more ...
|
#
68abda52 |
| 26-Sep-2016 |
Chandler Carruth <chandlerc@gmail.com> |
[SCEV] Fix the order of members in the initializer list.
Noticed due to the warning on this line. Sanjoy is on a less-than-awesome internet connection, so committing on his behalf.
llvm-svn: 282380
|
#
5cb11b64 |
| 26-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Assign LoopPropertiesCache in the move constructor
In a previous change I collapsed two different caches into one. When doing that I noticed that ScalarEvolution's move constructor was not m
[SCEV] Assign LoopPropertiesCache in the move constructor
In a previous change I collapsed two different caches into one. When doing that I noticed that ScalarEvolution's move constructor was not moving those caches.
To keep the previous change simple, I've moved that bugfix into this separate change.
llvm-svn: 282376
show more ...
|
#
5603fc00 |
| 26-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Combine two predicates into one; NFC
Both `loopHasNoSideEffects` and `loopHasNoAbnormalExits` involve walking the loop and maintaining similar sorts of caches. This commit changes SCEV to co
[SCEV] Combine two predicates into one; NFC
Both `loopHasNoSideEffects` and `loopHasNoAbnormalExits` involve walking the loop and maintaining similar sorts of caches. This commit changes SCEV to compute both the predicates via a single walk, and maintain a single cache instead of two.
llvm-svn: 282375
show more ...
|
#
5c4869b3 |
| 26-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Make it obvious BackedgeTakenInfo's constructor steals storage
Specifically, it moves SCEVUnionPredicates from its input into its own storage. Make this obvious at the type level.
llvm-svn:
[SCEV] Make it obvious BackedgeTakenInfo's constructor steals storage
Specifically, it moves SCEVUnionPredicates from its input into its own storage. Make this obvious at the type level.
llvm-svn: 282374
show more ...
|
#
6b76cdf0 |
| 26-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Further isolate incidental data structure; NFC
llvm-svn: 282373
|
#
7326861a |
| 26-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Simplify BackedgeTakenInfo::getMax; NFC
llvm-svn: 282372
|
#
e935c77e |
| 25-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Reserve space in SmallVector; NFC
llvm-svn: 282368
|
#
c9bbf563 |
| 25-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Have ExitNotTakenInfo keep a pointer to its predicate; NFC
SCEVUnionPredicate is a "heavyweight" structure, so it is beneficial to store the (optional) data out of line.
llvm-svn: 282366
|
#
d1eb62ad |
| 25-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Simplify tracking ExitNotTakenInfo instances; NFC
This change simplifies a data structure optimization in the `BackedgeTakenInfo` class for loops with exactly one computable exit.
I've sanit
[SCEV] Simplify tracking ExitNotTakenInfo instances; NFC
This change simplifies a data structure optimization in the `BackedgeTakenInfo` class for loops with exactly one computable exit.
I've sanity checked that this does not regress compile time performance, using sqlite3's amalgamated build.
llvm-svn: 282365
show more ...
|
#
89eea6b2 |
| 25-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Rename a couple of fields; NFC
llvm-svn: 282364
|
#
bdd97102 |
| 25-Sep-2016 |
Sanjoy Das <sanjoy@playingwithpointers.com> |
[SCEV] Remove incidental data structure; NFC
llvm-svn: 282363
|
#
8bbabee2 |
| 16-Sep-2016 |
David L Kreitzer <david.l.kreitzer@intel.com> |
Reapplying r278731 after fixing the problem that caused it to be reverted.
Enhance SCEV to compute the trip count for some loops with unknown stride.
Patch by Pankaj Chawla
Differential Revision:
Reapplying r278731 after fixing the problem that caused it to be reverted.
Enhance SCEV to compute the trip count for some loops with unknown stride.
Patch by Pankaj Chawla
Differential Revision: https://reviews.llvm.org/D22377
llvm-svn: 281732
show more ...
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2 |
|
#
3879035e |
| 17-Aug-2016 |
Hans Wennborg <hans@hanshq.net> |
SCEV: Don't assert about non-SCEV-able value in isSCEVExprNeverPoison() (PR28932)
Differential Revision: https://reviews.llvm.org/D23594
llvm-svn: 278999
|
#
cd1d5aaf |
| 17-Aug-2016 |
Justin Bogner <mail@justinbogner.com> |
Replace a few more "fall through" comments with LLVM_FALLTHROUGH
Follow up to r278902. I had missed "fall through", with a space.
llvm-svn: 278970
|
#
b99b7090 |
| 16-Aug-2016 |
Reid Kleckner <rnk@google.com> |
Revert "Enhance SCEV to compute the trip count for some loops with unknown stride."
This reverts commit r278731. It caused http://crbug.com/638314
llvm-svn: 278853
|
#
7fe18251 |
| 15-Aug-2016 |
David L Kreitzer <david.l.kreitzer@intel.com> |
Enhance SCEV to compute the trip count for some loops with unknown stride.
Patch by Pankaj Chawla
Differential Revision: https://reviews.llvm.org/D22377
llvm-svn: 278731
|
#
c700490f |
| 12-Aug-2016 |
David Majnemer <david.majnemer@gmail.com> |
Use the range variant of remove_if instead of unpacking begin/end
No functionality change is intended.
llvm-svn: 278475
|
#
785858cf |
| 09-Aug-2016 |
Wei Mi <wmi@google.com> |
Recommit "Use ValueOffsetPair to enhance value reuse during SCEV expansion".
The fix for PR28705 will be committed consecutively.
In D12090, the ExprValueMap was added to reuse existing value durin
Recommit "Use ValueOffsetPair to enhance value reuse during SCEV expansion".
The fix for PR28705 will be committed consecutively.
In D12090, the ExprValueMap was added to reuse existing value during SCEV expansion. However, const folding and sext/zext distribution can make the reuse still difficult.
A simplified case is: suppose we know S1 expands to V1 in ExprValueMap, and S1 = S2 + C_a S3 = S2 + C_b where C_a and C_b are different SCEVConstants. Then we'd like to expand S3 as V1 - C_a + C_b instead of expanding S2 literally. It is helpful when S2 is a complex SCEV expr and S2 has no entry in ExprValueMap, which is usually caused by the fact that S3 is generated from S1 after const folding.
In order to do that, we represent ExprValueMap as a mapping from SCEV to ValueOffsetPair. We will save both S1->{V1, 0} and S2->{V1, C_a} into the ExprValueMap when we create SCEV for V1. When S3 is expanded, it will first expand S2 to V1 - C_a because of S2->{V1, C_a} in the map, then expand S3 to V1 - C_a + C_b.
Differential Revision: https://reviews.llvm.org/D21313
llvm-svn: 278160
show more ...
|
#
36e0d01e |
| 09-Aug-2016 |
Sean Silva <chisophugis@gmail.com> |
Consistently use FunctionAnalysisManager
Besides a general consistently benefit, the extra layer of indirection allows the mechanical part of https://reviews.llvm.org/D23256 that requires touching e
Consistently use FunctionAnalysisManager
Besides a general consistently benefit, the extra layer of indirection allows the mechanical part of https://reviews.llvm.org/D23256 that requires touching every transformation and analysis to be factored out cleanly.
Thanks to David for the suggestion.
llvm-svn: 278077
show more ...
|