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
>

Reply via email to