[Bug bootstrap/85921] /gcc/c-family/c-warn.c fails to build
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Fri May 25 12:35:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85921
--- Comment #11 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 25 May 2018, jakub at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85921
>
> --- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> Or just get rid of the bogus variable.
> const char *noinline = "noinline";
>
> if (DECL_DECLARED_INLINE_P (newdecl)
> && DECL_UNINLINABLE (olddecl)
> && lookup_attribute (noinline, DECL_ATTRIBUTES (olddecl)))
> warned |= warning (OPT_Wattributes, "inline declaration of %qD follows "
> "declaration with attribute %qs", newdecl, noinline);
> else if (DECL_DECLARED_INLINE_P (olddecl)
> && DECL_UNINLINABLE (newdecl)
> && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl)))
> warned |= warning (OPT_Wattributes, "declaration of %q+D with attribute "
> "%qs follows inline declaration", newdecl, noinline);
>
> So it uses "noinline" in the second lookup_attribute, but noinline in the first
> one.
>
> Something like:
> --- gcc/c-warn.c.jj 2018-05-21 13:15:33.878575581 +0200
> +++ gcc/c-warn.c 2018-05-25 14:28:12.151050892 +0200
> @@ -2246,18 +2246,16 @@ diagnose_mismatched_attributes (tree old
> newdecl);
>
> /* Diagnose inline __attribute__ ((noinline)) which is silly. */
> - const char *noinline = "noinline";
> -
> if (DECL_DECLARED_INLINE_P (newdecl)
> && DECL_UNINLINABLE (olddecl)
> - && lookup_attribute (noinline, DECL_ATTRIBUTES (olddecl)))
> + && lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
> warned |= warning (OPT_Wattributes, "inline declaration of %qD follows "
> - "declaration with attribute %qs", newdecl, noinline);
> + "declaration with attribute %<noinline%>", newdecl);
> else if (DECL_DECLARED_INLINE_P (olddecl)
> && DECL_UNINLINABLE (newdecl)
> && lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl)))
> warned |= warning (OPT_Wattributes, "declaration of %q+D with attribute "
> - "%qs follows inline declaration", newdecl, noinline);
> + "%<noinline%> follows inline declaration", newdecl);
>
> return warned;
> }
>
> perhaps for backports don't change the wording of the translatable message and
> just use "noinline" instead of noinline.
Maybe it was changed to this to make translation easier?
More information about the Gcc-bugs
mailing list