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