aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-10-20 19:51:40 +0000
committerRichard Stallman <rms@gnu.org>1993-10-20 19:51:40 +0000
commita35f176bc5f0bb738f5775d003051bb7227e18f1 (patch)
tree84891dc08f597db60a3492f07b2962338dcbf775 /gcc
parentb0316e35edce637812e856d68bc0b4af1bd778ac (diff)
downloadgcc-a35f176bc5f0bb738f5775d003051bb7227e18f1.zip
gcc-a35f176bc5f0bb738f5775d003051bb7227e18f1.tar.gz
gcc-a35f176bc5f0bb738f5775d003051bb7227e18f1.tar.bz2
(ASM_DECLARE_OBJECT_NAME): Set size_directive_output.
(ASM_FINISH_DECLARE_OBJECT): Defined. From-SVN: r5829
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/svr4.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/gcc/config/svr4.h b/gcc/config/svr4.h
index 43a5dd6..e895751 100644
--- a/gcc/config/svr4.h
+++ b/gcc/config/svr4.h
@@ -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) \