(ASM_DECLARE_OBJECT_NAME): Set size_directive_output.
authorRichard Stallman <rms@gnu.org>
Wed, 20 Oct 1993 19:51:40 +0000 (19:51 +0000)
committerRichard Stallman <rms@gnu.org>
Wed, 20 Oct 1993 19:51:40 +0000 (19:51 +0000)
(ASM_FINISH_DECLARE_OBJECT): Defined.

From-SVN: r5829

gcc/config/svr4.h

index 43a5dd6fc5c194e63e1f771ff74229ce5741efd5..e895751e01b33b4387ddfc2f51cbcd08e56d24c5 100644 (file)
@@ -440,7 +440,7 @@ do {                                                                        \
 
 #define READONLY_DATA_SECTION() const_section ()
 
-extern void text_section();
+extern void text_section ();
 
 #define CONST_SECTION_FUNCTION                                         \
 void                                                                   \
@@ -587,8 +587,10 @@ dtors_section ()                                                   \
     putc (',', FILE);                                                  \
     fprintf (FILE, TYPE_OPERAND_FMT, "object");                                \
     putc ('\n', FILE);                                                 \
+    size_directive_output = 0;                                         \
     if (!flag_inhibit_size_directive && DECL_SIZE (DECL))              \
       {                                                                        \
+       size_directive_output = 1;                                      \
        fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
        assemble_name (FILE, NAME);                                     \
        fprintf (FILE, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL))); \
@@ -596,6 +598,26 @@ dtors_section ()                                                   \
     ASM_OUTPUT_LABEL(FILE, NAME);                                      \
   } while (0)
 
+/* Output the size directive for a decl in rest_of_decl_compilation
+   in the case where we did not do so before the initializer.
+   Once we find the error_mark_node, we know that the value of
+   size_directive_output was set
+   by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
+
+#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)        \
+do {                                                                    \
+     char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);                  \
+     if (!flag_inhibit_size_directive && DECL_SIZE (DECL)               \
+         && ! AT_END && TOP_LEVEL                                       \
+        && DECL_INITIAL (DECL) == error_mark_node                       \
+        && !size_directive_output)                                      \
+       {                                                                \
+        fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);                         \
+        assemble_name (FILE, name);                                     \
+        fprintf (FILE, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL))); \
+       }                                                                \
+   } while (0)
+
 /* This is how to declare the size of a function.  */
 
 #define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)                   \