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: Simple cost model for ipcp


On 8/24/08 5:56 AM, Jan Hubicka wrote:
Hi
this patch adds simple cost model into ipcp.  It makes ipcp to realize
what constant propagation is for free and what cause code size growth
and code size growth is limited to 10%.

Nice.



+ + /* Estimate cost of clonning NODE. */
+ static long

Blank line after comment.


+ ipcp_estimate_clonning_cost (struct cgraph_node *node)
+ {
+ int freq_sum = 1;
+ gcov_type count_sum = 1;
+ struct cgraph_edge *e;
+ int cost;
+ + /* When we don't need original clone; we should always propagate. */
+ if (!ipcp_need_original_clone_p (node))
+ return 0;
+ + for (e = node->callers; e; e = e->next_caller)
+ if (!bitmap_bit_p (dead_nodes, e->caller->uid)
+ && !ipcp_need_redirect_p (e))
+ {
+ count_sum += e->count;
+ freq_sum += e->frequency + 1;
+ }
+ + cost = node->local.inline_summary.self_insns * 1000;
+ if (max_count)
+ cost /= count_sum * 1000 / max_count + 1;
+ else
+ cost /= freq_sum * 1000 / REG_BR_PROB_BASE + 1;
+ if (dump_file)
+ fprintf (dump_file, "Cost of versioning %s is %i, (size: %i, freq: %i)\n",
+ cgraph_node_name (node), cost, node->local.inline_summary.self_insns,
+ freq_sum);
+ return false;
+ }

This function returns 'long' but it seems to be returning a boolean value. It also computes a cost, but does nothing significant with it.

+ + /* Return number of live constant parameters. */
+ static int

Blank line after comment. Seems to happen all over the file, so at least it's consistent.

  	 "inline-unit-growth",
  	 "how much can given compilation unit grow because of the inlining (in percent)",
  	 30, 0, 0)
+ DEFPARAM(PARAM_IPCP_UNIT_GROWTH,
+ 	 "ipcp-unit-growth",
+ 	 "how much can given compilation unit grow because of the interprocedural constant propagation (in percent)",

How about: "Maximum percentage that a given compilation unit may grow due to interprocedural constant propagation."


Diego.



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