-- { dg-do compile } -- { dg-options "-O2" } with Ada.Containers; use Ada.Containers; with Ada.Containers.Vectors; function Opt32 return Natural is package My_Vectors is new Vectors (Index_Type => Natural, Element_Type => Integer); use My_Vectors; V : Vector; function Sign_Changes return Natural is Cur : Cursor := To_Cursor (V, 0); R : Natural := 0; Negative : Boolean; begin Negative := Element (Cur) < 0; loop Cur := Next (Cur); exit when R > 100; if (Element (Cur) < 0) /= Negative then Negative := not Negative; R := R + 1; end if; end loop; return R; end; begin return Sign_Changes; end;