re PR fortran/18918 (Eventually support Fortran 2008's coarrays [co-arrays])
authorTobias Burnus <burnus@net-b.de>
Sat, 14 May 2011 10:34:44 +0000 (12:34 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Sat, 14 May 2011 10:34:44 +0000 (12:34 +0200)
2011-05-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * interface.c (compare_parameter): Skip diagnostic if
        actual argument is not an array; rank mismatch is diagnosted later.

2011-05-14  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * gfortran.de/coarray_20.f90: New.

From-SVN: r173755

gcc/fortran/ChangeLog
gcc/fortran/interface.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/coarray_20.f90 [new file with mode: 0644]

index e8daa475815964a100f1531fef2c85ceb38d1744..029884b8e3771133098eb80b258017608ba86d0b 100644 (file)
        (create_var):  For rank > 0 functions with unknown shape, create
        an allocatable temporary.
 
+2011-05-14  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/18918
+       * interface.c (compare_parameter): Skip diagnostic if
+       actual argument is not an array; rank mismatch is diagnosted later.
+
 2011-05-14  Tobias Burnus  <burnus@net-b.de>
 
        * options.c (gfc_init_options, gfc_post_options): Enable
index 1f757247a99c81c2bc6ad74f94c4f70440df9594..732a0c59d015297c9d60f20d7159048222289a6f 100644 (file)
@@ -1618,6 +1618,7 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
       /* F2008, 12.5.2.8.  */
       if (formal->attr.dimension
          && (formal->attr.contiguous || formal->as->type != AS_ASSUMED_SHAPE)
+         && gfc_expr_attr (actual).dimension
          && !gfc_is_simply_contiguous (actual, true))
        {
          if (where)
index 6cbf8829f9533d562e7ca7d444da4e0d7b6c697d..f014a807532cd3d8e86cb6f49b158762cbf5487b 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-14  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/18918
+       * gfortran.de/coarray_20.f90: New.
+
 2011-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/22572
diff --git a/gcc/testsuite/gfortran.dg/coarray_20.f90 b/gcc/testsuite/gfortran.dg/coarray_20.f90
new file mode 100644 (file)
index 0000000..8005768
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+!
+! Before a bogus error (argument not simply contiguous)
+! was printed instead of the rank mismatch
+!
+! PR fortran/18918
+!
+integer :: A[*]
+call bar(A) ! { dg-error "Rank mismatch in argument" }
+contains
+  subroutine bar(x)
+    integer :: x(1)[*]
+  end subroutine bar
+end