Reduce size of pointer_info tree, minor cleanups.
2012-01-29 Janne Blomqvist <jb@gcc.gnu.org> * 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. From-SVN: r183681
This commit is contained in:
parent
4ed1b019f6
commit
cc19bc7fdd
@ -1,3 +1,15 @@
|
||||
2012-01-29 Janne Blomqvist <jb@gcc.gnu.org>
|
||||
|
||||
* 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 <burnus@net-b.de>
|
||||
|
||||
PR fortran/51972
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user