[v2] c++: add deprecation notice for -fconcepts-ts
Checks
Commit Message
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 <polacek@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(-)
base-commit: f7935beef7b02fbba0adf33fb2ba5c0a27d7e9ff
Comments
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 <polacek@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
On Wed, Jan 31, 2024 at 02:00:18PM -0500, Jason Merrill wrote:
> 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 <polacek@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?
I assumed that we'd turn fconcepts-ts into "Ignore", since we've kept
even options like fdeduce-init-list or ffor-scope around.
I suppose in GCC 15 it should be marked as WarnRemoved, but fcilkplus isn't
WarnRemoved, so I'm not sure.
Should I have said "ignored in GCC 15"?
> > -- >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
>
Marek
On 1/31/24 14:07, Marek Polacek wrote:
> On Wed, Jan 31, 2024 at 02:00:18PM -0500, Jason Merrill wrote:
>> 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 <polacek@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?
>
> I assumed that we'd turn fconcepts-ts into "Ignore", since we've kept
> even options like fdeduce-init-list or ffor-scope around.
>
> I suppose in GCC 15 it should be marked as WarnRemoved, but fcilkplus isn't
> WarnRemoved, so I'm not sure.
>
> Should I have said "ignored in GCC 15"?
WarnRemoved sounds right, and since that also says "removed" the patch
is OK as is.
Jason
@@ -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)
@@ -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}