On Wed, Oct 05, 2022 at 01:49:40PM +0200, Martin Liška wrote:
>       PR c/107156
> 
> gcc/ChangeLog:
> 
>       * attribs.h (lookup_attribute_by_prefix): Support attributes
>       starting with underscore (like _noreturn, or __Noreturn).

There are no _noreturn or __Noreturn attributes, there is just
_Noreturn.
And, the assert is useful to catch that non-canonicalized attributes
don't make it into the attribute lists.
Now that we have the first attribute that starts with an underscore
in canonicalized form (do we accept ___Noreturn__ attribute too, perhaps
we shouldn't?), I'd say instead of removing the assert it should verify
        gcc_checking_assert (attr_len == 0 || p[0] != '_'
                             || (ident_len > 1 && p[1] != '_'));
?
> ---
>  gcc/attribs.h | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/gcc/attribs.h b/gcc/attribs.h
> index b2836560fc2..706d35e63d8 100644
> --- a/gcc/attribs.h
> +++ b/gcc/attribs.h
> @@ -274,8 +274,6 @@ lookup_attribute_by_prefix (const char *attr_name, tree 
> list)
>           }
>  
>         const char *p = IDENTIFIER_POINTER (name);
> -       gcc_checking_assert (attr_len == 0 || p[0] != '_');
> -
>         if (strncmp (attr_name, p, attr_len) == 0)
>           break;
>  
> -- 
> 2.37.3

        Jakub

Reply via email to