diff options
-rw-r--r-- | gcc/c/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c/c-decl.c | 19 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr66869.c | 6 |
4 files changed, 33 insertions, 4 deletions
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 <jakub@redhat.com> + + 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 <polacek@redhat.com> 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 %<static%> 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 <jakub@redhat.com> + + PR debug/66869 + * gcc.dg/pr66869.c: New test. + 2016-01-25 Jeff Law <law@redhat.com> 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; |