On Tue, Oct 03, 2017 at 09:11:05AM -0600, Jeff Law wrote: > On 10/03/2017 05:36 AM, Martin Jambor wrote: > > Hi, > > > > On Mon, Oct 02, 2017 at 01:27:05PM -0600, Sandra Loosemore wrote: > >> Is there an idiom for target-specific back end code to ask the pass manager > >> if a particular pass (e.g., "split1") has already run? > > > > (I might be wrong but) I don't think there is. But it might be a > > useful thing to have generally, it would allow us for example to merge > > early SRA and "late" SRA which differ in behavior only because the > > first one must not touch aggregates that pass_stdarg will operate on. > I was thinking that it would be useful to be able to make this kind of > query as well.
We have properties which the passes can set, of course their number is limited and using those would require changes to the generic code. > > And I guess the infrastructure to do that could be as simple as adding > > a flag (or a counter) to class opt_pass that the pass manager would > > set (or increment) when running the pass. > And as a cleanup that flag ought to be able to replace some of the > existing state flags. I'm thinking about reload_in_progress, > reload_completed, cse_not_expected and likely others. As we have hundreds of passes, it would have to be a per-cfun sbitmap or something similar, with perhaps named bit positions for the standard generic passes and a way to get bit positions for the others (or always look up the pass number)? Jakub