]> gcc.gnu.org Git - gcc.git/commitdiff
re PR debug/66869 (-Wunused-function no longer warns for static declarations without...
authorJakub Jelinek <jakub@redhat.com>
Wed, 27 Jan 2016 19:32:49 +0000 (20:32 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 27 Jan 2016 19:32:49 +0000 (20:32 +0100)
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
gcc/c/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr66869.c [new file with mode: 0644]

index 7999d2a987a82a5707bc7e1d661ecd1244861a95..5341f044d284e51d842187fd75611a82d6d55fd3 100644 (file)
@@ -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
index 1ec60420db9c758c9f32cdf874ece697c7dc2c8b..502fa5c70569f7c50d28ae394c44fa266db68164 100644 (file)
@@ -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);
index 22a124a1ab396e166ae9d7d9a4ab60c426969cd7..1ee941396ce52ef71b22991773a31ada8b86a275 100644 (file)
@@ -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 (file)
index 0000000..916d141
--- /dev/null
@@ -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;
This page took 0.086134 seconds and 5 git commands to generate.