ifcvt/crossjump patch: Fix PR 42496, 21803
Paolo Bonzini
bonzini@gnu.org
Thu Jul 29 17:13:00 GMT 2010
On 07/29/2010 07:00 PM, Bernd Schmidt wrote:
> On 07/29/2010 06:19 PM, Paolo Bonzini wrote:
>> I'd like to have a note to the reader that df_analyze is only invoked
>> when you do crossjumping. Please add an assert like
>>
>> if (block_was_dirty)
>> {
>> gcc_assert (mode & CLEANUP_CROSSJUMP);
>> df_analyze ();
>> }
>
> Can do.
>
>> We do not use dataflow otherwise, and it is not necessary to call it
>> gratuitously. Passes know that CFG cleanup destroys dataflow and call
>> it themselves if necessary.
>
> Then again, we probably won't lose much by calling df_analyze during
> cfgcleanup if the following pass needs it anyway - right?
What I meant is I want to document that it's for a special case. I
wouldn't like someone to randomly remove the if just because it happens
to fix his bug. Certainly I didn't want to imply any further change. :-)
>> Second, crossjumping is now more expensive. Does it buy much really to
>> iterate it? Something like
>>
>> mode &= ~CLEANUP_CROSSJUMP;
>>
>> just before iterating may still leave it "good enough".
>
> A quick experiment shows that this causes many missed opportunities.
> (Placed it after the run_fast_dce call).
Thanks. Wishful thinking.
Paolo
More information about the Gcc-patches
mailing list