aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/interface.c
diff options
context:
space:
mode:
authorJosé Rui Faustino de Sousa <jrfsousa@gmail.com>2020-08-30 17:28:08 +0000
committerJosé Rui Faustino de Sousa <jrfsousa@gmail.com>2020-08-30 17:28:08 +0000
commit8e1be7efcb1c68dd82e2b2c1bcf3e5ace245654d (patch)
tree81c3e89cbcf01f520d97ed315f4870c994d7b48f /gcc/fortran/interface.c
parent44c677d1ebb24fb9137943afb6a9981d0b2c14ea (diff)
downloadgcc-8e1be7efcb1c68dd82e2b2c1bcf3e5ace245654d.zip
gcc-8e1be7efcb1c68dd82e2b2c1bcf3e5ace245654d.tar.gz
gcc-8e1be7efcb1c68dd82e2b2c1bcf3e5ace245654d.tar.bz2
2020-8-20 José Rui Faustino de Sousa <jrfsousa@gmail.com>
gcc/fortran/ChangeLog: PR fortran/94110 * interface.c (gfc_compare_actual_formal): Add code to also raise the actual argument cannot be an assumed-size array error when the dummy arguments are deferred-shape or assumed-rank pointer. gcc/testsuite/ChangeLog: PR fortran/94110 * gfortran.dg/PR94110.f90: New test.
Diffstat (limited to 'gcc/fortran/interface.c')
-rw-r--r--gcc/fortran/interface.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 7985fc7..020cdd7 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -3303,7 +3303,10 @@ gfc_compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal,
return false;
}
- if (f->sym->as && f->sym->as->type == AS_ASSUMED_SHAPE
+ if (f->sym->as
+ && (f->sym->as->type == AS_ASSUMED_SHAPE
+ || f->sym->as->type == AS_DEFERRED
+ || (f->sym->as->type == AS_ASSUMED_RANK && f->sym->attr.pointer))
&& a->expr->expr_type == EXPR_VARIABLE
&& a->expr->symtree->n.sym->as
&& a->expr->symtree->n.sym->as->type == AS_ASSUMED_SIZE