Optimize df_worklist_dataflow

Jan Hubicka hubicka@ucw.cz
Sat Jun 12 21:04:00 GMT 2010


> On Sat, Jun 12, 2010 at 3:40 PM, Jan Hubicka <hubicka@ucw.cz> wrote:
> 
> 
> > Everythign in the main dataflow loop seems performance critical, so one age
> > is stored in vector and the last change age (that is accessed more times)
> > in the AUX field of BB structure.
> 
> Why not store both in a vector?  I really dislike using the void*
> pointer aux field for an integer value, casting back-and-forth from
> (void*) to (size_t).

Because I don't want to pack memory cache misses.  We arrive to BB structure
and check it anyway, so bb->aux is in cache. Another vector would be not.
> 
> 
> >        * df-problems.c (df_rd_confluence_n, df_lr_confluence_n, df_live_confluence_n,
> >        df_byte_lr_confluence_n, df_md_confluence_n): Return true if something changed.
> >        * df.h (df_confluence_function_n): Return bool.
> >        * df-core.c (df_worklist_propagate_forward, df_worklist_propagate_backward):
> >        track changes and ages.
> 
> Nit: s/track/Track/
> 
> You should also explain the algorithmic changes you're making. This
> "age" trick is not found in text-book dataflow solvers, so it's not as
> obvious as the existing code. Therefore, please add a not-too-small

Hmm, I tought it is not my invention, but I don not remember seeing it anywhere.

Honza



More information about the Gcc-patches mailing list