2007-10-04 Thomas Koenig <tkoenig@gcc.gnu.org>
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2007 20:26:24 +0000 (20:26 +0000)
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 4 Oct 2007 20:26:24 +0000 (20:26 +0000)
PR fortran/33539
* resolve.c: Only warn if the string length is
less than zero.

2007-10-04  Thomas Koenig  <tkoenig@gcc.gnu.org>

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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129022 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/resolve.c
gcc/testsuite/gfortran.dg/char_length_2.f90
gcc/testsuite/gfortran.dg/repeat_2.f90
gcc/testsuite/gfortran.dg/repeat_4.f90
gcc/testsuite/gfortran.dg/zero_length_2.f90

index 82c990d..536b3c5 100644 (file)
@@ -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);
index dc2efb9..a519c54 100644 (file)
@@ -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" }
index bcb70e2..d71f186 100644 (file)
@@ -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
index 64d213a..e5b5acc 100644 (file)
@@ -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
 
index 31b99f5..2cc3f29 100644 (file)
@@ -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 ("")