re PR fortran/77380 (ICE in gfc_check_dependency, at fortran/dependency.c:1255)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 27 Aug 2016 15:45:35 +0000 (15:45 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sat, 27 Aug 2016 15:45:35 +0000 (15:45 +0000)
2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>

PR fortran/77380
* dependency.c (gfc_check_dependency): Do not assert with
-fcoarray=lib.

2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>

PR fortran/77380
* gfortran.dg/pr77380.f90: New test.

From-SVN: r239796

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

index f15e93617ada6c935265edc5d4e5d6b4b1ac6799..9ac5721cf8482896673235046c06588cecb0d698 100644 (file)
@@ -1,3 +1,9 @@
+2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>
+
+       PR fortran/77380
+       * dependency.c (gfc_check_dependency): Do not assert with
+       -fcoarray=lib.
+
 2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>
 
        PR fortran/77372
index f117de03640e95b77ebe6b11035b9795fee7b628..58a443be09a82834545cf0d67e05ddc26dbf5b9e 100644 (file)
@@ -1252,6 +1252,12 @@ gfc_check_dependency (gfc_expr *expr1, gfc_expr *expr2, bool identical)
   gfc_constructor *c;
   int n;
 
+  /* -fcoarray=lib can end up here with expr1->expr_type set to EXPR_FUNCTION
+     and a reference to _F.caf_get, so skip the assert.  */
+  if (expr1->expr_type == EXPR_FUNCTION
+      && strcmp (expr1->value.function.name, "_F.caf_get") == 0)
+    return 0;
+
   gcc_assert (expr1->expr_type == EXPR_VARIABLE);
 
   switch (expr2->expr_type)
index 68e1804b8831ad67c459b100d61275b1c0b6d808..7d117eed30a3e15b58faaad0cfcd614701cd13dd 100644 (file)
@@ -1,3 +1,8 @@
+2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>
+
+       PR fortran/77380
+       * gfortran.dg/pr77380.f90: New test.
+
 2016-08-27  Steven G. Kargl <kargl@gcc.gnu.org>
 
        PR fortran/77372
diff --git a/gcc/testsuite/gfortran.dg/pr77380.f90 b/gcc/testsuite/gfortran.dg/pr77380.f90
new file mode 100644 (file)
index 0000000..f369be6
--- /dev/null
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=lib -O2" }
+program p
+   integer :: z(2)[*] = 1
+   z(:)[1] = z(:)[*]       ! { dg-error "must be a scalar at" }
+end