diff options
| author | Paul Thomas <pault@gcc.gnu.org> | 2006-09-10 17:17:57 +0000 |
|---|---|---|
| committer | Paul Thomas <pault@gcc.gnu.org> | 2006-09-10 17:17:57 +0000 |
| commit | 380bfbbd61795428e53826d379ce1f4bfe1768f0 (patch) | |
| tree | 852eefcc3400d2e2027106084cca7ca4f03cd93f /gcc/fortran | |
| parent | c71d6a561e249d1fe07fcbd97e348b0849247d42 (diff) | |
| download | gcc-380bfbbd61795428e53826d379ce1f4bfe1768f0.zip gcc-380bfbbd61795428e53826d379ce1f4bfe1768f0.tar.gz gcc-380bfbbd61795428e53826d379ce1f4bfe1768f0.tar.bz2 | |
re PR fortran/28959 (ICE on derived type with host association)
2006-09-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28959
trans-types.c (gfc_get_derived_type): Use the parent namespace of
the procedure if the type's own namespace does not have a parent.
2006-09-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/28959
gfortran.dg/used_types_10: New test.
From-SVN: r116816
Diffstat (limited to 'gcc/fortran')
| -rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/fortran/trans-types.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5b62215..159b4d1 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2006-09-10 Paul Thomas <pault@gcc.gnu.org> + PR fortran/28959 + trans-types.c (gfc_get_derived_type): Use the parent namespace of + the procedure if the type's own namespace does not have a parent. + +2006-09-10 Paul Thomas <pault@gcc.gnu.org> + PR fortran/28923 expr.c (find_array_section): Only use the array lower and upper bounds for the start and end of the sections, where the expr is diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 4ecf94b..377a5af 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1483,7 +1483,12 @@ gfc_get_derived_type (gfc_symbol * derived) same TREE_TYPE. If an equal type is found without a backend_decl, build the parent version and use it in the current namespace. */ - for (ns = derived->ns->parent; ns; ns = ns->parent) + /* Derived types in an interface body obtain their parent reference + through the proc_name symbol. */ + ns = derived->ns->parent ? derived->ns->parent + : derived->ns->proc_name->ns->parent; + + for (; ns; ns = ns->parent) { for (dt = ns->derived_types; dt; dt = dt->next) { |
