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: [PATCH] Fix -fcrossjumping at -O1 (PR rtl-optimization/48156)




On 03/19/2011 09:01 AM, Jakub Jelinek wrote:
On Sat, Mar 19, 2011 at 08:48:55AM -0400, Kenneth Zadeck wrote:
i think that there are two separate questions here:

1) should your original patch go in as you did it, or should it go
in with the last "return false" be an abort?
bool
df_get_bb_dirty (basic_block bb)
{
   return bitmap_bit_p ((df_live
			? df_live : df_lr)->out_of_date_transfer_functions,
		       bb->index);
}

would IMHO work equally well (no need to assert IMHO, it isn't much
different from just segfaulting).  From what I can see, df_get_bb_dirty
is called from ifcvt (both passes, but both are guarded with optimize>  0
and happen while df is computed) and crossjumping (run with -fcrossjumping
even at -O0, but after pass_df_initialize_no_opt, so df_lr is computed too
at least, if not even df_live).
I'd need to bootstrap/regtest it of course, but I don't expect any failures.

i think that this is the right way to go. my view is not just what the code currently does, but also from the perspective of the way i want this to work as the back ends evolve.
2) which dataflow problems should be used at what points during
...
However, if it does not, then some form of your first patch is all
that is necessary.
I believe it doesn't make any difference, but I'll let Paolo comment on it.
I could try to write a patch that would check for any differences
(basically compute for -O2 -fcrossjumping live_union from both DF_LR_OUT (bb)
and df_get_live_out (bb) and if it is different, run can_move_*across twice
and see whether it makes any difference).

yes, see if paolo wants to add anything here.
Jakub


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