re PR fortran/28081 (Undue compile-time error for zero-sized substring)
PR fortran/28081 * resolve.c (resolve_substring): Don't issue out-of-bounds error messages when the range has zero size. * gfortran.dg/substr_3.f: New test. * gfortran.dg/equiv_2.f90: Update expected error message. From-SVN: r114972
This commit is contained in:
parent
8fa3657824
commit
97bca5132a
5 changed files with 32 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
2006-06-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/28081
|
||||
* resolve.c (resolve_substring): Don't issue out-of-bounds
|
||||
error messages when the range has zero size.
|
||||
|
||||
2006-06-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/23862
|
||||
|
|
|
@ -2542,7 +2542,9 @@ resolve_substring (gfc_ref * ref)
|
|||
return FAILURE;
|
||||
}
|
||||
|
||||
if (compare_bound_int (ref->u.ss.start, 1) == CMP_LT)
|
||||
if (compare_bound_int (ref->u.ss.start, 1) == CMP_LT
|
||||
&& (compare_bound (ref->u.ss.end, ref->u.ss.start) == CMP_EQ
|
||||
|| compare_bound (ref->u.ss.end, ref->u.ss.start) == CMP_GT))
|
||||
{
|
||||
gfc_error ("Substring start index at %L is less than one",
|
||||
&ref->u.ss.start->where);
|
||||
|
@ -2570,9 +2572,11 @@ resolve_substring (gfc_ref * ref)
|
|||
}
|
||||
|
||||
if (ref->u.ss.length != NULL
|
||||
&& compare_bound (ref->u.ss.end, ref->u.ss.length->length) == CMP_GT)
|
||||
&& compare_bound (ref->u.ss.end, ref->u.ss.length->length) == CMP_GT
|
||||
&& (compare_bound (ref->u.ss.end, ref->u.ss.start) == CMP_EQ
|
||||
|| compare_bound (ref->u.ss.end, ref->u.ss.start) == CMP_GT))
|
||||
{
|
||||
gfc_error ("Substring end index at %L is out of bounds",
|
||||
gfc_error ("Substring end index at %L exceeds the string length",
|
||||
&ref->u.ss.start->where);
|
||||
return FAILURE;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2006-06-24 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR fortran/28081
|
||||
* gfortran.dg/substr_3.f: New test.
|
||||
* gfortran.dg/equiv_2.f90: Update expected error message.
|
||||
|
||||
2006-06-24 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/28118
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
subroutine broken_equiv2
|
||||
character*4 j
|
||||
character*2 k
|
||||
equivalence (j(2:3), k(1:5)) ! { dg-error "out of bounds" }
|
||||
equivalence (j(2:3), k(1:5)) ! { dg-error "exceeds the string length" }
|
||||
end subroutine
|
||||
|
||||
subroutine broken_equiv3
|
||||
|
|
12
gcc/testsuite/gfortran.dg/substr_3.f
Normal file
12
gcc/testsuite/gfortran.dg/substr_3.f
Normal file
|
@ -0,0 +1,12 @@
|
|||
! { dg-do run }
|
||||
! Check that substrings behave correctly even when zero-sized
|
||||
implicit none
|
||||
character(len=10) :: s, t
|
||||
integer :: i, j
|
||||
|
||||
s = "abcdefghij"
|
||||
t(:10) = s(1:)
|
||||
s(16:15) = "foo"
|
||||
s(0:-1) = "foo"
|
||||
if (s /= t) call abort
|
||||
end
|
Loading…
Add table
Reference in a new issue