------- Additional Comments From pinskia at gcc dot gnu dot org 2005-06-14 04:27 ------- This is the smallest testcase I can get it: WITH REPORT; USE REPORT; PROCEDURE C37213J IS BEGIN DECLARE SUBTYPE SM IS INTEGER RANGE 1..10; TYPE REC (D1, D2 : SM) IS RECORD NULL; END RECORD; TYPE MY_ARR IS ARRAY (SM RANGE <>) OF INTEGER; GENERIC TYPE CONS IS PRIVATE; PROCEDURE SUBTYP_CHK (OBJ_XCP : BOOLEAN; TAG : STRING); PROCEDURE SUBTYP_CHK (OBJ_XCP : BOOLEAN; TAG : STRING) IS SUBTYPE SCONS IS CONS; X : SCONS; FUNCTION VALUE RETURN SCONS IS BEGIN RETURN X; END VALUE; BEGIN IF X /= VALUE THEN FAILED (""); END IF; END SUBTYP_CHK; TYPE VAR_REC_DEF1 (D3 : INTEGER := 1) IS RECORD CASE D3 IS WHEN 1 => C1 : REC (D3, IDENT_INT(11)); WHEN OTHERS => C2 : INTEGER := IDENT_INT(5); END CASE; END RECORD; PROCEDURE PROC3 IS NEW SUBTYP_CHK (VAR_REC_DEF1); BEGIN PROC3 (OBJ_XCP => TRUE, TAG => "PROC3"); END; END C37213J;
Note the use of case. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22019