primary.c (match_logical_constant): Return MATCH_ERROR on invalid kind.
2007-02-14 Steven G. Kargl <kargl@gcc.gnu.org> * primary.c (match_logical_constant): Return MATCH_ERROR on invalid kind. * gfortran.dg/logical_2.f90: New test. From-SVN: r121974
This commit is contained in:
parent
d693dd2638
commit
eb62be4408
@ -1,3 +1,9 @@
|
||||
2007-02-14 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/30799
|
||||
* primary.c (match_logical_constant): Return MATCH_ERROR on invalid
|
||||
kind.
|
||||
|
||||
2007-02-14 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
* misc.c (gfc_typename): Fix potential buffer overflow.
|
||||
|
@ -1025,7 +1025,10 @@ match_logical_constant (gfc_expr **result)
|
||||
kind = gfc_default_logical_kind;
|
||||
|
||||
if (gfc_validate_kind (BT_LOGICAL, kind, true) < 0)
|
||||
gfc_error ("Bad kind for logical constant at %C");
|
||||
{
|
||||
gfc_error ("Bad kind for logical constant at %C");
|
||||
return MATCH_ERROR;
|
||||
}
|
||||
|
||||
e = gfc_get_expr ();
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-02-14 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/30799
|
||||
* gfortran.dg/logical_2.f90: New test.
|
||||
|
||||
2007-02-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* gcc.dg/torture/complex-alias-1.c: New test.
|
||||
|
26
gcc/testsuite/gfortran.dg/logical_2.f90
Normal file
26
gcc/testsuite/gfortran.dg/logical_2.f90
Normal file
@ -0,0 +1,26 @@
|
||||
! { dg-do compile }
|
||||
! PR fortran/30799
|
||||
! Inconsistent handling of bad (invalid) LOGICAL kinds
|
||||
! Reporter: Harald Anlauf <anlauf@gmx.de>
|
||||
! Testcase altered by Steven G. Kargl
|
||||
program gfcbug57
|
||||
implicit none
|
||||
!
|
||||
! These are logical kinds known by gfortran and many other compilers:
|
||||
!
|
||||
print *, kind (.true._1) ! This prints "1"
|
||||
print *, kind (.true._2) ! This prints "2"
|
||||
print *, kind (.true._4) ! This prints "4"
|
||||
print *, kind (.true._8) ! This prints "8"
|
||||
!
|
||||
! These are very strange (read: bad (invalid?)) logical kinds,
|
||||
! handled inconsistently by gfortran (there's no logical(kind=0) etc.)
|
||||
!
|
||||
print *, kind (.true._0) ! { dg-error "kind for logical constant" }
|
||||
print *, kind (.true._3) ! { dg-error "kind for logical constant" }
|
||||
print *, kind (.true._123) ! { dg-error "kind for logical constant" }
|
||||
!
|
||||
! Here gfortran bails out with a runtime error:
|
||||
!
|
||||
print *, .true._3 ! { dg-error "kind for logical constant" }
|
||||
end program gfcbug57
|
Loading…
Reference in New Issue
Block a user