From: Steven G. Kargl Date: Sat, 1 Oct 2016 00:46:28 +0000 (+0000) Subject: backport: re PR fortran/77380 (ICE in gfc_check_dependency, at fortran/dependency... X-Git-Tag: releases/gcc-5.5.0~797 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36cc17b282a980297acf300f37475055f5c929b7;p=thirdparty%2Fgcc.git backport: re PR fortran/77380 (ICE in gfc_check_dependency, at fortran/dependency.c:1255) 2016-09-30 Steven G. Kargl Backport from trunk PR fortran/77380 * dependency.c (gfc_check_dependency): Do not assert with -fcoarray=lib. PR fortran/77380 * gfortran.dg/pr77380.f90: New test. From-SVN: r240692 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 72efc0772eb8..ac34a8ae93fb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2016-09-30 Steven G. Kargl + + Backport from trunk + + PR fortran/77380 + * dependency.c (gfc_check_dependency): Do not assert with + -fcoarray=lib. + 2016-09-30 Steven G. Kargl Backport from trunk diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index 63c66303497a..40adbe4a57f4 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -1253,6 +1253,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 bdf632b4d8a4..02aa71655f08 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-09-30 Steven G. Kargl + + Backport from trunk + + PR fortran/77380 + * gfortran.dg/pr77380.f90: New test. + 2016-09-30 Steven G. Kargl Backport from trunk diff --git a/gcc/testsuite/gfortran.dg/pr77380.f90 b/gcc/testsuite/gfortran.dg/pr77380.f90 new file mode 100644 index 000000000000..f369be673a99 --- /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