1-- { dg-do compile }
2-- { dg-options "-O2" }
3
4function slice1 (Offset : Integer) return String is
5
6   Convert : constant String := "0123456789abcdef";
7   Buffer  : String (1 .. 32);
8   Pos     : Natural := Buffer'Last;
9   Value   : Long_Long_Integer := Long_Long_Integer (Offset);
10
11begin
12   while Value > 0 loop
13      Buffer (Pos) := Convert (Integer (Value mod 16));
14      Pos := Pos - 1;
15      Value := Value / 16;
16   end loop;
17
18   return Buffer (Pos + 1 .. Buffer'Last);
19end;
20