+2012-09-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54387
+ * expr.c (gfc_check_pointer_assign): Check for result of embracing
+ function.
+
2012-09-16 Tobias Burnus <burnus@net-b.de>
* trans-decl.c (gfc_generate_function_code): Fix
gfc_resolve_intrinsic (sym, &rvalue->where);
attr = gfc_expr_attr (rvalue);
}
+ /* Check for result of embracing function. */
+ if (sym == gfc_current_ns->proc_name
+ && sym->attr.function && sym->result == sym)
+ {
+ gfc_error ("Function result '%s' is invalid as proc-target "
+ "in procedure pointer assignment at %L",
+ sym->name, &rvalue->where);
+ return FAILURE;
+ }
}
if (attr.abstract)
{
+2012-09-16 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/54387
+ * gfortran.dg/proc_ptr_38.f90: New.
+
2012-09-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR debug/54460
--- /dev/null
+! { dg-do compile }
+!
+! PR 54387: [F03] Wrongly accepts non-proc result variable on the RHS of a proc-pointer assignment
+!
+! Contributed by James Van Buskirk
+
+integer function foo()
+ procedure(), pointer :: i
+ i => foo ! { dg-error "is invalid as proc-target in procedure pointer assignment" }
+end
+
+recursive function bar() result (res)
+ integer :: res
+ procedure(), pointer :: j
+ j => bar
+end