diff options
author | vehre <vehre@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-23 09:07:22 +0000 |
---|---|---|
committer | vehre <vehre@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-06-23 09:07:22 +0000 |
commit | 505aa56acd1ed5326f880576c766a0841bb20831 (patch) | |
tree | 9c5390ba13cb036568b057572fb5b757c5d0bdb1 /gcc/fortran/primary.c | |
parent | 0e8e2501bdd9e25c9d95013f7300b6faa9a1e3d6 (diff) | |
download | gcc-505aa56acd1ed5326f880576c766a0841bb20831.tar.gz |
gcc/fortran/ChangeLog:
2015-06-23 Andre Vehreschild <vehre@gmx.de>
PR fortran/64674
* parse.c (parse_associate): Figure the rank and as of a
class array in an associate early.
* primary.c (gfc_match_varspec): Prevent setting the
dimension attribute on the sym for classes.
* resolve.c (resolve_variable): Correct the component
ref's type for associated variables. Add a full array ref
when class array's are associated.
(resolve_assoc_var): Correct the type of the symbol,
when in the associate the expression's rank becomes scalar.
* trans-expr.c (gfc_conv_variable): Indirect ref needed for
allocatable associated objects.
gcc/testsuite/ChangeLog:
2015-06-23 Andre Vehreschild <vehre@gmx.de>
PR fortran/64674
* gfortran.dg/associate_18.f08: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224827 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/primary.c')
-rw-r--r-- | gcc/fortran/primary.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index e467e0b3ff0..86639aac65a 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1911,7 +1911,8 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, if (sym->assoc && gfc_peek_ascii_char () == '(' && !(sym->assoc->dangling && sym->assoc->st && sym->assoc->st->n.sym - && sym->assoc->st->n.sym->attr.dimension == 0)) + && sym->assoc->st->n.sym->attr.dimension == 0) + && sym->ts.type != BT_CLASS) sym->attr.dimension = 1; if ((equiv_flag && gfc_peek_ascii_char () == '(') |