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.
Reviewed-by: Jason Merrill <jason@redhat.com>
}
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),
--- /dev/null
+// 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" }
+}