Bug 36239 - ICE: gfc_validate_kind(): Got bad kind
Summary: ICE: gfc_validate_kind(): Got bad kind
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.4.0
: P3 normal
Target Milestone: 4.4.0
Assignee: kargls
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2008-05-15 05:46 UTC by Tobias Burnus
Modified: 2008-12-28 04:14 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail: 4.2.3 4.4.0
Last reconfirmed: 2008-05-15 18:24:38


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Burnus 2008-05-15 05:46:39 UTC
James Van Buskirk found the following bug, see
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/1cc4ce4ecec2933d


         integer, parameter :: k_k11 = kind(int(Parg1,kind=k11))
                                                               1
Internal Error at (1):
gfc_validate_kind(): Got bad kind


 module bugmod
   parameter(ik1 = selected_int_kind(2))
   implicit complex (P)
   contains
      subroutine bug1(P1)
         integer(ik1), parameter :: k11 = ik1
         complex, parameter :: carg1 = 0
         parameter(Parg1 = carg1)
         integer, parameter :: k_k11 = kind(int(Parg1,kind=k11))
      end subroutine bug1
end module bugmod
Comment 1 kargls 2008-05-15 17:42:13 UTC
Here's a reduced testcase

subroutine bug1
  integer, parameter :: ik1 = 1
  integer, parameter :: k_k11 = kind(int((0.,0.), kind=ik1))
end subroutine bug1

If (0.,0.) is replaced by either 0 (i.e., INTEGER) or 0. (i.e., REAL),
then the code compiles.

If ik1 is 1, 2, or 16, then the ICE occurs.  For ik1 = 4 or 8, the 
code compiles.
Comment 2 kargls 2008-05-15 18:24:38 UTC
I have a patch for this bug.
Comment 3 Jerry DeLisle 2008-05-16 03:42:06 UTC
Subject: Bug 36239

Author: jvdelisle
Date: Fri May 16 03:41:17 2008
New Revision: 135408

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=135408
Log:
2008-05-15  Steven G. Kargl  <kargls@comcast.net>

	* simplify.c (gfc_simplify_dble, gfc_simplify_float,
	simplify_bound, gfc_simplify_nearest, gfc_simplify_real): Plug
	possible memory leaks.
	(gfc_simplify_reshape): Plug possible memory leaks and dereferencing
	of NULL pointers.

2008-05-15  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/36239
	* simplify.c (gfc_simplify_int, gfc_simplify_intconv): Replaced hand
	rolled integer conversion with gfc_int2int, gfc_real2int, and
	gfc_complex2int.
	(gfc_simplify_intconv): Renamed to simplify_intconv.
	
2008-05-15  Steven G. Kargl,   <kargl@comcast.net>
	* gfortran.dg/and_or_xor.f90: New test

	* fortran/simplify.c (gfc_simplify_and, gfc_simplify_or,
	gfc_simplify_xor): Don't range check logical results.

Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/intrinsic.texi
    trunk/gcc/fortran/simplify.c

Comment 4 Jerry DeLisle 2008-05-16 03:43:06 UTC
Fixed on trunk