Commit eb62be44 by Steven G. Kargl

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
parent d693dd26
2007-02-14 Steven G. Kargl <kargl@gcc.gnu.org> 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. * misc.c (gfc_typename): Fix potential buffer overflow.
2007-02-13 Paul Thomas <pault@gcc.gnu.org> 2007-02-13 Paul Thomas <pault@gcc.gnu.org>
......
...@@ -1025,7 +1025,10 @@ match_logical_constant (gfc_expr **result) ...@@ -1025,7 +1025,10 @@ match_logical_constant (gfc_expr **result)
kind = gfc_default_logical_kind; kind = gfc_default_logical_kind;
if (gfc_validate_kind (BT_LOGICAL, kind, true) < 0) 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 (); e = gfc_get_expr ();
......
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> 2007-02-14 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/torture/complex-alias-1.c: New test. * gcc.dg/torture/complex-alias-1.c: New test.
! { 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment