with System; package Loop_Optimization2 is type Prim_Ptr is access procedure; type Address_Array is array (Positive range <>) of Prim_Ptr; subtype Dispatch_Table is Address_Array (1 .. 1); type Tag is access all Dispatch_Table; type Tag_Array is array (Positive range <>) of Tag; function Interface_Ancestor_Tags (T : Tag) return Tag_Array; type Interface_Data_Element is record Iface_Tag : Tag; end record; type Interfaces_Array is array (Natural range <>) of Interface_Data_Element; type Interface_Data (Nb_Ifaces : Positive) is record Ifaces_Table : Interfaces_Array (1 .. Nb_Ifaces); end record; type Interface_Data_Ptr is access all Interface_Data; type Type_Specific_Data (Idepth : Natural) is record Interfaces_Table : Interface_Data_Ptr; end record; type Type_Specific_Data_Ptr is access all Type_Specific_Data; pragma No_Strict_Aliasing (Type_Specific_Data_Ptr); subtype Predef_Prims_Table is Address_Array (1 .. 16); type Predef_Prims_Table_Ptr is access Predef_Prims_Table; type Addr_Ptr is access System.Address; pragma No_Strict_Aliasing (Addr_Ptr); end Loop_Optimization2;