Message ID | ZbptZrq2JdbbzPd3@redhat.com |
---|---|
State | New |
Headers | show |
Series | [v2] c++: add deprecation notice for -fconcepts-ts | expand |
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
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}