diff options
author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-21 14:29:34 +0000 |
---|---|---|
committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-21 14:29:34 +0000 |
commit | 461db9e39abdfb7f209252f9255e5342008530cf (patch) | |
tree | 81825db95fdb9ee25bcdac01f6a0316a053d704a /gcc/fortran/resolve.c | |
parent | e78e02f9da33302d53e051dcd5be73c8b76e2b6c (diff) | |
download | ppe42-gcc-461db9e39abdfb7f209252f9255e5342008530cf.tar.gz ppe42-gcc-461db9e39abdfb7f209252f9255e5342008530cf.zip |
2012-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55763
* match.c (select_type_set_tmp): Return is a derived type or
class typespec has no derived type.
* resolve.c (resolve_fl_var_and_proc): Exclude select type
temporaries from 'pointer'.
(resolve_symbol): Exclude select type temporaries from tests
for assumed size and assumed rank.
2012-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55763
* gfortran.dg/unlimited_polymorphic_4.f03: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194663 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 6208a819c13..fce6f732e59 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -11056,7 +11056,7 @@ resolve_fl_var_and_proc (gfc_symbol *sym, int mp_flag) } else { - pointer = sym->attr.pointer; + pointer = sym->attr.pointer && !sym->attr.select_type_temporary; allocatable = sym->attr.allocatable; dimension = sym->attr.dimension; } @@ -13315,7 +13315,7 @@ resolve_symbol (gfc_symbol *sym) gcc_assert (as->type != AS_IMPLIED_SHAPE); if (((as->type == AS_ASSUMED_SIZE && !as->cp_was_assumed) || as->type == AS_ASSUMED_SHAPE) - && sym->attr.dummy == 0) + && !sym->attr.dummy && !sym->attr.select_type_temporary) { if (as->type == AS_ASSUMED_SIZE) gfc_error ("Assumed size array at %L must be a dummy argument", @@ -13326,7 +13326,8 @@ resolve_symbol (gfc_symbol *sym) return; } /* TS 29113, C535a. */ - if (as->type == AS_ASSUMED_RANK && !sym->attr.dummy) + if (as->type == AS_ASSUMED_RANK && !sym->attr.dummy + && !sym->attr.select_type_temporary) { gfc_error ("Assumed-rank array at %L must be a dummy argument", &sym->declared_at); |