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