From: Jason Merrill Date: Wed, 3 Jul 2024 21:25:53 +0000 (-0400) Subject: c++: OVERLOAD in diagnostics X-Git-Tag: basepoints/gcc-16~7721 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=baac8f710e35cfea14060e5eca49dbb49ffc294d;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index 171a352c85f..1f36563ae2c 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 3d40581e5e3..2252330835f 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\\(\\)." } };