https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80611
--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 9 May 2017, dominiq at lps dot ens.fr wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80611 > > --- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- > The following patch fixes the failures: > > --- ../_clean/gcc/testsuite/gfortran.dg/coarray_lock_7.f90 2016-09-19 > 18:03:55.000000000 +0200 > +++ gcc/testsuite/gfortran.dg/coarray_lock_7.f90 2017-05-09 > 15:37:16.000000000 +0200 > @@ -35,8 +35,8 @@ end > ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., 0, 0, > 0B, 0B, 0B, 0\\);" 1 "original" } } > ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., 0, > 0, 0B, 0B, 0\\);" 1 "original" } } > > -! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., \\(3 > - > \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ > \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - > parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) > parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);|_gfortran_caf_lock > \\(caf_token.1, \\(3 - parm...dim\\\[0\\\].lbound\\) \\+ MAX_EXPR > <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* > \\(3 - parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);" 1 "original" } } > -! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., > \\(2 > - \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ > \\(integer\\(kind=4\\)\\) MAX_EXPR <\\(parm...dim\\\[0\\\].ubound - > parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* \\(3 - \\(integer\\(kind=4\\)\\) > parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);|_gfortran_caf_unlock > \\(caf_token.., \\(2 - parm...dim\\\[0\\\].lbound\\) \\+ MAX_EXPR > <\\(parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound\\) \\+ 1, 0> \\* > \\(3 - parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);" 1 "original" } } > +! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(caf_token.., \\(3 > - > \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ > \\(integer\\(kind=4\\)\\) \\(MAX_EXPR <parm...dim\\\[0\\\].ubound - > parm...dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* \\(3 - \\(integer\\(kind=4\\)\\) > parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);|_gfortran_caf_lock > \\(caf_token.1, \\(3 - parm...dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR > <parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* > \\(3 > - parm...dim\\\[1\\\].lbound\\), 0, 0B, &ii, 0B, 0\\);" 1 "original" } } > +! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(caf_token.., > \\(2 > - \\(integer\\(kind=4\\)\\) parm...dim\\\[0\\\].lbound\\) \\+ > \\(integer\\(kind=4\\)\\) \\(MAX_EXPR <parm...dim\\\[0\\\].ubound - > parm...dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* \\(3 - \\(integer\\(kind=4\\)\\) > parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);|_gfortran_caf_unlock > \\(caf_token.., \\(2 - parm...dim\\\[0\\\].lbound\\) \\+ \\(MAX_EXPR > <parm...dim\\\[0\\\].ubound - parm...dim\\\[0\\\].lbound, -1> \\+ 1\\) \\* > \\(3 > - parm...dim\\\[1\\\].lbound\\), 0, &ii, 0B, 0\\);" 1 "original" } } > > ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(three.token, 0, 5 > - > \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &acquired.\[0-9\]+, 0B, > 0B, 0\\);|_gfortran_caf_lock \\(three.token, 0, 5 - three.dim\\\[0\\\].lbound, > &acquired.\[0-9\]+, 0B, 0B, 0\\);" 1 "original" } } > ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(three.token, 0, > 8 > - \\(integer\\(kind=4\\)\\) three.dim\\\[0\\\].lbound, &ii, 0B, > 0\\);|_gfortran_caf_unlock \\(three.token, 0, 8 - three.dim\\\[0\\\].lbound, > &ii, 0B, 0\\);" 1 "original" } } > > I didn't try to find which revision replaced > > MAX_EXPR <(parm.9.dim[0].ubound - parm.9.dim[0].lbound) + 1, 0> > > with > > (MAX_EXPR <parm.9.dim[0].ubound - parm.9.dim[0].lbound, -1> + 1) The one enabling strict overflow by default for sure. Thanks for fixing and please commit!