This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch,avr] Fix PR59396: Ignore leading '*' in warning generation for ISR names
- From: Senthil Kumar Selvaraj <senthil_kumar dot selvaraj at atmel dot com>
- To: Georg-Johann Lay <avr at gjlay dot de>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Denis Chertykov <chertykov at gmail dot com>
- Date: Thu, 13 Mar 2014 21:11:27 +0530
- Subject: Re: [patch,avr] Fix PR59396: Ignore leading '*' in warning generation for ISR names
- Authentication-results: sourceware.org; auth=none
- References: <5321B176 dot 4030505 at gjlay dot de>
On Thu, Mar 13, 2014 at 02:24:06PM +0100, Georg-Johann Lay wrote:
>
> Problem is that the assembler name might or might not be prefixed by '*'
> depending on when TARGET_SET_CURRENT_FUNCTION is called.
>
> The change is just to fix wrong warning because the current implementation
> of TARGET_SET_CURRENT_FUNCTION /always/ skips the first char when the
> assembler name is set.
FWIW, there's default_strip_name_encoding (varasm.c), which does the same
thing, and is used by a couple of other targets.
Regards
Senthil
>
> PR target/59396
> * config/avr/avr.c (avr_set_current_function): Skip the first
> char of the (assembler) name provided it's a '*'.
>
> Index: config/avr/avr.c
> ===================================================================
> --- config/avr/avr.c (revision 208532)
> +++ config/avr/avr.c (working copy)
> @@ -600,10 +600,15 @@ avr_set_current_function (tree decl)
> const char *name;
>
> name = DECL_ASSEMBLER_NAME_SET_P (decl)
> - /* Remove the leading '*' added in set_user_assembler_name. */
> - ? 1 + IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))
> + ? IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))
> : IDENTIFIER_POINTER (DECL_NAME (decl));
>
> + /* Skip a leading '*' that might still prefix the assembler name,
> + e.g. in non-LTO runs. */
> +
> + if (*name == '*')
> + name++;
> +
> /* Silently ignore 'signal' if 'interrupt' is present. AVR-LibC startet
> using this when it switched from SIGNAL and INTERRUPT to ISR. */
>
>