http://codereview.appspot.com/6306054/diff/1/cgraph.h File cgraph.h (right):
http://codereview.appspot.com/6306054/diff/1/cgraph.h#newcode410 cgraph.h:410: Why not putting this into value-prof.h? http://codereview.appspot.com/6306054/diff/1/ipa-split.c File ipa-split.c (right): http://codereview.appspot.com/6306054/diff/1/ipa-split.c#newcode1314 ipa-split.c:1314: && (!flag_lto || flag_ripa_stream || !node->local.externally_visible)) comment here? http://codereview.appspot.com/6306054/diff/1/lto-streamer-in.c File lto-streamer-in.c (right): http://codereview.appspot.com/6306054/diff/1/lto-streamer-in.c#newcode996 lto-streamer-in.c:996: if (input_types_compatible_p (TREE_TYPE (tem), Is this a general LTO fix? http://codereview.appspot.com/6306054/diff/1/lto-streamer-in.c#newcode1153 lto-streamer-in.c:1153: More comments needed here. http://codereview.appspot.com/6306054/diff/1/value-prof.c File value-prof.c (right): http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1252 value-prof.c:1252: /* When we replace cgraph_node with prevailing_node, update the capital for parameter. http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1660 value-prof.c:1660: gimple_ic_transform_mult_targ2 (gimple stmt, Since this is a helper function, change the name to gimple_ic_transform_mult_targ_1 http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1712 value-prof.c:1712: if (val2 && ((count2 * 2) >= (all - count1)) This heuristics need to be unified at some point. http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1717 value-prof.c:1717: if (direct_call1 && !direct_call1->decl) Why null decl? is it a bug? http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1727 value-prof.c:1727: init_icall_promotion_info_htab(); space. http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1858 value-prof.c:1858: icall_counters[4] = gimple_bb (stmt)->count; It is better to put the total count as separate parameter or at index 0 -- for future extension of more than 2 targets (The data is already there). http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1868 value-prof.c:1868: gimple_ic_transform_mult_targ1 (struct cgraph_edge *call_edge) A better name -- maybe cgraph_ic_transform_mult_targ, since it takes a cgraph edge? http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1878 value-prof.c:1878: val = (icall_promotion_info_t *) XNEW (icall_promotion_info_t); XNEWC -- or use a local variable and initialize to 0. http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1881 value-prof.c:1881: slot = htab_find_slot (icall_promotion_info_htab, val, NO_INSERT); Why does it need to do look up? http://codereview.appspot.com/6306054/diff/1/value-prof.c#newcode1884 value-prof.c:1884: Memory leak here -- or use local variable vor val. http://codereview.appspot.com/6306054/