From 9b1959ffcaa3fab49a90eb25f32a815ac22c2a85 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Tue, 30 Jan 2007 10:23:01 +0000 Subject: [PATCH] re PR middle-end/27657 (bogus undefined reference error to static var with -g and -O) 2007-01-30 Richard Guenther PR middle-end/27657 * dwarf2out.c (reference_to_unused): Query varpool if the variable was output. * g++.dg/debug/pr27657.C: New testcase. From-SVN: r121335 --- gcc/ChangeLog | 6 ++++++ gcc/dwarf2out.c | 10 ++++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/debug/pr27657.C | 9 +++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/debug/pr27657.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c9d149c0a3..90c826f5a05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-01-30 Richard Guenther + + PR middle-end/27657 + * dwarf2out.c (reference_to_unused): Query varpool if the + variable was output. + 2007-01-30 Richard Guenther PR middle-end/30313 diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 6cd34355394..2968d3b3547 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -10045,8 +10045,14 @@ reference_to_unused (tree * tp, int * walk_subtrees, if (DECL_P (*tp) && ! TREE_PUBLIC (*tp) && ! TREE_USED (*tp) && ! TREE_ASM_WRITTEN (*tp)) return *tp; - else - return NULL_TREE; + else if (DECL_P (*tp) && TREE_CODE (*tp) != FUNCTION_DECL) + { + struct varpool_node *node = varpool_node (*tp); + if (!node->needed) + return *tp; + } + + return NULL_TREE; } /* Generate an RTL constant from a decl initializer INIT with decl type TYPE, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a8ad0c5d622..be372cf48d8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-01-30 Richard Guenther + + PR middle-end/27657 + * g++.dg/debug/pr27657.C: New testcase. + 2007-01-30 Richard Guenther PR middle-end/30313 diff --git a/gcc/testsuite/g++.dg/debug/pr27657.C b/gcc/testsuite/g++.dg/debug/pr27657.C new file mode 100644 index 00000000000..8351625bbf9 --- /dev/null +++ b/gcc/testsuite/g++.dg/debug/pr27657.C @@ -0,0 +1,9 @@ +/* { dg-do link } */ + +const char s[] = ""; +const char *const p = s; + +int main() +{ + return 0; +}