public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Tom Honermann <tom@honermann.net>
To: Joseph Myers <joseph@codesourcery.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 1/1] c++/106423: Fix pragma suppression of -Wc++20-compat diagnostics.
Date: Sat, 30 Jul 2022 19:05:22 -0400	[thread overview]
Message-ID: <e9432be5-be6a-abaa-84e9-bdf5a78936b2@honermann.net> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2207272308220.535398@digraph.polyomino.org.uk>

On 7/27/22 7:09 PM, Joseph Myers wrote:
> On Sun, 24 Jul 2022, Tom Honermann via Gcc-patches wrote:
>
>> Gcc's '#pragma GCC diagnostic' directives are processed in "early mode"
>> (see handle_pragma_diagnostic_early) for the C++ frontend and, as such,
>> require that the target diagnostic option be enabled for the preprocessor
>> (see c_option_is_from_cpp_diagnostics).  This change modifies the
>> -Wc++20-compat option definition to register it as a preprocessor option
>> so that its associated diagnostics can be suppressed.  The changes also
> There are lots of C++ warning options, all of which should support pragma
> suppression regardless of whether they are relevant to the preprocessor or
> not.  Do they all need this kind of handling, or is it only -Wc++20-compat
> that has some kind of problem?

I had only checked -Wc++20-compat when working on the patch.

I did some spot checking now and confirmed that suppression works as 
expected for C++ for at least the following warnings:
   -Wuninitialized
   -Warray-compare
   -Wbool-compare
   -Wtautological-compare
   -Wterminate

I don't know the diagnostic framework well. As best I can tell, this 
issue is specific to the -Wc++20-compat option and when the particular 
diagnostic is issued (e.g., during lexing as opposed to during parsing). 
The following call chains appear to be relevant.
   cp_lexer_new_main -> cp_lexer_handle_early_pragma -> 
c_invoke_early_pragma_handler
   cp_parser_* -> cp_parser_pragma -> c_invoke_pragma_handler
   (where * might be "declaration", "toplevel_declaration", 
"class_head", "objc_interstitial_code", ...)

The -Wc++20-compat enabled warning regarding new keywords in C++20 is 
issued from cp_lexer_get_preprocessor_token.

Tom.


  reply	other threads:[~2022-07-30 23:05 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-24  4:39 [PATCH 0/1] " Tom Honermann
2022-07-24  4:39 ` [PATCH 1/1] " Tom Honermann
2022-07-27 23:09   ` Joseph Myers
2022-07-30 23:05     ` Tom Honermann [this message]
2022-07-31 15:05       ` Lewis Hyatt
2022-07-31 21:41         ` Tom Honermann
2022-08-01 18:49   ` [PATCH 1/1 v2] " Tom Honermann
2022-08-04 16:42     ` Tom Honermann
2022-08-11 22:44       ` Tom Honermann
2022-08-11 23:59         ` Jason Merrill

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=e9432be5-be6a-abaa-84e9-bdf5a78936b2@honermann.net \
    --to=tom@honermann.net \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=joseph@codesourcery.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).