-- { dg-do compile } -- { dg-options "-cargs --param max-completely-peeled-insns=200 -margs -O3" } package body Opt42 is function "*" (Left, Right : in Array_Type) return Array_Type is Temp : Float; Result : Array_Type; begin for I in Index_Type loop for J in Index_Type loop Temp := 0.0; for K in Index_Type loop Temp := Temp + Left (I) (K) * Right (K) (J); end loop; Result (I) (J) := Temp; end loop; end loop; return Result; end "*"; end Opt42;