On Sat, Oct 21, 2017 at 11:17 PM, Sandra Loosemore <san...@codesourcery.com> wrote: > On 10/20/2017 02:24 AM, Richard Biener wrote: >> >> On Fri, Oct 20, 2017 at 4:09 AM, Sandra Loosemore >> <san...@codesourcery.com> wrote: >>> >>> This patch adds a function to indicate whether the split1 pass has run >>> yet. This is used in part 3 of the patch set to decide whether 32-bit >>> symbolic constant expressions are permitted, e.g. in >>> TARGET_LEGITIMATE_ADDRESS_P and the movsi expander. >>> >>> Since there's currently no usable hook for querying the pass manager >>> where it is relative to another pass, I implemented this using a >>> target-specific pass that runs directly after split1 and does nothing >>> but set a flag. >> >> >> "Nice" hack ;) The only currently existing way would be to add a property >> to the IL state like >> >> const pass_data pass_data_split_all_insns = >> { >> RTL_PASS, /* type */ >> "split1", /* name */ >> OPTGROUP_NONE, /* optinfo_flags */ >> TV_NONE, /* tv_id */ >> 0, /* properties_required */ >> PROP_rtl_split_insns, /* properties_provided */ >> 0, /* properties_destroyed */ >> >> and test that via cfun->curr_properties & PROP_rtl_split_insns >> >> Having run split might be a important enough change to warrant this. >> Likewise reload_completed and reload_in_progress could be transitioned >> to IL properties. >> >> Richard. > > > Well, here's a new version of this patch that implements what you suggested > above. It's certainly simpler than the original version, or the WIP patch I > posted before to add a general hook based on enumerating the passes. Is > this OK?
+#define PROP_rtl_split_insns (1 << 17) /* split1 completed. */ /* RTL has insns split. */ that is, do not mention 'split1' specifically. Ok with that change. Thanks, Richard. > -Sandra >