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