-- { dg-do compile } -- { dg-options "-O3" } package body Loop_Optimization1 is procedure Create (A : in out D; Val : Integer) is M : constant Group_Chain_List := Group_Chains(Val); G : constant Group_List := Groups(Val); function Is_Visible (Group : Number) return Boolean is begin for I in M'Range loop if Group = M(I).Groups(M(I).Length) then return True; end if; end loop; return False; end; begin for I in A.L'Range loop A.L(I) := new R(Is_Visible(G(I))); end loop; end; end Loop_Optimization1;