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: Optimize df_worklist_dataflow


> 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


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