This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] third liveness pass
- From: Jan Hubicka <jh at suse dot cz>
- To: Richard Henderson <rth at redhat dot com>
- Cc: Jan Hubicka <jh at suse dot cz>, Roger Sayle <roger at eyesopen dot com>,gcc at gcc dot gnu dot org, law at cygnus dot com, gcc-pdo at atrey dot karlin dot mff dot cuni dot cz
- Date: Mon, 27 May 2002 08:49:01 +0200
- Subject: Re: [RFC] third liveness pass
- References: <20020526122147.GM21915@atrey.karlin.mff.cuni.cz> <20020526191956.B2011@redhat.com>
> 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~