From 48409c9b3f08ea3be81abb6895852e7927d3add9 Mon Sep 17 00:00:00 2001 From: jb Date: Sun, 29 Jan 2012 20:29:50 +0000 Subject: [PATCH] Reduce size of pointer_info tree, minor cleanups. 2012-01-29 Janne Blomqvist * module.c (pointer_info): Make true_name and module pointers rather than arrays, order pointers before other fields. (free_pi_tree): free true_name and module as well. (mio_read_string): Rename to read_string. (mio_write_string): Remove. (load_commons): Use read_string. (read_module): Use read_string rather than mio_internal_string. (write_blank_common): Call write_atom directly. (write_symbol): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183681 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 12 +++++++++++ gcc/fortran/module.c | 59 +++++++++++++++++++++++---------------------------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 48517f50449..6b45348c417 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,15 @@ +2012-01-29 Janne Blomqvist + + * module.c (pointer_info): Make true_name and module pointers + rather than arrays, order pointers before other fields. + (free_pi_tree): free true_name and module as well. + (mio_read_string): Rename to read_string. + (mio_write_string): Remove. + (load_commons): Use read_string. + (read_module): Use read_string rather than mio_internal_string. + (write_blank_common): Call write_atom directly. + (write_symbol): Likewise. + 2012-01-29 Tobias Burnus PR fortran/51972 diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 4e6c520bc97..c68277b2536 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -155,13 +155,12 @@ typedef struct pointer_info struct { gfc_symbol *sym; - char true_name[GFC_MAX_SYMBOL_LEN + 1], module[GFC_MAX_SYMBOL_LEN + 1]; + char *true_name, *module, *binding_label; + fixup_t *stfixup; + gfc_symtree *symtree; enum gfc_rsym_state state; int ns, referenced, renamed; module_locus where; - fixup_t *stfixup; - gfc_symtree *symtree; - char* binding_label; } rsym; @@ -229,7 +228,11 @@ free_pi_tree (pointer_info *p) free_pi_tree (p->right); if (iomode == IO_INPUT) - XDELETEVEC (p->u.rsym.binding_label); + { + XDELETEVEC (p->u.rsym.true_name); + XDELETEVEC (p->u.rsym.module); + XDELETEVEC (p->u.rsym.binding_label); + } free (p); } @@ -1442,6 +1445,19 @@ find_enum (const mstring *m) } +/* Read a string. The caller is responsible for freeing. */ + +static char* +read_string (void) +{ + char* p; + require_atom (ATOM_STRING); + p = atom_string; + atom_string = NULL; + return p; +} + + /**************** Module output subroutines ***************************/ /* Output a character to a module file. */ @@ -1816,27 +1832,6 @@ mio_internal_string (char *string) } -/* Read a string. The caller is responsible for freeing. */ - -static char* -mio_read_string (void) -{ - char* p; - require_atom (ATOM_STRING); - p = atom_string; - atom_string = NULL; - return p; -} - - -/* Write a string. */ -static void -mio_write_string (const char* string) -{ - write_atom (ATOM_STRING, string); -} - - typedef enum { AB_ALLOCATABLE, AB_DIMENSION, AB_EXTERNAL, AB_INTRINSIC, AB_OPTIONAL, AB_POINTER, AB_TARGET, AB_DUMMY, AB_RESULT, AB_DATA, @@ -4168,7 +4163,7 @@ load_commons (void) /* Get whether this was a bind(c) common or not. */ mio_integer (&p->is_bind_c); /* Get the binding label. */ - label = mio_read_string (); + label = read_string (); if (strlen (label)) p->binding_label = IDENTIFIER_POINTER (get_identifier (label)); XDELETEVEC (label); @@ -4531,9 +4526,9 @@ read_module (void) info->type = P_SYMBOL; info->u.rsym.state = UNUSED; - mio_internal_string (info->u.rsym.true_name); - mio_internal_string (info->u.rsym.module); - bind_label = mio_read_string (); + info->u.rsym.true_name = read_string (); + info->u.rsym.module = read_string (); + bind_label = read_string (); if (strlen (bind_label)) info->u.rsym.binding_label = bind_label; else @@ -4960,7 +4955,7 @@ write_blank_common (void) mio_integer (&is_bind_c); /* Write out an empty binding label. */ - mio_write_string (""); + write_atom (ATOM_STRING, ""); mio_rparen (); } @@ -5064,7 +5059,7 @@ write_symbol (int n, gfc_symbol *sym) mio_pool_string (&label); } else - mio_write_string (""); + write_atom (ATOM_STRING, ""); mio_pointer_ref (&sym->ns); -- 2.11.4.GIT