From: Daniel Franke Date: Thu, 10 Jun 2010 18:25:56 +0000 (-0400) Subject: re PR fortran/44457 (Missing ASYNCHRONOUS constraint check) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=84efddb2006d83cfe7d250ac4556442b98ba4bf5;p=gcc.git re PR fortran/44457 (Missing ASYNCHRONOUS constraint check) gcc/fortran/: 2010-06-10 Daniel Franke PR fortran/44457 * interface.c (compare_actual_formal): Reject actual arguments with array subscript passed to ASYNCHRONOUS dummys. gcc/testsuite/: 2010-06-10 Daniel Franke PR fortran/44457 * gfortran.dg/asynchronous_3.f03 From-SVN: r160567 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d463f151391..acb5fe1e65d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-06-10 Daniel Franke + + PR fortran/44457 + * interface.c (compare_actual_formal): Reject actual arguments with + array subscript passed to ASYNCHRONOUS dummys. + 2010-06-10 Daniel Kraft PR fortran/38936 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 379c636d695..284622f05e0 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2133,13 +2133,15 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, 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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1a0c99c9b93..f5ca670d60b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-06-10 Daniel Franke + + PR fortran/44457 + * gfortran.dg/asynchronous_3.f03 + 2010-06-10 Changpeng Fang PR middle-end/44185 diff --git a/gcc/testsuite/gfortran.dg/asynchronous_3.f03 b/gcc/testsuite/gfortran.dg/asynchronous_3.f03 new file mode 100644 index 00000000000..7b83374a6e5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/asynchronous_3.f03 @@ -0,0 +1,15 @@ +! { 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