This is the mail archive of the gcc@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: [RFC] third liveness pass


> On Sun, May 26, 2002 at 02:21:47PM +0200, Jan Hubicka wrote:
> > +       cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
> > +       life_analysis (insns, rtl_dump_file, PROP_DEATH_NOTES
> > + 		     | PROP_KILL_DEAD_CODE | PROP_SCAN_DEAD_CODE
> > + 		     | PROP_EQUAL_NOTES);
> > +       cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE | CLEANUP_PRE_LOOP
> > + 		   | (flag_thread_jumps ? CLEANUP_THREADING : 0));
> > +       if (flag_if_conversion)
> > + 	if_convert (1);
> > +       count_or_remove_death_notes (NULL, 1);
> > +       reg_scan (insns, max_reg_num (), 1);
> > +       close_dump_file (DFI_lifeearly, print_rtl_with_bb, insns);
> > +     }
> > + 
> >     /* Perform global cse.  */
> 
> Hum.  Except for the call to if_convert, this might be exactly
> what Roger needs for his gcse jump threading pass.  Not sure if
> there are any transformations in gcse that would invalidate this
> information...
> 
> Thoughts?

I need exactly the same for code hoisting in GCSE as well (to validate
that I can move insn clobbering hard registers).  I also need the
liveness in the if conversion for double test converison pass.  Andreas
just benchmarked it and it appers to not be very effective for SPEC (1-2
points in the benchmarks, ifcvt adds 3 points), but it saves some of GCC
overhead (helps a lot to insn-attrtab style of sources).

It is easy to keep liveness up-to-date inside gcse by dirty blocks.
GCSE only adds global hard registers that is no problem for my code
hoisitng stuff.

Honza
> 
> 
> 
> r~


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