diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-01-29 12:14:42 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-01-29 12:14:42 +0100 |
commit | 16b77b321eb72c5e2e1ec3628c035df80bef8534 (patch) | |
tree | 4e79522ef94c0bd7571b3dc6e653f306c0e08ce9 /gcc | |
parent | f597d5f73c62e535493db57260d85aeeca4d4d54 (diff) | |
download | gcc-16b77b321eb72c5e2e1ec3628c035df80bef8534.zip gcc-16b77b321eb72c5e2e1ec3628c035df80bef8534.tar.gz gcc-16b77b321eb72c5e2e1ec3628c035df80bef8534.tar.bz2 |
re PR debug/66869 (-Wunused-function no longer warns for static declarations without definition)
PR debug/66869
* decl.c (wrapup_globals_for_namespace): Warn about unused static
function declarations.
* g++.dg/warn/Wunused-function2.C: New test.
From-SVN: r232975
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wunused-function2.C | 6 |
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6c66cc4..3b5c9d5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-01-29 Jakub Jelinek <jakub@redhat.com> + + PR debug/66869 + * decl.c (wrapup_globals_for_namespace): Warn about unused static + function declarations. + 2016-01-29 Marek Polacek <polacek@redhat.com> PR c++/69509 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d8915fd..8da87d3 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -879,6 +879,24 @@ wrapup_globals_for_namespace (tree name_space, void* data ATTRIBUTE_UNUSED) tree *vec = statics->address (); int len = statics->length (); + if (warn_unused_function) + { + tree decl; + unsigned int i; + FOR_EACH_VEC_SAFE_ELT (statics, i, decl) + if (TREE_CODE (decl) == FUNCTION_DECL + && DECL_INITIAL (decl) == 0 + && DECL_EXTERNAL (decl) + && !TREE_PUBLIC (decl) + && !DECL_ARTIFICIAL (decl) + && !TREE_NO_WARNING (decl)) + { + warning (OPT_Wunused_function, + "%q+F declared %<static%> but never defined", decl); + TREE_NO_WARNING (decl) = 1; + } + } + /* Write out any globals that need to be output. */ return wrapup_global_declarations (vec, len); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 866f042..d021755 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-01-29 Jakub Jelinek <jakub@redhat.com> + + PR debug/66869 + * g++.dg/warn/Wunused-function2.C: New test. + 2016-01-29 Dominik Vogt <vogt@linux.vnet.ibm.com> * gcc.dg/tree-ssa/ssa-dom-cse-2.c: Require a hardware vector diff --git a/gcc/testsuite/g++.dg/warn/Wunused-function2.C b/gcc/testsuite/g++.dg/warn/Wunused-function2.C new file mode 100644 index 0000000..1b97df1 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wunused-function2.C @@ -0,0 +1,6 @@ +// PR debug/66869 +// { dg-do compile } +// { dg-options "-Wunused-function" } + +static void test (void); // { dg-warning "'void test..' declared 'static' but never defined" } +int i; |