http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53958
--- Comment #8 from Alexandre Oliva <aoliva at gcc dot gnu.org> --- Jakub is right WRT onepart vs non-onepart vars. Now, I can't think of any why the union/intersection couldn't be done incrementally, and only for changed incoming sets (but how would you tell an incoming set changed?). IIRC, onepart and non-onepart sets are effective disjoint, even if they share the same data structures, so when we perform union on one and intersection on another we could avoid doing that repeatedly.