From: Jakub Jelinek Date: Wed, 27 Jan 2016 19:32:49 +0000 (+0100) Subject: re PR debug/66869 (-Wunused-function no longer warns for static declarations without... X-Git-Tag: basepoints/gcc-7~1272 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbdd8ae08c2cec98ed063a0ef2c237e80539e597;p=thirdparty%2Fgcc.git re PR debug/66869 (-Wunused-function no longer warns for static declarations without definition) PR debug/66869 * c-decl.c (c_write_global_declarations_1): Warn with warn_unused_function if static prototype without definition is not C_DECL_USED. * gcc.dg/pr66869.c: New test. From-SVN: r232899 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 7999d2a987a8..5341f044d284 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,10 @@ +2016-01-27 Jakub Jelinek + + PR debug/66869 + * c-decl.c (c_write_global_declarations_1): Warn with + warn_unused_function if static prototype without definition + is not C_DECL_USED. + 2016-01-27 Marek Polacek PR c/68062 diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c index 1ec60420db9c..502fa5c70569 100644 --- a/gcc/c/c-decl.c +++ b/gcc/c/c-decl.c @@ -10741,11 +10741,22 @@ c_write_global_declarations_1 (tree globals) if (TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl) == 0 && DECL_EXTERNAL (decl) - && !TREE_PUBLIC (decl) - && C_DECL_USED (decl)) + && !TREE_PUBLIC (decl)) { - pedwarn (input_location, 0, "%q+F used but never defined", decl); - TREE_NO_WARNING (decl) = 1; + if (C_DECL_USED (decl)) + { + pedwarn (input_location, 0, "%q+F used but never defined", decl); + TREE_NO_WARNING (decl) = 1; + } + /* For -Wunused-function warn about unused static prototypes. */ + else if (warn_unused_function + && ! DECL_ARTIFICIAL (decl) + && ! TREE_NO_WARNING (decl)) + { + warning (OPT_Wunused_function, + "%q+F declared % but never defined", decl); + TREE_NO_WARNING (decl) = 1; + } } wrapup_global_declaration_1 (decl); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 22a124a1ab39..1ee941396ce5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-01-27 Jakub Jelinek + + PR debug/66869 + * gcc.dg/pr66869.c: New test. + 2016-01-25 Jeff Law PR tree-optimization/68398 diff --git a/gcc/testsuite/gcc.dg/pr66869.c b/gcc/testsuite/gcc.dg/pr66869.c new file mode 100644 index 000000000000..916d1419982c --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr66869.c @@ -0,0 +1,6 @@ +/* PR debug/66869 */ +/* { dg-do compile } */ +/* { dg-options "-Wunused-function" } */ + +static void test (void); /* { dg-warning "'test' declared 'static' but never defined" } */ +int i;