From d98a8ffa8c8b33414e5095c0bb8afed97c6b1524 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Thu, 4 Jan 2018 20:18:58 +0000 Subject: [PATCH] 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 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/simplify.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) 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); -- 2.47.2