From 04f77d0f3b194ada4e89a3bf8df3b55bf370fbfa Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Mon, 8 May 2006 23:42:17 +0200 Subject: [PATCH] re PR middle-end/25962 (Pointer (null) check after the use in cgraph.c) PR middle-end/25962 * cgraphunit.c (decide_is_function_needed): When not optimizing even unused static functions are needed. * gcc.dg/pr25962.c: New. From-SVN: r113633 --- gcc/ChangeLog | 6 ++++++ gcc/cgraphunit.c | 8 ++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr25962.c | 6 ++++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr25962.c 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() +{ +}