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: [cfg-branch]: Software Trace Cache


> Hi,
> 
> I'm sending again the Software Trace Cache. It now finds traces "exactly" like described in http://citeseer.nj.nec.com/15361.html

Thanks, lets use it as base for future experimenting.

I was thinking a bit about the reverse tracing idea.  I can see how it works
differently and I can bring testcases for both heuristics to perform better, so
I really don't know which one is the proper one.

> +/* Compute the key (for the heap) of the basic block BB.  */
> +#define BB_TO_KEY(bb) ((BB_FREQ_MAX)-((bb)->frequency))

I guess you can use negative keys dirrectly.
The frequencies can exceed the BB_FREQ_MAX macro, quite surprisingly, when
crossjumping manages to merge two frequent paths together.

> +  int branch_threshold[] = {400, 200, 100, 0};
> +  int exec_threshold[] = {500, 200, 50, 0};

Shouldn't this be normalized to REG_BB_FREQ_BASE and MAX_BB_FREQ so we can
change the constants later w/o affecting the behaviour of algorithm?

> +  /* make_reorder_chain (); */

Remove the comment and make_reorder_chain function.

Otherwise OK.

Honza
> +  find_traces ();
>  
>    if (rtl_dump_file)
>      dump_flow_info (rtl_dump_file);


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