+2010-06-10 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/44457
+ * interface.c (compare_actual_formal): Reject actual arguments with
+ array subscript passed to ASYNCHRONOUS dummys.
+
2010-06-10 Daniel Kraft <d@domob.eu>
PR fortran/38936
if ((f->sym->attr.intent == INTENT_OUT
|| f->sym->attr.intent == INTENT_INOUT
- || f->sym->attr.volatile_)
+ || f->sym->attr.volatile_
+ || f->sym->attr.asynchronous)
&& gfc_has_vector_subscript (a->expr))
{
if (where)
- gfc_error ("Array-section actual argument with vector subscripts "
- "at %L is incompatible with INTENT(OUT), INTENT(INOUT) "
- "or VOLATILE attribute of the dummy argument '%s'",
+ gfc_error ("Array-section actual argument with vector "
+ "subscripts at %L is incompatible with INTENT(OUT), "
+ "INTENT(INOUT), VOLATILE or ASYNCHRONOUS attribute "
+ "of the dummy argument '%s'",
&a->expr->where, f->sym->name);
return 0;
}
--- /dev/null
+! { dg-do "compile" }
+!
+! PR fortran/44457 - no array-subscript actual argument
+! for an asynchronous dummy
+!
+
+ integer :: a(10), sect(3)
+ sect = [1,2,3]
+ call f(a(sect)) ! { dg-error "incompatible" }
+ call f(a(::2))
+contains
+ subroutine f(x)
+ integer, asynchronous :: x(:)
+ end subroutine f
+end