diff options
author | Richard Stallman <rms@gnu.org> | 1993-10-20 19:51:40 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-10-20 19:51:40 +0000 |
commit | a35f176bc5f0bb738f5775d003051bb7227e18f1 (patch) | |
tree | 84891dc08f597db60a3492f07b2962338dcbf775 /gcc | |
parent | b0316e35edce637812e856d68bc0b4af1bd778ac (diff) | |
download | gcc-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.h | 24 |
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) \ |