An explicitly deleted function must be deleted on its first declaration.  We
were diagnosing this error only with -Wpedantic, but always giving the
"previous declaration" note.  This patch removes the -Wpedantic dependency
and also makes the note depend on the previous diagnostic.

Tested x86_64-pc-linux-gnu, applying to trunk.

        PR c++/101106

gcc/cp/ChangeLog:

        * decl.c (duplicate_decls): Make 'deleted after first declaration'
        pedwarn on by default.

gcc/testsuite/ChangeLog:

        * g++.dg/cpp0x/deleted15.C: New test.
---
 gcc/cp/decl.c                          | 9 ++++-----
 gcc/testsuite/g++.dg/cpp0x/deleted15.C | 6 ++++++
 2 files changed, 10 insertions(+), 5 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/cpp0x/deleted15.C

diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 02772e94763..66bcc4be84d 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -2170,11 +2170,10 @@ duplicate_decls (tree newdecl, tree olddecl, bool 
hiding, bool was_hidden)
          if (DECL_DELETED_FN (newdecl))
            {
              auto_diagnostic_group d;
-             pedwarn (newdecl_loc, OPT_Wpedantic,
-                      "deleted definition of %qD is not first declaration",
-                      newdecl);
-             inform (olddecl_loc,
-                     "previous declaration of %qD", olddecl);
+             if (pedwarn (newdecl_loc, 0, "deleted definition of %qD "
+                          "is not first declaration", newdecl))
+               inform (olddecl_loc,
+                       "previous declaration of %qD", olddecl);
            }
          DECL_DELETED_FN (newdecl) |= DECL_DELETED_FN (olddecl);
        }
diff --git a/gcc/testsuite/g++.dg/cpp0x/deleted15.C 
b/gcc/testsuite/g++.dg/cpp0x/deleted15.C
new file mode 100644
index 00000000000..06d2171d6d3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/deleted15.C
@@ -0,0 +1,6 @@
+// PR c++/101106
+// { dg-do compile { target c++11 } }
+// { dg-options "" }
+
+int f();
+int f() = delete;              // { dg-message "not first declaration" }

base-commit: 58e3b17f4c42d050a1768b025712e6d18bcb76ae
-- 
2.27.0

Reply via email to