From baac8f710e35cfea14060e5eca49dbb49ffc294d Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 3 Jul 2024 17:25:53 -0400 Subject: [PATCH] c++: OVERLOAD in diagnostics In modules we can get an OVERLOAD around a non-function, so let's tail recurse instead of falling through. As a result we start printing the template header in this testcase. gcc/cp/ChangeLog: * error.cc (dump_decl) [OVERLOAD]: Recurse on single case. gcc/testsuite/ChangeLog: * g++.dg/warn/pr61945.C: Adjust diagnostic. --- gcc/cp/error.cc | 6 ++---- gcc/testsuite/g++.dg/warn/pr61945.C | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index 171a352c85fd..1f36563ae2cc 100644 --- a/gcc/cp/error.cc +++ b/gcc/cp/error.cc @@ -1407,10 +1407,8 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags) break; } - /* If there's only one function, just treat it like an ordinary - FUNCTION_DECL. */ - t = OVL_FIRST (t); - /* Fall through. */ + /* If there's only one function, dump that. */ + return dump_decl (pp, OVL_FIRST (t), flags); case FUNCTION_DECL: if (! DECL_LANG_SPECIFIC (t)) diff --git a/gcc/testsuite/g++.dg/warn/pr61945.C b/gcc/testsuite/g++.dg/warn/pr61945.C index 3d40581e5e35..2252330835fb 100644 --- a/gcc/testsuite/g++.dg/warn/pr61945.C +++ b/gcc/testsuite/g++.dg/warn/pr61945.C @@ -7,5 +7,5 @@ class A { }; class B : A { template - void foo (); // { dg-message "by .B::foo\\(\\)." } + void foo (); // { dg-message "by .*B::foo\\(\\)." } }; -- 2.47.2