OSDN Git Service

* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
[pf3gnuchains/gcc-fork.git] / gcc / builtin-types.def
1 /* Copyright (C) 2001 Free Software Foundation, Inc.
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free
7 Software Foundation; either version 2, or (at your option) any later
8 version.
9
10 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13 for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GCC; see the file COPYING.  If not, write to the Free
17 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
18 02111-1307, USA.  */
19
20 /* This header provides a declaritive way of describing the types that
21    are used when declaring builtin functions.
22
23    Before including this header, you must define the following macros:
24
25    DEF_PRIMITIVE_TYPE (ENUM, TYPE)
26
27      The ENUM is an identifier indicating which type is being defined.
28      TYPE is an expression for a `tree' that represents the type.
29
30    DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
31    DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
32    DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
33    DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
34    DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
35
36      These macros describe function types.  ENUM is as above.  The
37      RETURN type is one of the enumerals already defined.  ARG1, ARG2,
38      and ARG3 give the types of the arguments, similarly.
39
40    DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
41    DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
42    DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
43
44      Similar, but for function types that take variable arguments.
45      For example:
46
47        DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
48
49      describes the type `int ()(double)', using the enumeral
50      BT_INT_DOUBLE, whereas:
51
52        DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
53
54      describes the type `int ()(double, ...)'.
55  
56   DEF_POINTER_TYPE (ENUM, TYPE)
57
58     This macro describes a pointer type.  ENUM is as above; TYPE is
59     the type pointed to.  */
60
61 DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
62 DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
63 DEF_PRIMITIVE_TYPE (BT_UNSIGNED, unsigned_type_node)
64 DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
65 DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
66 DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
67 DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
68 DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
69 DEF_PRIMITIVE_TYPE (BT_LONG_DOUBLE, long_double_type_node)
70 DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
71 DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
72 DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONG_DOUBLE, complex_long_double_type_node)
73
74 DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
75 DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
76 DEF_PRIMITIVE_TYPE (BT_TRAD_PTR, traditional_ptr_type_node)
77 DEF_PRIMITIVE_TYPE (BT_TRAD_CONST_PTR, traditional_cptr_type_node)
78 DEF_PRIMITIVE_TYPE (BT_PTRMODE, type_for_mode (ptr_mode, 0))
79 DEF_PRIMITIVE_TYPE (BT_SIZE, c_size_type_node)
80 DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
81 DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
82 DEF_PRIMITIVE_TYPE (BT_LEN, traditional_len_type_node)
83
84 DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
85 DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
86
87 DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
88 DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
89 DEF_FUNCTION_TYPE_0 (BT_FN_UNSIGNED, BT_UNSIGNED)
90
91 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
92 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
93 DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
94 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
95 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
96 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE_LONG_DOUBLE, 
97                      BT_LONG_DOUBLE, BT_LONG_DOUBLE)
98 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, 
99                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
100 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
101                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
102 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONG_DOUBLE_COMPLEX_LONG_DOUBLE, 
103                      BT_COMPLEX_LONG_DOUBLE, BT_COMPLEX_LONG_DOUBLE)
104 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT, 
105                      BT_FLOAT, BT_COMPLEX_FLOAT)
106 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
107                      BT_DOUBLE, BT_COMPLEX_DOUBLE)
108 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE_COMPLEX_LONG_DOUBLE,
109                      BT_LONG_DOUBLE, BT_COMPLEX_LONG_DOUBLE)
110 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UNSIGNED, BT_PTR, BT_UNSIGNED)
111 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
112 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
113 DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
114 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
115 DEF_FUNCTION_TYPE_1 (BT_FN_LEN_CONST_STRING, BT_LEN, BT_CONST_STRING)
116 DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
117 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
118 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
119 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
120
121 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
122 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING, 
123                      BT_STRING, BT_STRING, BT_CONST_STRING)
124 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
125                      BT_INT, BT_CONST_STRING, BT_CONST_STRING)
126 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
127                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
128 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
129                      BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
130 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
131                      BT_STRING, BT_CONST_STRING, BT_INT)
132 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR,
133                      BT_INT, BT_CONST_STRING, BT_PTR)
134 DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_PTR,
135                      BT_INT, BT_INT, BT_PTR)
136 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
137                      BT_VOID, BT_PTRMODE, BT_PTR)
138 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG, 
139                      BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
140 DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
141                      BT_LONG, BT_LONG, BT_LONG)
142 DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
143                      BT_INT, BT_PTR, BT_CONST_STRING)
144 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_TRAD_PTR_LEN,
145                      BT_VOID, BT_TRAD_PTR, BT_LEN)
146
147 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
148                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
149 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
150                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
151 DEF_FUNCTION_TYPE_3 (BT_FN_TRAD_PTR_PTR_CONST_PTR_SIZE,
152                      BT_TRAD_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
153 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
154                      BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
155 DEF_FUNCTION_TYPE_3 (BT_FN_TRAD_PTR_PTR_INT_SIZE,
156                      BT_TRAD_PTR, BT_PTR, BT_INT, BT_SIZE)
157 DEF_FUNCTION_TYPE_3 (BT_FN_INT_TRAD_CONST_PTR_TRAD_CONST_PTR_LEN,
158                      BT_INT, BT_TRAD_CONST_PTR, BT_TRAD_CONST_PTR, BT_LEN)
159
160 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR,
161                      BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_PTR)
162
163 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
164 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
165 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
166
167 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR, 
168                          BT_VOID, BT_VALIST_REF)
169 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
170                          BT_INT, BT_CONST_STRING)
171
172 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_PTR_CONST_STRING_VAR,
173                          BT_INT, BT_PTR, BT_CONST_STRING)
174
175 DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
176 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
177                      BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)