This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Simple cost model for ipcp
- From: Diego Novillo <dnovillo at google dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 25 Aug 2008 08:19:59 -0400
- Subject: Re: Simple cost model for ipcp
- References: <20080824095630.GV9952@kam.mff.cuni.cz>
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.