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?

-- >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
-- 
2.43.0

Reply via email to