1with System; 2 3package Loop_Optimization2 is 4 5 type Prim_Ptr is access procedure; 6 type Address_Array is array (Positive range <>) of Prim_Ptr; 7 8 subtype Dispatch_Table is Address_Array (1 .. 1); 9 10 type Tag is access all Dispatch_Table; 11 12 type Tag_Array is array (Positive range <>) of Tag; 13 14 function Interface_Ancestor_Tags (T : Tag) return Tag_Array; 15 16 type Interface_Data_Element is record 17 Iface_Tag : Tag; 18 end record; 19 20 type Interfaces_Array is array (Natural range <>) of Interface_Data_Element; 21 22 type Interface_Data (Nb_Ifaces : Positive) is record 23 Ifaces_Table : Interfaces_Array (1 .. Nb_Ifaces); 24 end record; 25 26 type Interface_Data_Ptr is access all Interface_Data; 27 28 type Type_Specific_Data (Idepth : Natural) is record 29 Interfaces_Table : Interface_Data_Ptr; 30 end record; 31 32 type Type_Specific_Data_Ptr is access all Type_Specific_Data; 33 pragma No_Strict_Aliasing (Type_Specific_Data_Ptr); 34 35 subtype Predef_Prims_Table is Address_Array (1 .. 16); 36 type Predef_Prims_Table_Ptr is access Predef_Prims_Table; 37 38 type Addr_Ptr is access System.Address; 39 pragma No_Strict_Aliasing (Addr_Ptr); 40 41end Loop_Optimization2; 42