diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f660c99ec6bc..e685cdb37529 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-05-08 Jan Hubicka + + PR middle-end/25962 + * cgraphunit.c (decide_is_function_needed): When not optimizing even + unused static functions are needed. + 2006-05-08 Roger Sayle PR target/27158 diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 4a7f90e5e7f7..351f5f0caedc 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -216,8 +216,12 @@ decide_is_function_needed (struct cgraph_node *node, tree decl) return true; /* Externally visible functions must be output. The exception is - COMDAT functions that must be output only when they are needed. */ - if ((TREE_PUBLIC (decl) && !flag_whole_program) + COMDAT functions that must be output only when they are needed. + + When not optimizing, also output the static functions. (see + PR25962) + */ + if (((TREE_PUBLIC (decl) || !optimize) && !flag_whole_program) && !DECL_COMDAT (decl) && !DECL_EXTERNAL (decl)) return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0911cd99898f..bd2076bb0edb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-05-08 Jan Hubicka + + PR middle-end/25962 + * gcc.dg/pr25962.c: New. + 2006-05-08 Roger Sayle PR target/27158 diff --git a/gcc/testsuite/gcc.dg/pr25962.c b/gcc/testsuite/gcc.dg/pr25962.c new file mode 100644 index 000000000000..20ac00e0ed6a --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr25962.c @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-O0" } */ +/* { dg-final { scan-assembler "debug_hook" } } */ +static int debug_hook() +{ +}