On Fri, Nov 8, 2013 at 10:58 PM, Teresa Johnson wrote: > +static void > +drop_profile (struct cgraph_node *node, bool hot) > +{ > + struct function *fn = DECL_STRUCT_FUNCTION (node->decl); > + > + if (dump_file) > + fprintf (dump_file, > + "Dropping 0 profile for %s/%i. %s based on calls.\n", > + cgraph_node_name (node), node->order, > + hot ? "Function is hot" : "Function is normal"); > + /* We only expect to miss profiles for functions that are reached > + via non-zero call edges in cases where the function may have > + been linked from another module or library (COMDATs and extern > + templates). See the comments below for handle_missing_profiles. */ > + if (!DECL_COMDAT (node->decl) && !DECL_EXTERNAL (node->decl)) > + warning (0, > + "Missing counts for called function %s/%i", > + cgraph_node_name (node), node->order);
Maybe OPT_Wdisabled_optimization? > + > + profile_status_for_function (fn) > + = (flag_guess_branch_prob ? PROFILE_GUESSED : PROFILE_ABSENT); > + node->frequency > + = hot ? NODE_FREQUENCY_HOT : NODE_FREQUENCY_NORMAL; In GCC code style the = goes at the end of the line: profile_status_for_function (fn) (flag_guess_branch_prob ? PROFILE_GUESSED : PROFILE_ABSENT); node->frequency = hot ? NODE_FREQUENCY_HOT : NODE_FREQUENCY_NORMAL; > @@ -2774,6 +2875,9 @@ counts_to_freqs (void) > gcov_type count_max, true_count_max = 0; > basic_block bb; > > + if (!ENTRY_BLOCK_PTR->count) > + return 0; > + Deserves a one-line comment ;-) > +void > +freqs_to_counts (struct cgraph_node *node, gcov_type count) > +{ > + basic_block bb; > + edge_iterator ei; > + edge e; > + struct function *fn = DECL_STRUCT_FUNCTION (node->decl); > + > + FOR_ALL_BB_FN(bb, fn) > + { > + bb->count = apply_scale (count, > + GCOV_COMPUTE_SCALE (bb->frequency, > BB_FREQ_MAX)); > + FOR_EACH_EDGE (e, ei, bb->succs) > + e->count = apply_probability (e->src->count, e->probability); > + } Indent +2: FOR_ALL_BB_FN (bb, fn) { ... } Ciao! Steven