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: [GOOGLE] Change function naming to use context function assembler name to replace function id


On Tue, Apr 30, 2013 at 4:10 PM, Dehao Chen <dehao@google.com> wrote:
> This patch changes to use context function name to replace function
> id, which is not available in AutoFDO builds.

Why isn't func_id not available in autofdo builds? The func-id for the
the same function should remain the same regardless whether the module
is compiled as an aux module or the primary module.

David

>
> Bootstrapped and passed regression tests.
>
> OK for google branches?
>
> Thanks,
> Dehao
>
> Index: gcc/l-ipo.c
> ===================================================================
> --- gcc/l-ipo.c (revision 198469)
> +++ gcc/l-ipo.c (working copy)
> @@ -1714,9 +1714,10 @@ create_unique_name (tree decl, unsigned module_id)
>  {
>    tree id, assemb_id;
>    char *assembler_name;
> +  const char *context = NULL;
>    const char *name;
> -  struct  function *context = NULL;
>    int seq = 0;
> +  int len;
>
>    if (TREE_CODE (decl) == FUNCTION_DECL)
>      {
> @@ -1740,7 +1741,8 @@ create_unique_name (tree decl, unsigned module_id)
>        else if (TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL)
>          {
>            id = DECL_NAME (decl);
> -          context = DECL_STRUCT_FUNCTION (DECL_CONTEXT (decl));
> +          context = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (
> +      DECL_CONTEXT (decl)));
>          }
>        else
>          /* file scope context */
> @@ -1748,17 +1750,12 @@ create_unique_name (tree decl, unsigned module_id)
>      }
>
>    name = IDENTIFIER_POINTER (id);
> +  len = strlen (name) + context ? strlen (context) : 0;
> +  assembler_name = (char*) alloca (len + 30);
>    if (context)
> -    {
> -      char *n;
> -      unsigned fno =  FUNC_DECL_FUNC_ID (context);
> -      n = (char *)alloca (strlen (name) + 15);
> -      sprintf (n, "%s.%u", name, fno);
> -      name = n;
> -    }
> -
> -  assembler_name = (char*) alloca (strlen (name) + 30);
> -  sprintf (assembler_name, "%s.cmo.%u", name, module_id);
> +    sprintf (assembler_name, "%s.%s.cmo.%u", context, name, module_id);
> +  else
> +    sprintf (assembler_name, "%s.cmo.%u", name, module_id);
>    seq = get_name_seq_num (assembler_name);
>    if (seq)
>      sprintf (assembler_name, "%s.%d", assembler_name, seq);


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