aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2019-01-15 20:17:35 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2019-01-15 20:17:35 +0000
commita81a6d58367e63f3c7314eb793002e5feb379428 (patch)
treeb0f7c8c0c5db7c1ee6891c42d40bbc270d8da2af /gcc
parent92f3a180aaf6f3cd0b06e282632fc320445e3c01 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr81849.f9016
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