diff options
Diffstat (limited to 'gcc/fortran')
| -rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/fortran/trans-types.c | 7 |
2 files changed, 9 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4a30d00..bfc6d6d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2006-11-21 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/29820 + * trans-array.c (gfc_get_derived_type): Once done, spread the + backend_decl to all identical derived types in all sibling + namespaces. + 2006-11-20 Tobias Burnus <burnus@net-b.de> PR fortran/27546 diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index f0c41bb..b1eeffc 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1608,11 +1608,8 @@ gfc_get_derived_type (gfc_symbol * derived) other_equal_dts: /* Add this backend_decl to all the other, equal derived types and their components in this and sibling namespaces. */ - - for (dt = derived->ns->derived_types; dt; dt = dt->next) - copy_dt_decls_ifequal (derived, dt->derived); - - for (ns = derived->ns->sibling; ns; ns = ns->sibling) + ns = derived->ns->parent ? derived->ns->parent->contained : derived->ns; + for (; ns; ns = ns->sibling) for (dt = ns->derived_types; dt; dt = dt->next) copy_dt_decls_ifequal (derived, dt->derived); |
