This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ifcvt/crossjump patch: Fix PR 42496, 21803


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]