diff options
author | Andre Vehreschild <vehre@gcc.gnu.org> | 2018-05-06 13:19:31 +0200 |
---|---|---|
committer | Andre Vehreschild <vehre@gcc.gnu.org> | 2018-05-06 13:19:31 +0200 |
commit | 8309b221a0fce1cb7dc96d4e7df33bc761ccded9 (patch) | |
tree | 873d3ba04d94f3b635230ef77e9c9eca6223c7cc /gcc/fortran | |
parent | 17b906c3b92907a387a61a35310b39675f9f5e00 (diff) | |
download | gcc-8309b221a0fce1cb7dc96d4e7df33bc761ccded9.zip gcc-8309b221a0fce1cb7dc96d4e7df33bc761ccded9.tar.gz gcc-8309b221a0fce1cb7dc96d4e7df33bc761ccded9.tar.bz2 |
re PR fortran/85507 (ICE in gfc_dep_resolver, at fortran/dependency.c:2258)
gcc/fortran/ChangeLog:
2018-05-06 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/85507
* dependency.c (gfc_dep_resolver): Revert looking at coarray dimension
introduced by r259385.
* trans-intrinsic.c (conv_caf_send): Always report a dependency for
same variables in coarray assignments.
gcc/testsuite/ChangeLog:
2018-05-06 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/85507
* gfortran.dg/coarray_dependency_1.f90: New test.
* gfortran.dg/coarray_lib_comm_1.f90: Fix counting caf-expressions.
From-SVN: r259974
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/dependency.c | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 787f0ae..b94feb9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2018-05-06 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/85507 + * dependency.c (gfc_dep_resolver): Revert looking at coarray dimension + introduced by r259385. + * trans-intrinsic.c (conv_caf_send): Always report a dependency for + same variables in coarray assignments. + 2018-05-02 Tom de Vries <tom@codesourcery.com> PR libgomp/82428 diff --git a/gcc/fortran/dependency.c b/gcc/fortran/dependency.c index 3e14ddc..a0bbd58 100644 --- a/gcc/fortran/dependency.c +++ b/gcc/fortran/dependency.c @@ -2238,9 +2238,8 @@ gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse) break; /* Exactly matching and forward overlapping ranges don't cause a - dependency, when they are not part of a coarray ref. */ - if (fin_dep < GFC_DEP_BACKWARD - && lref->u.ar.codimen == 0 && rref->u.ar.codimen == 0) + dependency. */ + if (fin_dep < GFC_DEP_BACKWARD) return 0; /* Keep checking. We only have a dependency if diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 00edd44..87b3ca7 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -1860,7 +1860,7 @@ conv_caf_send (gfc_code *code) { lhs_expr = code->ext.actual->expr; rhs_expr = code->ext.actual->next->expr; - may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, false) == 0 + may_require_tmp = gfc_check_dependency (lhs_expr, rhs_expr, true) == 0 ? boolean_false_node : boolean_true_node; gfc_init_block (&block); |