diff options
author | Andrew Benson <abenson@carnegiescience.edu> | 2018-07-20 20:00:42 +0000 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2018-07-20 22:00:42 +0200 |
commit | 20e8ceae67be4186c4f20b4fb96f7cfade9853a7 (patch) | |
tree | f7b6db1d67d284cfce8a26fd209a356ce66b23ac /gcc/fortran/resolve.c | |
parent | d9a81cdb415ff070289eda51d122663c62219330 (diff) | |
download | gcc-20e8ceae67be4186c4f20b4fb96f7cfade9853a7.zip gcc-20e8ceae67be4186c4f20b4fb96f7cfade9853a7.tar.gz gcc-20e8ceae67be4186c4f20b4fb96f7cfade9853a7.tar.bz2 |
gfortran.h (gfc_symbol): Add pointer to next derived type.
2018-07-20 Andrew Benson <abenson@carnegiescience.edu>
* gfortran.h (gfc_symbol): Add pointer to next derived type.
(gfc_dt_list, gfc_get_dt_list): Remove.
(gfc_namespace): Replace gfc_dt_list with gfc_symbol.
* parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with
simple nullification of gfc_derived_types.
* resolve.c (resolve_global_procedure): Replace gfc_dt_list with
gfc_symbol.
(add_dt_to_dt_list): Change derived type linked list insertion to
utilize dt_next pointers in gfc_symbol.
* symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2)
(get_iso_c_binding_dt, generate_isocbinding_symbol): Remove
gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type
linked list search/insertion to utilize dt_next pointers in gfc_symbol.
* trans-types.c (gfc_get_derived_type): Change derived type linked
list search to utilize dt_next pointers in gfc_symbol.
From-SVN: r262909
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 40fa02d..3035e02 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2509,7 +2509,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *where, /* Resolve the gsymbol namespace if needed. */ if (!gsym->ns->resolved) { - gfc_dt_list *old_dt_list; + gfc_symbol *old_dt_list; /* Stash away derived types so that the backend_decls do not get mixed up. */ @@ -13533,16 +13533,19 @@ resolve_typebound_procedures (gfc_symbol* derived) static void add_dt_to_dt_list (gfc_symbol *derived) { - gfc_dt_list *dt_list; - - for (dt_list = gfc_derived_types; dt_list; dt_list = dt_list->next) - if (derived == dt_list->derived) - return; - - dt_list = gfc_get_dt_list (); - dt_list->next = gfc_derived_types; - dt_list->derived = derived; - gfc_derived_types = dt_list; + if (!derived->dt_next) + { + if (gfc_derived_types) + { + derived->dt_next = gfc_derived_types->dt_next; + gfc_derived_types->dt_next = derived; + } + else + { + derived->dt_next = derived; + } + gfc_derived_types = derived; + } } |