aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorDaniel Franke <dfranke@gcc.gnu.org>2007-05-21 18:24:55 -0400
committerDaniel Franke <dfranke@gcc.gnu.org>2007-05-21 18:24:55 -0400
commit1b35264faba71c070736b4e5ac148b0ea5c910c0 (patch)
tree9e3752725ea5fa801e046db1fd56d2a18a949134 /gcc/fortran
parent244974bd1bb1e486361d7b4ec6fe686239e2e1f1 (diff)
downloadgcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.zip
gcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.tar.gz
gcc-1b35264faba71c070736b4e5ac148b0ea5c910c0.tar.bz2
re PR fortran/32002 (insufficient conformance check when assigning the result of an elemental function to an array)
gcc/fortran: 2005-05-21 Jerry DeLisle <jvdelisle@verizon.net> Daniel Franke <franke.daniel@gmail.com> PR fortran/32002 * resolve.c (resolve_actual_arglist): Resolve actual argument after being identified as variable. gcc/testsuite: 2005-05-21 Daniel Franke <franke.daniel@gmail.com> PR fortran/32002 * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test. From-SVN: r124924
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/resolve.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ab99113..10bcc08 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2005-05-21 Jerry DeLisle <jvdelisle@verizon.net>
+ Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/32002
+ * resolve.c (resolve_actual_arglist): Resolve actual argument after
+ being identified as variable.
+
2007-05-21 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR fortran/32027
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index b6d1f3b..746d41b 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1013,6 +1013,13 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype)
e->ref->u.ar.as = sym->as;
}
+ /* Expressions are assigned a default ts.type of BT_PROCEDURE in
+ primary.c (match_actual_arg). If above code determines that it
+ is a variable instead, it needs to be resolved as it was not
+ done at the beginning of this function. */
+ if (gfc_resolve_expr (e) != SUCCESS)
+ return FAILURE;
+
argument_list:
/* Check argument list functions %VAL, %LOC and %REF. There is
nothing to do for %REF. */