Not sure the declaration below is legal, but it ICEs anyway. package pak1 is type T1(x1: integer) is record x2: integer := T1.x1; end record; end pak1; gcc-4.1 -c pak1.ads +===========================GNAT BUG DETECTED==============================+ | 4.1.3 20070518 (prerelease) (Debian 4.1.2-8) (x86_64-pc-linux-gnu) GCC error:| | in gimplify_expr, at gimplify.c:4519 | | No source file position information available | +===========================GNAT BUG DETECTED==============================+ | 4.2.2 (i686-unknown-linux-gnu) in gimplify_expr, at gimplify.c:5888 | | No source file position information available | gcc-4.3 -c pak1.ads +===========================GNAT BUG DETECTED==============================+ | 4.3.1 20080309 (prerelease) (x86_64-pc-linux-gnu) GCC error: | | in gimplify_expr, at gimplify.c:6120 | | Error detected around pak1.ads:3 |
This means there is an unhandled tree in gimplify_expr, which is in this case probably PLACEHOLDER_EXPR(?): pak1.t1ip (_init, x1) { _init.x1 = (integer) x1; _init.x2 = <PLACEHOLDER_EXPR struct pak1__t1>.x1; goto <D.509>; <D.509>:; return _init;
The code is not legal, adding keyword
Fixed on the mainline.