re PR rtl-optimization/34522 (inefficient code for long long multiply when only low...
[official-gcc.git] / gcc / ada / a-coprnu.ads
blob0f832d125e6a7f3a39e61bb4c034a96c62ebd75d
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT LIBRARY COMPONENTS --
4 -- --
5 -- A D A . C O N T A I N E R S . P R I M E _ N U M B E R S --
6 -- --
7 -- S p e c --
8 -- --
9 -- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
10 -- --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 2, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING. If not, write --
19 -- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
20 -- Boston, MA 02110-1301, USA. --
21 -- --
22 -- As a special exception, if other files instantiate generics from this --
23 -- unit, or you link this unit with other files to produce an executable, --
24 -- this unit does not by itself cause the resulting executable to be --
25 -- covered by the GNU General Public License. This exception does not --
26 -- however invalidate any other reasons why the executable file might be --
27 -- covered by the GNU Public License. --
28 -- --
29 -- This unit was originally developed by Matthew J Heaney. --
30 ------------------------------------------------------------------------------
32 -- This package declares the prime numbers array used to implement hashed
33 -- containers. Bucket arrays are always allocated with a prime-number
34 -- length (computed using To_Prime below), as this produces better scatter
35 -- when hash values are folded.
37 package Ada.Containers.Prime_Numbers is
38 pragma Pure;
40 type Primes_Type is array (Positive range <>) of Hash_Type;
42 Primes : constant Primes_Type :=
43 (53, 97, 193, 389, 769,
44 1543, 3079, 6151, 12289, 24593,
45 49157, 98317, 196613, 393241, 786433,
46 1572869, 3145739, 6291469, 12582917, 25165843,
47 50331653, 100663319, 201326611, 402653189, 805306457,
48 1610612741, 3221225473, 4294967291);
50 function To_Prime (Length : Count_Type) return Hash_Type;
51 -- Returns the smallest value in Primes not less than Length
53 end Ada.Containers.Prime_Numbers;