aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-01-30 10:23:01 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-01-30 10:23:01 +0000
commit9b1959ffcaa3fab49a90eb25f32a815ac22c2a85 (patch)
treeb5a56ddd28e97ab2018cadc459d5d5b909830ce6 /gcc/dwarf2out.c
parent91851351be38a6b83bff486fd25cf364910af35a (diff)
downloadgcc-9b1959ffcaa3fab49a90eb25f32a815ac22c2a85.zip
gcc-9b1959ffcaa3fab49a90eb25f32a815ac22c2a85.tar.gz
gcc-9b1959ffcaa3fab49a90eb25f32a815ac22c2a85.tar.bz2
re PR middle-end/27657 (bogus undefined reference error to static var with -g and -O)
2007-01-30 Richard Guenther <rguenther@suse.de> 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
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 6cd3435..2968d3b 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,