oops - fixed typo in previous delta
[official-gcc.git] / gcc / hwint.h
blob91973b8187ae01cea740629269e34dacf38dd22e
1 /* HOST_WIDE_INT definitions for the GNU compiler.
2 Copyright (C) 1998 Free Software Foundation, Inc.
4 This file is part of GNU CC.
6 Provide definitions for macros which depend on HOST_BITS_PER_INT
7 and HOST_BITS_PER_LONG. */
9 #ifndef __HWINT_H__
10 #define __HWINT_H__
12 /* Only do all of this if both of these macros are defined, otherwise
13 they'll evaluate to zero, which is not what you want. */
14 #if defined (HOST_BITS_PER_LONG) && defined (HOST_BITS_PER_INT)
16 /* Find the largest host integer type and set its size and type. */
18 #ifndef HOST_BITS_PER_WIDE_INT
20 # if HOST_BITS_PER_LONG > HOST_BITS_PER_INT
21 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG
22 # define HOST_WIDE_INT long
23 # else
24 # define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_INT
25 # define HOST_WIDE_INT int
26 # endif
28 #endif /* ! HOST_BITS_PER_WIDE_INT */
31 /* Provide defaults for the way to print a HOST_WIDE_INT
32 in various manners. */
34 #ifndef HOST_WIDE_INT_PRINT_DEC
35 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
36 # define HOST_WIDE_INT_PRINT_DEC "%d"
37 # else
38 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
39 # define HOST_WIDE_INT_PRINT_DEC "%ld"
40 # else
41 # define HOST_WIDE_INT_PRINT_DEC "%lld"
42 # endif
43 # endif
44 #endif /* ! HOST_WIDE_INT_PRINT_DEC */
46 #ifndef HOST_WIDE_INT_PRINT_UNSIGNED
47 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
48 # define HOST_WIDE_INT_PRINT_UNSIGNED "%u"
49 # else
50 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
51 # define HOST_WIDE_INT_PRINT_UNSIGNED "%lu"
52 # else
53 # define HOST_WIDE_INT_PRINT_UNSIGNED "%llu"
54 # endif
55 # endif
56 #endif /* ! HOST_WIDE_INT_PRINT_UNSIGNED */
58 #ifndef HOST_WIDE_INT_PRINT_HEX
59 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
60 # define HOST_WIDE_INT_PRINT_HEX "0x%x"
61 # else
62 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
63 # define HOST_WIDE_INT_PRINT_HEX "0x%lx"
64 # else
65 # define HOST_WIDE_INT_PRINT_HEX "0x%llx"
66 # endif
67 # endif
68 #endif /* ! HOST_WIDE_INT_PRINT_HEX */
70 #ifndef HOST_WIDE_INT_PRINT_DOUBLE_HEX
71 # if HOST_BITS_PER_WIDE_INT == 64
72 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
73 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%016x"
74 # else
75 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
76 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%016lx"
77 # else
78 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%016llx"
79 # endif
80 # endif
81 # else
82 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
83 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%x%08x"
84 # else
85 # if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
86 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%08lx"
87 # else
88 # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%08llx"
89 # endif
90 # endif
91 # endif
92 #endif /* ! HOST_WIDE_INT_PRINT_DOUBLE_HEX */
94 #endif /* HOST_BITS_PER_LONG && HOST_BITS_PER_INT */
96 #endif /* __HWINT_H__ */