From 815cd40643f4007299927c480145ba81528edc26 Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Thu, 4 Oct 2007 20:26:24 +0000 Subject: [PATCH] re PR fortran/33539 (Too much noise for zero-length character strings) 2007-10-04 Thomas Koenig PR fortran/33539 * resolve.c: Only warn if the string length is less than zero. 2007-10-04 Thomas Koenig PR fortran/33539 * zero_length_2.f90: Omit warning for zero-length string. * repeat_2.f90: Likewise. * repeat_4.f90: Likewise. * char_length_2.f90: Likewise. From-SVN: r129022 --- gcc/fortran/resolve.c | 2 +- gcc/testsuite/gfortran.dg/char_length_2.f90 | 2 +- gcc/testsuite/gfortran.dg/repeat_2.f90 | 4 ++-- gcc/testsuite/gfortran.dg/repeat_4.f90 | 4 ++-- gcc/testsuite/gfortran.dg/zero_length_2.f90 | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 82c990d9a9d..536b3c5d3f7 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6558,7 +6558,7 @@ resolve_charlen (gfc_charlen *cl) /* "If the character length parameter value evaluates to a negative value, the length of character entities declared is zero." */ - if (cl->length && !gfc_extract_int (cl->length, &i) && i <= 0) + if (cl->length && !gfc_extract_int (cl->length, &i) && i < 0) { gfc_warning_now ("CHARACTER variable has zero length at %L", &cl->length->where); diff --git a/gcc/testsuite/gfortran.dg/char_length_2.f90 b/gcc/testsuite/gfortran.dg/char_length_2.f90 index dc2efb94f77..a519c540fd3 100644 --- a/gcc/testsuite/gfortran.dg/char_length_2.f90 +++ b/gcc/testsuite/gfortran.dg/char_length_2.f90 @@ -3,7 +3,7 @@ ! CHARACTER lengths weren't reduced early enough for all checks of ! them to be meaningful. Furthermore negative string lengths weren't ! dealt with correctly. -CHARACTER(len=0) :: c1 ! { dg-warning "CHARACTER variable has zero length" } +CHARACTER(len=0) :: c1 ! This is OK. CHARACTER(len=-1) :: c2 ! { dg-warning "CHARACTER variable has zero length" } PARAMETER(I=-100) CHARACTER(len=I) :: c3 ! { dg-warning "CHARACTER variable has zero length" } diff --git a/gcc/testsuite/gfortran.dg/repeat_2.f90 b/gcc/testsuite/gfortran.dg/repeat_2.f90 index bcb70e2131c..d71f1860aa3 100644 --- a/gcc/testsuite/gfortran.dg/repeat_2.f90 +++ b/gcc/testsuite/gfortran.dg/repeat_2.f90 @@ -22,10 +22,10 @@ end subroutine bar program test implicit none - character(len=0), parameter :: s0 = "" ! { dg-warning "zero length" } + character(len=0), parameter :: s0 = "" character(len=1), parameter :: s1 = "a" character(len=2), parameter :: s2 = "ab" - character(len=0) :: t0 ! { dg-warning "CHARACTER variable has zero length" } + character(len=0) :: t0 character(len=1) :: t1 character(len=2) :: t2 integer :: i diff --git a/gcc/testsuite/gfortran.dg/repeat_4.f90 b/gcc/testsuite/gfortran.dg/repeat_4.f90 index 64d213a147f..e5b5acc60ce 100644 --- a/gcc/testsuite/gfortran.dg/repeat_4.f90 +++ b/gcc/testsuite/gfortran.dg/repeat_4.f90 @@ -3,10 +3,10 @@ ! { dg-do compile } program test implicit none - character(len=0), parameter :: s0 = "" ! { dg-warning "zero length" } + character(len=0), parameter :: s0 = "" character(len=1), parameter :: s1 = "a" character(len=2), parameter :: s2 = "ab" - character(len=0) :: t0 ! { dg-warning "CHARACTER variable has zero length" } + character(len=0) :: t0 character(len=1) :: t1 character(len=2) :: t2 diff --git a/gcc/testsuite/gfortran.dg/zero_length_2.f90 b/gcc/testsuite/gfortran.dg/zero_length_2.f90 index 31b99f58fac..2cc3f2938ca 100644 --- a/gcc/testsuite/gfortran.dg/zero_length_2.f90 +++ b/gcc/testsuite/gfortran.dg/zero_length_2.f90 @@ -1,6 +1,6 @@ ! { dg-do run } character(len=1) :: s - character(len=0) :: s0 ! { dg-warning "CHARACTER variable has zero length" } + character(len=0) :: s0 s = " " s0 = "" call bar ("") -- 2.30.2