diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-08-27 15:45:35 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-08-27 15:45:35 +0000 |
commit | 602f77a67267043aac48895540da838d4c5531bb (patch) | |
tree | 91d413c51010fccf07a64cae63e7d840304325d3 /gcc | |
parent | 741b52b54f3b7332b3199a5bd3af12acf0901c13 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/dependency.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr77380.f90 | 6 |
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 |