On Thu, Jul 31, 2025 at 11:43:17AM +0200, Richard Biener wrote:
> On Sat, Jun 28, 2025 at 12:31 AM Jason Merrill <ja...@redhat.com> wrote:
> >
> > On 6/26/25 4:12 PM, Marek Polacek wrote:
> > > On Wed, Jun 25, 2025 at 03:13:25PM -0400, Jason Merrill wrote:
> > >> On 6/25/25 1:28 PM, Marek Polacek wrote:
> > >>> @@ -24604,7 +24604,7 @@ resolve_nondeduced_context (tree orig_expr, 
> > >>> tsubst_flags_t complain)
> > >>>     }
> > >>>          if (good == 1)
> > >>>     {
> > >>> -     mark_used (goodfn);
> > >>> +     mark_used (goodfn, complain);
> > >>
> > >> Actually, if we're going to pass complain, we should also check the 
> > >> return
> > >> value; the usual pattern is
> > >>
> > >>>            if (!mark_used (fn, complain) && !(complain & tf_error))
> > >>>              return error_mark_node;
> > >
> > > OK, done here:
> > >
> > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?
> >
> > OK.
> 
> I have bootstrapped and tested this on the 15 branch, OK there as well?

I'd say go ahead, but can't formally approve.
 
> Thanks,
> Richard.
> 
> > > -- >8 --
> > > Here we end up with "error reporting routines re-entered" because
> > > resolve_nondeduced_context isn't passing complain to mark_used.
> > >
> > >       PR c++/120756
> > >
> > > gcc/cp/ChangeLog:
> > >
> > >       * pt.cc (resolve_nondeduced_context): Pass complain to mark_used.
> > >
> > > gcc/testsuite/ChangeLog:
> > >
> > >       * g++.dg/warn/deprecated-22.C: New test.
> > > ---
> > >   gcc/cp/pt.cc                              |  3 ++-
> > >   gcc/testsuite/g++.dg/warn/deprecated-22.C | 13 +++++++++++++
> > >   2 files changed, 15 insertions(+), 1 deletion(-)
> > >   create mode 100644 gcc/testsuite/g++.dg/warn/deprecated-22.C
> > >
> > > diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
> > > index deb0106b158..c7a0066a11a 100644
> > > --- a/gcc/cp/pt.cc
> > > +++ b/gcc/cp/pt.cc
> > > @@ -24604,7 +24604,8 @@ resolve_nondeduced_context (tree orig_expr, 
> > > tsubst_flags_t complain)
> > >       }
> > >         if (good == 1)
> > >       {
> > > -       mark_used (goodfn);
> > > +       if (!mark_used (goodfn, complain) && !(complain & tf_error))
> > > +         return error_mark_node;
> > >         expr = goodfn;
> > >         if (baselink)
> > >           expr = build_baselink (BASELINK_BINFO (baselink),
> > > diff --git a/gcc/testsuite/g++.dg/warn/deprecated-22.C 
> > > b/gcc/testsuite/g++.dg/warn/deprecated-22.C
> > > new file mode 100644
> > > index 00000000000..60ee607f717
> > > --- /dev/null
> > > +++ b/gcc/testsuite/g++.dg/warn/deprecated-22.C
> > > @@ -0,0 +1,13 @@
> > > +// PR c++/120756
> > > +// { dg-do compile { target c++11 } }
> > > +
> > > +struct A {
> > > +    template <long> [[deprecated]] void foo ();
> > > +};
> > > +
> > > +template <long t> [[deprecated]] auto bar () -> decltype (&A::foo<t>);
> > > +
> > > +void foo ()
> > > +{
> > > +  bar<0> ();  // { dg-warning "deprecated" }
> > > +}
> > >
> > > base-commit: 5aca8510abea6c3fac3336a7445863db07fd4a06
> >
> 

Marek

Reply via email to