This is the mail archive of the
mailing list for the GCC project.
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
gcc_assert (mode & CLEANUP_CROSSJUMP);
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.