On 1/31/24 10:55, Marek Polacek wrote:
On Wed, Jan 31, 2024 at 08:53:00AM -0500, Jason Merrill wrote:
On 1/31/24 03:40, Richard Biener wrote:
On Wed, Jan 31, 2024 at 12:19 AM Marek Polacek <pola...@redhat.com> wrote:

Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?

-- >8 --
We plan to deprecate -fconcepts-ts in GCC 15 and remove the flag_concepts_ts
code.  This note is an admonishing reminder to convert the Concepts TS
code to C++20 Concepts.

What does "deprecated in GCC 15" mean?  Given you output the notice with
GCC 14 it would be better to state when it's going to be removed -
it's effectively
"deprecated" right now then?  Or will it continue to "work" forever
until it bitrots?

Sorry for the wrong choice of words.  I meant deprecated now, removed later.
Agreed, it's deprecated now.  We talked about it having no effect in GCC 15;
the message could say that.  Or we could leave it vague and just say it's
deprecated.

Please also update invoke.texi.

Like this?

Hmm, I'm not sure whether we want to actually remove the option or just the support, as with -fcilkplus. I was assuming the latter, in which case the patch could use some further rewording, but perhaps in the case of extensions like this (and Cilk+) it makes sense to actually remove the option. Any other opinions?

-- >8 --
We plan to remove -fconcepts-ts in GCC 15 and thus remove the flag_concepts_ts
code.  This note is an admonishing reminder to convert the Concepts TS
code to C++20 Concepts.

gcc/c-family/ChangeLog:

        * c-opts.cc (c_common_post_options): Add an inform saying that
        -fconcepts-ts is deprecated and will be removed in GCC 15.

gcc/ChangeLog:

        * doc/invoke.texi: Mention that -fconcepts-ts was deprecated in GCC 14.
---
  gcc/c-family/c-opts.cc | 5 +++++
  gcc/doc/invoke.texi    | 4 +++-
  2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc
index b38a1225ac4..b845aff2226 100644
--- a/gcc/c-family/c-opts.cc
+++ b/gcc/c-family/c-opts.cc
@@ -1139,6 +1139,11 @@ c_common_post_options (const char **pfilename)
    if (cxx_dialect >= cxx20 || flag_concepts_ts)
      flag_concepts = 1;
+ /* -fconcepts-ts will be removed in GCC 15. */
+  if (flag_concepts_ts)
+    inform (input_location, "%<-fconcepts-ts%> is deprecated and will be "
+           "removed in GCC 15; please convert your code to C++20 concepts");
+
    /* -fimmediate-escalation has no effect when immediate functions are not
       supported.  */
    if (flag_immediate_escalation && cxx_dialect < cxx20)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index eb931b984e8..ca2c0e90452 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -3204,7 +3204,9 @@ the language standard, so @option{-fconcepts} defaults to 
on.
  Some constructs that were allowed by the earlier C++ Extensions for
  Concepts Technical Specification, ISO 19217 (2015), but didn't make it
  into the standard, can additionally be enabled by
-@option{-fconcepts-ts}.
+@option{-fconcepts-ts}.  The option @option{-fconcepts-ts} was deprecated
+in GCC 14 and may be removed in GCC 15; users are expected to convert
+their code to C++20 concepts.
@opindex fconstexpr-depth
  @item -fconstexpr-depth=@var{n}

base-commit: f7935beef7b02fbba0adf33fb2ba5c0a27d7e9ff

Reply via email to