-- { dg-do run } with GNAT.Table; with Ada.Text_IO; use Ada.Text_IO; procedure test_table1 is type Rec is record A, B, C, D, E : Integer := 0; F, G, H, I, J : Integer := 1; K, L, M, N, O : Integer := 2; end record; R : Rec; package Tab is new GNAT.Table (Rec, Positive, 1, 4, 30); Last : Natural; begin R.O := 3; Tab.Append (R); for J in 1 .. 1_000_000 loop Last := Tab.Last; begin Tab.Append (Tab.Table (Last)); exception when others => Put_Line ("exception raise for J =" & J'Img); raise; end; if Tab.Table (Tab.Last) /= R then Put_Line ("Last is not what is expected"); Put_Line (J'Img); return; end if; end loop; end;