1-- { dg-do compile } 2 3procedure Unchecked_Union2 is 4 type small_array is array (0 .. 2) of Integer; 5 type big_array is array (0 .. 3) of Integer; 6 7 type small_record is record 8 field1 : aliased Integer := 0; 9 field2 : aliased small_array := (0, 0, 0); 10 end record; 11 12 type big_record is record 13 field1 : aliased Integer := 0; 14 field2 : aliased big_array := (0, 0, 0, 0); 15 end record; 16 17 type myUnion (discr : Integer := 0) is record 18 case discr is 19 when 0 => 20 record1 : aliased small_record; 21 when others => 22 record2 : aliased big_record; 23 end case; 24 end record; 25 26 type UU_myUnion3 (discr : Integer := 0) is new myUnion (discr); -- Test 27 pragma Unchecked_Union (UU_myUnion3); 28 pragma Convention (C, UU_myUnion3); 29 30 procedure Convert (A : in UU_myUnion3; B : out UU_myUnion3); 31 pragma Import (C, Convert); 32 33begin 34 null; 35end Unchecked_Union2; 36