Commits
Nadav Rotem committed 7a5fe1dc0f5
Change the analysis invalidation message from "preserve" to "invalidate".
This commit changes the way passes invalidate analysis. Passes now report the
list of traits that they invalidate. We went back and forth on this a few times
and we are now going back to the invalidation mode. In a few places in the
optimizer passes had to record the fact that they deleted a call or a branch and
had to construct the enum that will contain the preserve list. Now passes can
either use the new enum states that are the intersection of traits or even send
multiple invalidation message.
We are making this change now because Mark added a new kind of invalidation
trait ("function"). Adopting this new invalidation trait required that we
inspect all of the invalidation sites anyway. This commit includes a more
efficient use of the 'function' attribute, and our function passes don't
invalidate the 'function' attribute anymore.