From: Steven G. Kargl Date: Thu, 4 Jan 2018 20:18:58 +0000 (+0000) Subject: re PR fortran/83679 (r256113 causes regression on pr77942.f90) X-Git-Tag: releases/gcc-6.5.0~609 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d98a8ffa8c8b33414e5095c0bb8afed97c6b1524;p=thirdparty%2Fgcc.git re PR fortran/83679 (r256113 causes regression on pr77942.f90) 2018-01-04 Steven G. Kargl PR Fortran/83679 * simplify.c (gfc_simplify_cshift): Restore early return for zero-sized array. Update Copyright year while here. From-SVN: r256264 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 18d014e02937..11095e9f17d2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-01-04 Steven G. Kargl + + PR Fortran/83679 + * simplify.c (gfc_simplify_cshift): Restore early return for zero-sized + array. Update Copyright year while here. + 2018-01-02 Thomas Koenig Backport from 7-branch diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index ea7a74644213..c9a6dd55b463 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -1,5 +1,5 @@ /* Simplify intrinsic functions at compile-time. - Copyright (C) 2000-2016 Free Software Foundation, Inc. + Copyright (C) 2000-2016, 2018 Free Software Foundation, Inc. Contributed by Andy Vaught & Katherine Holcomb This file is part of GCC. @@ -1838,13 +1838,17 @@ gfc_simplify_cshift (gfc_expr *array, gfc_expr *shift, gfc_expr *dim) sz = mpz_get_si (size); mpz_clear (size); + /* Special case: Zero-sized array. */ + if (sz == 0) + return a; + /* Adjust shft to deal with right or left shifts. */ shft = shft % sz; if (shft < 0) - shft += sz; + shft += sz; /* Special case: Shift to the original order! */ - if (sz == 0 || shft % sz == 0) + if (shft % sz == 0) return a; result = gfc_copy_expr (a);