From c2ad67f719e91065e6bb7197d1c9dcd19bf17a0f Mon Sep 17 00:00:00 2001 From: kargl Date: Thu, 10 May 2018 22:45:38 +0000 Subject: [PATCH] 2018-05-10 Steven G. Kargl PR fortran/85521 * array.c (gfc_resolve_character_array_constructor): Substrings with upper bound smaller than lower bound are zero length strings. 2018-05-10 Steven G. Kargl PR fortran/85521 * gfortran.dg/pr85521_1.f90: New test. * gfortran.dg/pr85521_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260139 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/array.c | 3 ++- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/pr85521_1.f90 | 8 ++++++++ gcc/testsuite/gfortran.dg/pr85521_2.f90 | 8 ++++++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr85521_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/pr85521_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index aedcb2d9608..09d015c12ba 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2018-05-10 Steven G. Kargl + PR fortran/85521 + * array.c (gfc_resolve_character_array_constructor): Substrings + with upper bound smaller than lower bound are zero length strings. + +2018-05-10 Steven G. Kargl + PR fortran/70870 * data.c (gfc_assign_data_value): Check that a data object does not also have default initialization. diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 58d611ba4f5..052775f0baf 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -2046,7 +2046,8 @@ got_charlen: else return true; - gcc_assert (current_length != -1); + if (current_length < 0) + current_length = 0; if (found_length == -1) found_length = current_length; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64014c48585..73f74e08401 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2018-05-10 Steven G. Kargl + PR fortran/85521 + * gfortran.dg/pr85521_1.f90: New test. + * gfortran.dg/pr85521_2.f90: New test. + +2018-05-10 Steven G. Kargl + PR fortran/70870 * gfortran.dg/pr70870_1.f90: New test. diff --git a/gcc/testsuite/gfortran.dg/pr85521_1.f90 b/gcc/testsuite/gfortran.dg/pr85521_1.f90 new file mode 100644 index 00000000000..57e4620fe0d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr85521_1.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/85521 +program p + character(3) :: c = 'abc' + character(3) :: z(1) + z = [ c(:-1) ] + print *, z +end diff --git a/gcc/testsuite/gfortran.dg/pr85521_2.f90 b/gcc/testsuite/gfortran.dg/pr85521_2.f90 new file mode 100644 index 00000000000..737b61a11b9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr85521_2.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/85521 +program p + character(3) :: c = 'abc' + character(3) :: z(1) + z = [ c(:-2) ] + print *, z +end -- 2.11.4.GIT