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.