-- { dg-do compile } -- { dg-options "-O2" } function slice1 (Offset : Integer) return String is Convert : constant String := "0123456789abcdef"; Buffer : String (1 .. 32); Pos : Natural := Buffer'Last; Value : Long_Long_Integer := Long_Long_Integer (Offset); begin while Value > 0 loop Buffer (Pos) := Convert (Integer (Value mod 16)); Pos := Pos - 1; Value := Value / 16; end loop; return Buffer (Pos + 1 .. Buffer'Last); end;