c++: Fix up user_provided_p [PR81349]
authorJakub Jelinek <jakub@redhat.com>
Thu, 26 Mar 2020 08:31:15 +0000 (09:31 +0100)
committerJakub Jelinek <jakub@redhat.com>
Thu, 26 Mar 2020 08:31:15 +0000 (09:31 +0100)
commitdab932d1519ba07fb4c49e6849ee7ceb02c0d603
treea74636b0d3ef492d71bcfc0cd9dd9f65c3a554ed
parent5a1706f63a2024a5c2d878f2efeb8d198214542f
c++: Fix up user_provided_p [PR81349]

The standard says: "A function is user-provided if it is user-declared and
not explicitly defaulted or deleted on its first declaration."
I don't see anything about function templates having different rules here,
but user_provided_p does return true for all TEMPLATE_DECLs.

The following patch fixes it by treating as user-provided only templates
that aren't deleted.

2020-03-26  Jakub Jelinek  <jakub@redhat.com>

PR c++/81349
* class.c (user_provided_p): Use STRIP_TEMPLATE instead of returning
true for all TEMPLATE_DECLs.

* g++.dg/cpp1z/pr81349.C: New test.
gcc/cp/ChangeLog
gcc/cp/class.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1z/pr81349.C [new file with mode: 0644]