aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/static14.C19
3 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index bd8b58a..12becdb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2000-08-02 Mark Mitchell <mark@codesourcery.com>
+
+ * cp-tree.h (DECL_NEEDED_P): Tweak.
+
2000-07-28 Jason Merrill <jason@redhat.com>
* lang-specs.h: Use %i in rule for .ii files.
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 63c1e8e..d949fcb 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -1936,7 +1936,7 @@ struct lang_decl
anything that isn't comdat, but we don't know for sure whether or
not something is comdat until end-of-file. */
#define DECL_NEEDED_P(DECL) \
- ((at_eof && !DECL_COMDAT (DECL)) \
+ ((at_eof && TREE_PUBLIC (DECL) && !DECL_COMDAT (DECL)) \
|| (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME ((DECL)))) \
|| (flag_syntax_only && TREE_USED ((DECL))))
diff --git a/gcc/testsuite/g++.old-deja/g++.other/static14.C b/gcc/testsuite/g++.old-deja/g++.other/static14.C
new file mode 100644
index 0000000..6df4c4c
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/static14.C
@@ -0,0 +1,19 @@
+// Build don't run:
+// Origin: scott snyder <snyder@fnal.gov>
+
+struct basic_string
+{
+ ~basic_string();
+};
+
+struct Side
+{
+ void name()
+ {
+ static basic_string sname;
+ }
+};
+
+int main ()
+{
+}