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 <[email protected]> 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