-- { dg-do compile } -- { dg-options "-O" } with Loop_Optimization13_Pkg; use Loop_Optimization13_Pkg; package body Loop_Optimization13 is function F (A : Rec) return Rec is N : constant Integer := A.V'Length / L; Res : Rec := (True, new Complex_Vector' (0 .. A.V'Length / L - 1 => (0.0, 0.0))); begin for I in 0 .. L - 1 loop for J in 0 .. N - 1 loop Res.V (J) := Res.V (J) + A.V (I * N + J); end loop; end loop; return Res; end; end Loop_Optimization13;