From cbdd8ae08c2cec98ed063a0ef2c237e80539e597 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 27 Jan 2016 20:32:49 +0100 Subject: [PATCH] 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 --- gcc/c/ChangeLog | 7 +++++++ gcc/c/c-decl.c | 19 +++++++++++++++---- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr66869.c | 6 ++++++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr66869.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 7999d2a987a..5341f044d28 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 1ec60420db9..502fa5c7056 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 22a124a1ab3..1ee941396ce 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 00000000000..916d1419982 --- /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; -- 2.30.2