aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/class.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/Wsuggest-override-2.C9
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a1c32a1..a43001a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2019-05-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/78010 - bogus -Wsuggest-override warning on final function.
+ * class.c (check_for_override): Don't warn for final functions.
+
2019-05-10 Jakub Jelinek <jakub@redhat.com>
PR pch/90326
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 712169c..a47777c 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -2780,7 +2780,9 @@ check_for_override (tree decl, tree ctype)
{
DECL_VINDEX (decl) = decl;
overrides_found = true;
- if (warn_override && !DECL_OVERRIDE_P (decl)
+ if (warn_override
+ && !DECL_OVERRIDE_P (decl)
+ && !DECL_FINAL_P (decl)
&& !DECL_DESTRUCTOR_P (decl))
warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wsuggest_override,
"%qD can be marked override", decl);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b42e68c..ac85d09 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-05-10 Marek Polacek <polacek@redhat.com>
+
+ PR c++/78010 - bogus -Wsuggest-override warning on final function.
+ * g++.dg/warn/Wsuggest-override-2.C: New test.
+
2019-05-10 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/90385
diff --git a/gcc/testsuite/g++.dg/warn/Wsuggest-override-2.C b/gcc/testsuite/g++.dg/warn/Wsuggest-override-2.C
new file mode 100644
index 0000000..4948902
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wsuggest-override-2.C
@@ -0,0 +1,9 @@
+// PR c++/78010
+// { dg-options "-std=c++11 -Wsuggest-override" }
+
+struct A {
+ virtual void f();
+};
+struct B : A {
+ void f() final; // { dg-bogus "can be marked override" }
+};