This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [GOOGLE] Change function naming to use context function assembler name to replace function id
- From: Xinliang David Li <davidxl at google dot com>
- To: Dehao Chen <dehao at google dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 2 May 2013 16:42:15 -0700
- Subject: Re: [GOOGLE] Change function naming to use context function assembler name to replace function id
- References: <CAO2gOZUYnTbqnN_0vD_Q-K0KO7xFgrNXOoDx56eninn5jAjMYg at mail dot gmail dot com> <CAAkRFZLn--kb_Ma3A-1X-+_wgOxmDhxjbgU42xCeto9BsZvuXA at mail dot gmail dot com> <CAO2gOZUHW-+OE3hKz1g1zLyFoCV7RF=cefM8ACc6LMdJEjc+BQ at mail dot gmail dot com> <CAO2gOZUgdYj9Dz-iOMy3f4tKsAhKK60_YLc_rFakG6Vd9ae7iQ at mail dot gmail dot com>
ok.
thanks,
David
On Thu, May 2, 2013 at 4:38 PM, Dehao Chen <dehao@google.com> wrote:
> The root problem is that -fsigned-char and -funsigned-char is
> incompatible. The fix of the problem:
>
> Index: coverage.c
> ===================================================================
> --- coverage.c (revision 198362)
> +++ coverage.c (working copy)
> @@ -336,6 +336,7 @@
> { "-fsized-delete", "-fno-sized-delete", false },
> { "-frtti", "-fno-rtti", true },
> { "-fstrict-aliasing", "-fno-strict-aliasing", true },
> + { "-fsigned-char", "-funsigned-char", true},
> { NULL, NULL, false }
> };
>
> Ok for google branches?
>
> Thanks,
> Dehao
>
> On Wed, May 1, 2013 at 10:26 AM, Dehao Chen <dehao@google.com> wrote:
>> I've seen a case when func_id in aux module is not the same (off by
>> 1). This is when -fexception is specified. I had not looked into why
>> though. I'll find out why it is off-by-1
>>
>> Dehao
>>
>> On Wed, May 1, 2013 at 9:57 AM, Xinliang David Li <davidxl@google.com> wrote:
>>> 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);