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