OSDN Git Service

* varasm.c (assemble_variable): Call resolve_unique_section before
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 15 Mar 2002 18:44:14 +0000 (18:44 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 15 Mar 2002 18:44:14 +0000 (18:44 +0000)
        checking DECL_SECTION_NAME.  Use zeros for a decl with DECL_INITIAL
        of error_mark_node.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50824 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/varasm.c

index 373cbdd..b252ab0 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-15  Jason Merrill  <jason@redhat.com>
+
+       * varasm.c (assemble_variable): Call resolve_unique_section before
+       checking DECL_SECTION_NAME.  Use zeros for a decl with DECL_INITIAL
+       of error_mark_node.
+
 2002-03-15  Richard Earnshaw  <rearnsha@arm.com>
 
        PR target/5170
index 06ee8b8..f8df75b 100644 (file)
@@ -1602,6 +1602,13 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
   if (TREE_PUBLIC (decl))
     maybe_assemble_visibility (decl);
 
+  /* Output any data that we will need to use the address of.  */
+  if (DECL_INITIAL (decl) == error_mark_node)
+    reloc = contains_pointers_p (TREE_TYPE (decl)) ? 3 : 0;
+  else if (DECL_INITIAL (decl))
+    reloc = output_addressed_constants (DECL_INITIAL (decl));
+  resolve_unique_section (decl, reloc);
+
   /* Handle uninitialized definitions.  */
 
   if ((DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node
@@ -1652,14 +1659,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
   if (TREE_PUBLIC (decl) && DECL_NAME (decl))
     globalize_decl (decl);
 
-  /* Output any data that we will need to use the address of.  */
-  if (DECL_INITIAL (decl) == error_mark_node)
-    reloc = contains_pointers_p (TREE_TYPE (decl)) ? 3 : 0;
-  else if (DECL_INITIAL (decl))
-    reloc = output_addressed_constants (DECL_INITIAL (decl));
-
   /* Switch to the appropriate section.  */
-  resolve_unique_section (decl, reloc);
   variable_section (decl, reloc);
 
   /* dbxout.c needs to know this.  */
@@ -1684,7 +1684,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
 
   if (!dont_output_data)
     {
-      if (DECL_INITIAL (decl))
+      if (DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node)
        /* Output the actual data.  */
        output_constant (DECL_INITIAL (decl),
                         tree_low_cst (DECL_SIZE_UNIT (decl), 1),