re PR c/15004 ([unit-at-a-time] no warning for unused paramater in static function)
authorJan Hubicka <jh@suse.cz>
Wed, 28 Apr 2004 20:40:55 +0000 (22:40 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 28 Apr 2004 20:40:55 +0000 (20:40 +0000)
* gcc.dg/unused-6.c: New test.

PR c/15004
* function.c (do_warn_unused_parameter): Break out form ...
(expand_function_end): ... here; warn only when not using cgraphunit.
* function.h (do_warn_unused_parameter): Declare.
* cgraphunit.c: Include function.h.
(cgraph_finalize_function): Do unused parameter warning.
* Makefile.in (cgraphunit.o): Depend on function.h

From-SVN: r81260

gcc/ChangeLog
gcc/Makefile.in
gcc/cgraphunit.c
gcc/function.c
gcc/function.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/unused-6.c [new file with mode: 0644]

index 72cdbcbd540e1ca06fa4c916a5811ac2585a2825..cc665a4d1d67c60471391d435a6afe55afc7e4c7 100644 (file)
@@ -1,3 +1,13 @@
+2004-04-28  Jan Hubicka  <jh@suse.cz>
+
+       PR c/15004
+       * function.c (do_warn_unused_parameter): Break out form ...
+       (expand_function_end): ... here; warn only when not using cgraphunit.
+       * function.h (do_warn_unused_parameter): Declare.
+       * cgraphunit.c: Include function.h.
+       (cgraph_finalize_function): Do unused parameter warning.
+       * Makefile.in (cgraphunit.o): Depend on function.h
+
 2004-04-28  Joseph S. Myers  <jsm@polyomino.org.uk>
 
        * Makefile.in ($(DESTDIR)$(infodir)/%.info): Don't condition
index e2d74e73678875527fa8607efc2839907b54f37a..b35159b0be671ca637e297fa9372a5e8702b74c4 100644 (file)
@@ -1660,7 +1660,8 @@ cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
    langhooks.h toplev.h flags.h $(GGC_H)  $(TARGET_H) cgraph.h gt-cgraph.h \
    output.h intl.h
 cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
-   langhooks.h tree-inline.h toplev.h flags.h $(GGC_H)  $(TARGET_H) cgraph.h intl.h
+   langhooks.h tree-inline.h toplev.h flags.h $(GGC_H)  $(TARGET_H) cgraph.h intl.h \
+   function.h
 coverage.o : coverage.c gcov-io.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
    $(TM_H) $(RTL_H) $(TREE_H) flags.h output.h $(REGS_H) $(EXPR_H) function.h \
    toplev.h $(GGC_H) $(TARGET_H) langhooks.h $(COVERAGE_H) libfuncs.h \
index 7495a7595e5d55515826383120acab0ac387eee2..4bdd41a5aa97f6e948a4a85d7aeab9feee15f420 100644 (file)
@@ -183,6 +183,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "fibheap.h"
 #include "c-common.h"
 #include "intl.h"
+#include "function.h"
 
 #define INSNS_PER_CALL 10
 
@@ -377,6 +378,10 @@ cgraph_finalize_function (tree decl, bool nested)
      early then.  */
   if (DECL_EXTERNAL (decl))
     DECL_STRUCT_FUNCTION (decl) = NULL;
+
+  /* Possibly warn about unused parameters.  */
+  if (warn_unused_parameter)
+    do_warn_unused_parameter (decl);
 }
 
 /* Walk tree and record all calls.  Called via walk_tree.  */
index 69f9b8f568b7e020abc41e0979c5f449d51350e7..b1f888f141f9e28641454a9c99f92a9f199cfa01 100644 (file)
@@ -6919,6 +6919,19 @@ use_return_register (void)
   diddle_return_value (do_use_return_reg, NULL);
 }
 
+/* Possibly warn about unused parameters.  */
+void
+do_warn_unused_parameter (tree fn)
+{
+  tree decl;
+
+  for (decl = DECL_ARGUMENTS (fn);
+       decl; decl = TREE_CHAIN (decl))
+    if (!TREE_USED (decl) && TREE_CODE (decl) == PARM_DECL
+       && DECL_NAME (decl) && !DECL_ARTIFICIAL (decl))
+      warning ("%Junused parameter '%D'", decl, decl);
+}
+
 static GTY(()) rtx initial_trampoline;
 
 /* Generate RTL for the end of the current function.  */
@@ -7007,17 +7020,12 @@ expand_function_end (void)
          }
     }
 
-  /* Possibly warn about unused parameters.  */
-  if (warn_unused_parameter)
-    {
-      tree decl;
-
-      for (decl = DECL_ARGUMENTS (current_function_decl);
-          decl; decl = TREE_CHAIN (decl))
-       if (! TREE_USED (decl) && TREE_CODE (decl) == PARM_DECL
-           && DECL_NAME (decl) && ! DECL_ARTIFICIAL (decl))
-          warning ("%Junused parameter '%D'", decl, decl);
-    }
+  /* Possibly warn about unused parameters.
+     When frontend does unit-at-a-time, the warning is already
+     issued at finalization time.  */
+  if (warn_unused_parameter
+      && !lang_hooks.callgraph.expand_function)
+    do_warn_unused_parameter (current_function_decl);
 
   /* Delete handlers for nonlocal gotos if nothing uses them.  */
   if (nonlocal_goto_handler_slots != 0
index 2c3a847cb5816ac6369f2e00e4abc8404cf5676c..7e34633d848badb49280a9f96cd3c356329ebb6c 100644 (file)
@@ -648,4 +648,6 @@ extern const char *current_function_name (void);
 /* Called once, at initialization, to initialize function.c.  */
 extern void init_function_once (void);
 
+extern void do_warn_unused_parameter (tree);
+
 #endif  /* GCC_FUNCTION_H */
index 47fdd8aad44f9c5548d15e5e042d7341fe71981c..1de727de43ebb356128cee72f3628e37dcf88a98 100644 (file)
@@ -1,3 +1,7 @@
+2004-04-28  Jan Hubicka  <jh@suse.cz>
+
+       * gcc.dg/unused-6.c: New test.
+
 2004-04-24  Laurent GUERBY  <laurent@guerby.net>
             Ulrich Weigand  <uweigand@de.ibm.com>
 
diff --git a/gcc/testsuite/gcc.dg/unused-6.c b/gcc/testsuite/gcc.dg/unused-6.c
new file mode 100644 (file)
index 0000000..7651ecb
--- /dev/null
@@ -0,0 +1,11 @@
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -Wunused-parameter" } */
+static int t(int i) /* { dg-warning "unused parameter" "unused parameter warning" } */
+{
+  return 0;
+}
+int tt()
+{
+  return t(0);
+}