aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2018-02-11 18:55:31 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-02-11 18:55:31 +0000
commit5f0367d00a18d036cb0d2f7457daeca50d623d8e (patch)
tree5929bf0e124a5148647e3befcef5001fd8ef5a0c /gcc
parentf3883269c3dd4528cb089c640edb35029b1398a0 (diff)
downloadgcc-5f0367d00a18d036cb0d2f7457daeca50d623d8e.zip
gcc-5f0367d00a18d036cb0d2f7457daeca50d623d8e.tar.gz
gcc-5f0367d00a18d036cb0d2f7457daeca50d623d8e.tar.bz2
re PR fortran/35299 (scope of variables in statement function do not acquire rank from host)
2018-02-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35299 * gfortran.dg/statement_function_3.f: New test. 2018-02-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35299 * resolve.c (resolve_formal_arglist): Update error message. From-SVN: r257566
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/resolve.c7
-rw-r--r--gcc/testsuite/gfortran.dg/statement_function_3.f15
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 60b9bc3..429c1c4 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -512,8 +512,11 @@ resolve_formal_arglist (gfc_symbol *proc)
{
if (sym->as != NULL)
{
- gfc_error ("Argument %qs of statement function at %L must "
- "be scalar", sym->name, &sym->declared_at);
+ /* F03:C1263 (R1238) The function-name and each dummy-arg-name
+ shall be specified, explicitly or implicitly, to be scalar. */
+ gfc_error ("Argument '%s' of statement function '%s' at %L "
+ "must be scalar", sym->name, proc->name,
+ &proc->declared_at);
continue;
}
diff --git a/gcc/testsuite/gfortran.dg/statement_function_3.f b/gcc/testsuite/gfortran.dg/statement_function_3.f
new file mode 100644
index 0000000..dcfb3e2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/statement_function_3.f
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! PR fortran/35299
+ subroutine phtod(e,n,i,h)
+ dimension e(n)
+ hstar(e,b)=b**.4*((1.25*fun(-e/40)+.18)) ! { dg-error "must be scalar" }
+ a = 1.
+ h = hstar(e(i-1), a)
+ end
+
+ function fun(a)
+ real a(*)
+ fun = 42
+ end
+! { dg-prune-output " Obsolescent feature" }
+