summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-04 20:26:24 +0000
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-04 20:26:24 +0000
commita6eea7cab481b74e411c92c2533c989f4f138bb6 (patch)
tree5c4da28c82571183db8296f69b54b10292eec205 /gcc
parentdd508a0080f1b5ad9643d260f133353b50aec173 (diff)
downloadgcc-a6eea7cab481b74e411c92c2533c989f4f138bb6.tar.gz
2007-10-04 Thomas Koenig <tkoenig@gcc.gnu.org>
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/testsuite/gfortran.dg/char_length_2.f902
-rw-r--r--gcc/testsuite/gfortran.dg/repeat_2.f904
-rw-r--r--gcc/testsuite/gfortran.dg/repeat_4.f904
-rw-r--r--gcc/testsuite/gfortran.dg/zero_length_2.f902
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 ("")