diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index baf89cb36938296ebef1237b535df5dd90c74664..3d811375a9af335c7ccaca9c53a99bc926eb9f7c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2006-02-15  Andrew Haley  <aph@redhat.com>
+
+	* class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here.
+	(make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL,
+	TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here.
+
 2006-02-09  Andrew Haley  <aph@redhat.com>
 
 	PR java/26192
diff --git a/gcc/java/class.c b/gcc/java/class.c
index e3eed98334589e520f7e3341acaf24bae3a053b7..743b9eba79e751b44e4e3cec889b840ab1cfd27b 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -375,7 +375,6 @@ do									\
   TREE_STATIC (TYPE_## TABLE ##_SYMS_DECL (TYPE)) = 1;			\
   TREE_CONSTANT (TYPE_## TABLE ##_SYMS_DECL (TYPE)) = 1;		\
   DECL_IGNORED_P (TYPE_## TABLE ##_SYMS_DECL (TYPE)) = 1;		\
-  pushdecl (TYPE_## TABLE ##_SYMS_DECL (TYPE));				\
 }									\
 while (0)
 
@@ -1821,6 +1820,7 @@ make_class_data (tree type)
     }
   else
     {
+      pushdecl_top_level (TYPE_OTABLE_SYMS_DECL (type));
       PUSH_FIELD_VALUE (cons, "otable",
 			build1 (ADDR_EXPR, otable_ptr_type, TYPE_OTABLE_DECL (type)));
       PUSH_FIELD_VALUE (cons, "otable_syms",
@@ -1836,6 +1836,7 @@ make_class_data (tree type)
     }
   else
     {
+      pushdecl_top_level (TYPE_ATABLE_SYMS_DECL (type));
       PUSH_FIELD_VALUE (cons, "atable",
 			build1 (ADDR_EXPR, atable_ptr_type, TYPE_ATABLE_DECL (type)));
       PUSH_FIELD_VALUE (cons, "atable_syms",
@@ -1851,6 +1852,7 @@ make_class_data (tree type)
     }
   else
     {
+      pushdecl_top_level (TYPE_ITABLE_SYMS_DECL (type));
       PUSH_FIELD_VALUE (cons, "itable",
 			build1 (ADDR_EXPR, itable_ptr_type, TYPE_ITABLE_DECL (type)));
       PUSH_FIELD_VALUE (cons, "itable_syms",