Any other concern of the patch? I don't really like the name of the parameter myself. Do you have better suggestions?
thanks, David On Thu, Jul 17, 2014 at 10:17 AM, Xinliang David Li <davi...@google.com> wrote: >>> >>> I see why you do not like first_global_object_name because changing it >>> would cause >>> all functions from that unit to drop the profiles. Perhaps we can combine >>> function name >>> and compilation unit (gcov file) name? >> >> that is a good idea -- it will also solve the LTO problem you mentioned >> above. >> >> Will update the patch. > > It already does this (similarly): > > chksum = coverage_checksum_string > (chksum, aux_base_name); > > > The static function defined in the same header will have different > 'aux_base_name' depending on the including module. > > David > > >> >> David >> >>> >>> Honza >>> >>>> chksum = coverage_checksum_string >>>> (chksum, first_global_object_name); >>>> chksum = coverage_checksum_string >>>> @@ -645,7 +650,12 @@ coverage_begin_function (unsigned lineno >>>> >>>> /* Announce function */ >>>> offset = gcov_write_tag (GCOV_TAG_FUNCTION); >>>> - gcov_write_unsigned (current_function_funcdef_no + 1); >>>> + if (PARAM_VALUE (PARAM_PROFILE_FUNC_INTERNAL_ID)) >>>> + gcov_write_unsigned (current_function_funcdef_no + 1); >>>> + else >>>> + gcov_write_unsigned (coverage_compute_profile_id ( >>>> + cgraph_get_node (current_function_decl))); >>>> + >>>> gcov_write_unsigned (lineno_checksum); >>>> gcov_write_unsigned (cfg_checksum); >>>> gcov_write_string (IDENTIFIER_POINTER >>>> @@ -682,8 +692,13 @@ coverage_end_function (unsigned lineno_c >>>> if (!DECL_EXTERNAL (current_function_decl)) >>>> { >>>> item = ggc_alloc<coverage_data> (); >>>> - >>>> - item->ident = current_function_funcdef_no + 1; >>>> + >>>> + if (PARAM_VALUE (PARAM_PROFILE_FUNC_INTERNAL_ID)) >>>> + item->ident = current_function_funcdef_no + 1; >>>> + else >>>> + item->ident = coverage_compute_profile_id ( >>>> + cgraph_get_node (cfun->decl)); >>>> + >>>> item->lineno_checksum = lineno_checksum; >>>> item->cfg_checksum = cfg_checksum; >>>> >>>