aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2016-08-27 15:45:35 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2016-08-27 15:45:35 +0000
commit602f77a67267043aac48895540da838d4c5531bb (patch)
tree91d413c51010fccf07a64cae63e7d840304325d3 /gcc
parent741b52b54f3b7332b3199a5bd3af12acf0901c13 (diff)
downloadgcc-602f77a67267043aac48895540da838d4c5531bb.zip
gcc-602f77a67267043aac48895540da838d4c5531bb.tar.gz
gcc-602f77a67267043aac48895540da838d4c5531bb.tar.bz2
re PR fortran/77380 (ICE in gfc_check_dependency, at fortran/dependency.c:1255)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/dependency.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr77380.f906
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f15e936..9ac5721 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
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
simplify.c (simplify_ieee_selected_real_kind): Check for NULL pointers.
diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c
index f117de0..58a443b 100644
--- a/gcc/fortran/dependency.c
+++ b/gcc/fortran/dependency.c
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 68e1804..7d117ee 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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
gfortran.dg/pr77372.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr77380.f90 b/gcc/testsuite/gfortran.dg/pr77380.f90
new file mode 100644
index 0000000..f369be6
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr77380.f90
@@ -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