diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2019-01-15 20:17:35 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2019-01-15 20:17:35 +0000 |
commit | a81a6d58367e63f3c7314eb793002e5feb379428 (patch) | |
tree | b0f7c8c0c5db7c1ee6891c42d40bbc270d8da2af /gcc | |
parent | 92f3a180aaf6f3cd0b06e282632fc320445e3c01 (diff) | |
download | gcc-a81a6d58367e63f3c7314eb793002e5feb379428.zip gcc-a81a6d58367e63f3c7314eb793002e5feb379428.tar.gz gcc-a81a6d58367e63f3c7314eb793002e5feb379428.tar.bz2 |
re PR fortran/81849 (Size of automatic array argument specified by host-associated variable.)
2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/81849
* resolve.c (resolve_symbol): Host associated varaibles can appear
in the specification statement of a RESULT array.
2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/81849
* gfortran.dg/pr81849.f90: New test.
From-SVN: r267948
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr81849.f90 | 16 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a8cb6dd..76a840d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/81849 + * resolve.c (resolve_symbol): Host associated varaibles can appear + in the specification statement of a RESULT array. + 2019-01-15 Paul Thomas <pault@gcc.gnu.org> * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Deal with exprs diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 155e7c9..7fbfa69 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -15345,7 +15345,7 @@ resolve_symbol (gfc_symbol *sym) /* Set the formal_arg_flag so that check_conflict will not throw an error for host associated variables in the specification expression for an array_valued function. */ - if (sym->attr.function && sym->as) + if ((sym->attr.function || sym->attr.result) && sym->as) formal_arg_flag = true; saved_specification_expr = specification_expr; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d38a578..56265c8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/81849 + * gfortran.dg/pr81849.f90: New test. + 2019-01-15 Paul Thomas <pault@gcc.gnu.org> * gfortran.dg/ISO_Fortran_binding_2.c : Change reference to diff --git a/gcc/testsuite/gfortran.dg/pr81849.f90 b/gcc/testsuite/gfortran.dg/pr81849.f90 new file mode 100644 index 0000000..e2f2d6f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr81849.f90 @@ -0,0 +1,16 @@ +! { dg-do run } +! PR fortran/81849 +program p + implicit none + integer :: n=3 + if (any(g() /= f())) stop 1 + contains + function g() + real g(n) + g = 7 + end function g + function f() result(r) + real r(n) + r = 7 + end function f +end program |