-- { dg-do compile } -- { dg-options "-O" } with System, Ada.Unchecked_Conversion; with System.Storage_Elements; use System.Storage_Elements; procedure Loop_Address2 is type Ptr is access all Integer; function To_Ptr is new Ada.Unchecked_Conversion (System.Address, Ptr); function F (BM : System.Address; I : Integer) return System.Address is begin return BM + Storage_Offset (4*I); end; B : Integer; P : Ptr; begin for I in 0 .. 2 loop P := To_Ptr (F (B'Address, I)); P.all := 0; end loop; end ;