better-storesink

View source
better-storesink
  • Contributors
    1. Loading...
Author Commit Message Date Builds
250+ commits behind default.
Carl Friedrich Bolz-Tereick
remove the previous storesink (it's fully replaced by the new CSE pass)
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
there's not actually a need for a separate union find, just use variable_families
Carl Friedrich Bolz-Tereick
remove the ability to deal with elidable calls: this is never useful anywhere in pypy
Carl Friedrich Bolz-Tereick
document and cleanup stuff
Carl Friedrich Bolz-Tereick
don't remove things if they can raise
Carl Friedrich Bolz-Tereick
cache elidable calls
Carl Friedrich Bolz-Tereick
don't redo identical writes
Carl Friedrich Bolz-Tereick
forward the size of an object from malloc_varsize to getarraysize
Carl Friedrich Bolz-Tereick
merge
Carl Friedrich Bolz-Tereick
loop_blocks was broken in complex cases
Carl Friedrich Bolz-Tereick
a passing test
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
don't optimize array fields of virtualizables (otherwise they can end up being passed around too much)
Carl Friedrich Bolz-Tereick
merge default
Carl Friedrich Bolz-Tereick
be more careful about merging value, never make the results of find_rep the result of the merge. it's only for keys. add that as a comment.
Carl Friedrich Bolz-Tereick
factor out the rewriting to same_as, with an extra safety check
Carl Friedrich Bolz-Tereick
just use a second union find
Carl Friedrich Bolz-Tereick
just call constfold after cse to remove constant operations, instead of doing it badly in CSE itself
Carl Friedrich Bolz-Tereick
make cast_pointer introduce a union to be able to track things better this requires the keys of the heapcache to also store the concretetype of the variable where the actual setfield/getfield is performed
Carl Friedrich Bolz-Tereick
used the wrong cache in two places while merging (probably benign, but leads to less good code)
Carl Friedrich Bolz-Tereick
a small tweak and two XXXs
Carl Friedrich Bolz-Tereick
fix immutable checks
Carl Friedrich Bolz-Tereick
constant-fold reads from immutable fields of constants
Carl Friedrich Bolz-Tereick
safer mechanism for storing new equivalencies than updating the variable_families
Carl Friedrich Bolz-Tereick
compute the merged result more systematically
Carl Friedrich Bolz-Tereick
refactor
Carl Friedrich Bolz-Tereick
fix bug
Carl Friedrich Bolz-Tereick
better logging
Carl Friedrich Bolz-Tereick
add some logging
Carl Friedrich Bolz-Tereick
two fixes
Carl Friedrich Bolz-Tereick
add statistics printing after store sinking
Carl Friedrich Bolz-Tereick
a few corner cases
Carl Friedrich Bolz-Tereick
support for removing loop-invariant heap reads
Carl Friedrich Bolz-Tereick
actually super easy: support CSE on loop-invariant operations (SSA makes this simple)
Carl Friedrich Bolz-Tereick
support for more complex cases in the merge code: sometimes there are two operations in the cache that happen on different arguments. but those arguments are merged into one variable at the merge. this leads to a new entry in the cache of the merged block. (a bit terrible code, needs a refactoring)
Carl Friedrich Bolz-Tereick
use the write analyzer to know when to invalidate the cache
Carl Friedrich Bolz-Tereick
experiment with a more general common subexpression elimination. The algorithm is a simple forward pass, merging information at control flow merges. It subsumes storesink.py and remove_duplicate_casts