> > Running IPA transforms will mess up current_pass (and reset it > to NULL), ICEing later for IPA PTA. I also don't see any > code that would avoid doing IPA transforms twice in case > we put another small IPA pass in the late IPA pass queue. Honza, > I guess we need to add some PROP_ipa_transforms_applied and > simply make the late IPA passes depend on that?
Well, the transforms are added into cgraph node at a time IPA pass is run and then when non-IPA pass is run the transform is applied and removed from the list. The passmanager was originally intended to allow arbitrary ping-pong in between ipa/small-ipa and local passes doing the right thing (i.e. applying the ipa passes run since last non-IPA pass first time non-IPA pass is executed after a sequence of IPA passes. So the transforms are not run twice with IPA-PTA even if apply_ipa_transforms is. Honza