public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jason Merrill <jason@redhat.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [RFC PATCH] c++: Minimal handling of carries_dependency attribute
Date: Wed, 9 Nov 2022 21:18:45 -1000	[thread overview]
Message-ID: <2ba25ae8-bac0-18c8-c9ef-95f48fa48d73@redhat.com> (raw)
In-Reply-To: <Y2uajZKB2Xrjqrtr@tucnak>

On 11/9/22 02:18, Jakub Jelinek wrote:
> On Tue, Nov 08, 2022 at 01:40:03PM -1000, Jason Merrill wrote:
>>> A comment in D2552R1:
>>> "The only questionable (but still conforming) case we found was
>>> [[carries_dependency(some_argument)]] on GCC, where the emitted diagnostic said that the
>>> carries_dependency attribute is not supported, but did not specifically call out the syntax error
>>> in the argument clause."
>>> made me try the following patch, where we'll error at least
>>> for arguments to the attribute and for some uses of the attribute
>>> appertaining to something not mentioned in the standard warn
>>> with different diagnostics (or should that be an error?; clang++
>>> does that, but I think we never do for any attribute, standard or not).
>>> The diagnostics on toplevel attribute declaration is still an
>>> attribute ignored warning and on empty statement different wording.
>>>
>>> The paper additionally mentions
>>> struct X { [[nodiscard]]; }; // no diagnostic on GCC
>>> and 2 cases of missing diagnostics on [[fallthrough]] (guess I should
>>> file a PR about those; one problem is that do { ... } while (0); there
>>> is replaced during genericization just by ... and another that
>>> [[fallthrough]] there is followed by a label, but not user/case/default
>>> label, but an artificial one created from while loop genericization.
>>>
>>> Thoughts on this?
>>
>> LGTM.
> 
> Thanks, committed now.
> Given CWG2538, I wonder whether we shouldn't at least pedwarn rather than
> warning{,_at} for standard attributes that appertain to wrong entities
> (and keep warning{,_at} for non-standard attributes including gnu variants
> of standard attributes).

I don't think that's necessary, but it might be better.  And I guess we 
should separate the warnings for unrecognized attributes vs. misused 
attributes.

> If yes, we'd need to differentiate between the standard attributes
> and gnu variants thereof (I think the C FE does, but C++ FE has
>        /* We used to treat C++11 noreturn attribute as equivalent to GNU's,
>           but no longer: we have to be able to tell [[noreturn]] and
>           __attribute__((noreturn)) apart.  */
>        /* C++14 deprecated attribute is equivalent to GNU's.  */
>        if (is_attribute_p ("deprecated", attr_id))
>          TREE_PURPOSE (TREE_PURPOSE (attribute)) = gnu_identifier;
>        /* C++17 fallthrough attribute is equivalent to GNU's.  */
>        else if (is_attribute_p ("fallthrough", attr_id))
>          TREE_PURPOSE (TREE_PURPOSE (attribute)) = gnu_identifier;
>        /* C++23 assume attribute is equivalent to GNU's.  */
>        else if (is_attribute_p ("assume", attr_id))
>          TREE_PURPOSE (TREE_PURPOSE (attribute)) = gnu_identifier;
> so we'd need to remove that and make sure those standard attributes
> are handled.
> 
> 	Jakub
> 


      reply	other threads:[~2022-11-10  7:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-08 14:42 Jakub Jelinek
2022-11-08 23:40 ` Jason Merrill
2022-11-09 12:18   ` Jakub Jelinek
2022-11-10  7:18     ` Jason Merrill [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2ba25ae8-bac0-18c8-c9ef-95f48fa48d73@redhat.com \
    --to=jason@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).