re PR c/4076 (-Wunused doesn't warn about static function only called by itself.)

2007-06-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/4076
	* c-typeck.c (build_external_ref): Don't mark as used if called
	from itself.
	* calls.c (rtx_for_function_call): Likewise.

testsuite/
	* gcc.dg/Wunused-function.c: New.

From-SVN: r126144
parent a4fbe84b
2007-06-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/4076
* c-typeck.c (build_external_ref): Don't mark as used if called
from itself.
* calls.c (rtx_for_function_call): Likewise.
2007-06-30 Richard Sandiford <richard@codesourcery.com> 2007-06-30 Richard Sandiford <richard@codesourcery.com>
Revert: Revert:
......
...@@ -2090,9 +2090,13 @@ build_external_ref (tree id, int fun, location_t loc) ...@@ -2090,9 +2090,13 @@ build_external_ref (tree id, int fun, location_t loc)
if (TREE_DEPRECATED (ref)) if (TREE_DEPRECATED (ref))
warn_deprecated_use (ref); warn_deprecated_use (ref);
if (!skip_evaluation) /* Recursive call does not count as usage. */
assemble_external (ref); if (ref != current_function_decl)
TREE_USED (ref) = 1; {
if (!skip_evaluation)
assemble_external (ref);
TREE_USED (ref) = 1;
}
if (TREE_CODE (ref) == FUNCTION_DECL && !in_alignof) if (TREE_CODE (ref) == FUNCTION_DECL && !in_alignof)
{ {
......
...@@ -1493,7 +1493,7 @@ rtx_for_function_call (tree fndecl, tree addr) ...@@ -1493,7 +1493,7 @@ rtx_for_function_call (tree fndecl, tree addr)
{ {
/* If this is the first use of the function, see if we need to /* If this is the first use of the function, see if we need to
make an external definition for it. */ make an external definition for it. */
if (! TREE_USED (fndecl)) if (!TREE_USED (fndecl) && fndecl != current_function_decl)
{ {
assemble_external (fndecl); assemble_external (fndecl);
TREE_USED (fndecl) = 1; TREE_USED (fndecl) = 1;
......
2007-06-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/4076
* gcc.dg/Wunused-function.c: New.
2007-06-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2007-06-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* gfortran.fortran-torture/compile/inline_1.f90: Fix test. * gfortran.fortran-torture/compile/inline_1.f90: Fix test.
/* PR c/4076 -Wunused doesn't warn about static function only called by itself. */
/* { dg-do compile } */
/* { dg-options "-Wunused-function" } */
static void foo (void) {} /* { dg-warning "'foo' defined but not used" } */
static void bar (void) { bar (); } /* { dg-warning "'bar' defined but not used" } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment