c++: bogus warning w/ deduction guide in anon ns [PR106604]
commitf50f603cbfd05653555e9856360c83108bbd1d8a
authorPatrick Palka <ppalka@redhat.com>
Sat, 12 Aug 2023 01:13:23 +0000 (11 21:13 -0400)
committerPatrick Palka <ppalka@redhat.com>
Sat, 12 Aug 2023 01:13:23 +0000 (11 21:13 -0400)
tree99f332955c64ae70746baa6c6782dcc9a4e7898a
parent066c260ad09dde95f43e503f7242b011d17a10f6
c++: bogus warning w/ deduction guide in anon ns [PR106604]

Here we're unintentionally issuing a "declared static but never defined"
warning from wrapup_namespace_globals for a deduction guide declared in
an anonymous namespace.  This patch fixes this by giving deduction guides
a dummy DECL_INITIAL, which suppresses the warning and also allows us to
simplify redeclaration checking for them.

Co-authored-by: Jason Merrill <jason@redhat.com>
PR c++/106604

gcc/cp/ChangeLog:

* decl.cc (redeclaration_error_message): Remove special handling
for deduction guides.
(grokfndecl): Give deduction guides a dummy DECL_INITIAL.

gcc/testsuite/ChangeLog:

* g++.dg/cpp1z/class-deduction74.C: Expect "defined" instead
of "declared" in the repeated deduction guide diagnostics.
* g++.dg/cpp1z/class-deduction116.C: New test.
gcc/cp/decl.cc
gcc/testsuite/g++.dg/cpp1z/class-deduction116.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1z/class-deduction74.C