1/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
2   Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14for more details.
15
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3.  If not see
18<http://www.gnu.org/licenses/>.  */
19
20/* This header provides a declarative 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   DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
36   DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
37   DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
38
39     These macros describe function types.  ENUM is as above.  The
40     RETURN type is one of the enumerals already defined.  ARG1, ARG2,
41     etc, give the types of the arguments, similarly.
42
43   DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
44   DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
45   DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
46   DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
47   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
48   DEF_FUNCTION_TYPE_VAR_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
49
50     Similar, but for function types that take variable arguments.
51     For example:
52
53       DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
54
55     describes the type `int ()(double)', using the enumeral
56     BT_INT_DOUBLE, whereas:
57
58       DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
59
60     describes the type `int ()(double, ...)'.
61
62  DEF_POINTER_TYPE (ENUM, TYPE)
63
64    This macro describes a pointer type.  ENUM is as above; TYPE is
65    the type pointed to.  */
66
67DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
68DEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
69DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
70DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
71DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
72DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
73DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
74DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
75DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
76DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
77DEF_PRIMITIVE_TYPE (BT_UINT32, uint32_type_node)
78DEF_PRIMITIVE_TYPE (BT_UINT64, uint64_type_node)
79DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 1))
80DEF_PRIMITIVE_TYPE (BT_UNWINDWORD, (*lang_hooks.types.type_for_mode)
81				    (targetm.unwind_word_mode (), 1))
82DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
83DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
84DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
85DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
86DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
87DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
88
89DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
90DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
91DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
92DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
93		    build_pointer_type
94		     (build_qualified_type (void_type_node,
95					    TYPE_QUAL_VOLATILE)))
96DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
97DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
98DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
99DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
100DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
101DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
102DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
103DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
104DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
105DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
106DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
107
108DEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
109DEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
110DEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
111DEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
112DEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
113DEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
114
115DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
116DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
117
118DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
119DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
120DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
121DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
122DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
123
124DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
125DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
126DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG)
127DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
128
129DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
130DEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL)
131DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
132DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
133DEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT)
134DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
135DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
136DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
137/* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
138   distinguish it from two types in sequence, "long" followed by
139   "double".  */
140DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
141DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
142DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
143DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
144
145DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
146DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
147DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
148DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
149DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
150DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
151		     BT_LONGDOUBLE, BT_LONGDOUBLE)
152DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
153		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
154DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
155		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
156DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
157		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
158DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
159		     BT_FLOAT, BT_COMPLEX_FLOAT)
160DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
161		     BT_DOUBLE, BT_COMPLEX_DOUBLE)
162DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
163		     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
164DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_FLOAT,
165		     BT_COMPLEX_FLOAT, BT_FLOAT)
166DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_DOUBLE,
167		     BT_COMPLEX_DOUBLE, BT_DOUBLE)
168DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE,
169		     BT_COMPLEX_LONGDOUBLE, BT_LONGDOUBLE)
170DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
171DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
172DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
173DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
174DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
175DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
176DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
177DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
178DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
179DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
180DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
181DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
182DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
183DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
184DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
185DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
186DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
187DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
188DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
189DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
190DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
191DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
192DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
193DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
194DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
195DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
196DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
197DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
198DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
199DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
200DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
201DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
202		     BT_LONGDOUBLE, BT_CONST_STRING)
203DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
204DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
205DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
206		     BT_DFLOAT128, BT_CONST_STRING)
207DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
208DEF_FUNCTION_TYPE_1 (BT_FN_UNWINDWORD_PTR, BT_UNWINDWORD, BT_PTR)
209DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
210DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
211DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
212DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
213DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
214DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
215DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
216DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
217DEF_FUNCTION_TYPE_1 (BT_FN_ULONG_ULONG, BT_ULONG, BT_ULONG)
218DEF_FUNCTION_TYPE_1 (BT_FN_ULONGLONG_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG)
219DEF_FUNCTION_TYPE_1 (BT_FN_UINT32_UINT32, BT_UINT32, BT_UINT32)
220DEF_FUNCTION_TYPE_1 (BT_FN_UINT64_UINT64, BT_UINT64, BT_UINT64)
221
222DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR)
223
224DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
225DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
226		     BT_STRING, BT_STRING, BT_CONST_STRING)
227DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
228		     BT_INT, BT_CONST_STRING, BT_CONST_STRING)
229DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
230		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
231DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
232		     BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
233DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
234		     BT_STRING, BT_CONST_STRING, BT_INT)
235DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
236		     BT_STRING, BT_CONST_STRING, BT_SIZE)
237DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
238		     BT_INT, BT_CONST_STRING, BT_FILEPTR)
239DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
240		     BT_INT, BT_INT, BT_FILEPTR)
241DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
242		     BT_VOID, BT_PTRMODE, BT_PTR)
243DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
244		     BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
245DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
246		     BT_LONG, BT_LONG, BT_LONG)
247DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
248		     BT_INT, BT_PTR, BT_CONST_STRING)
249DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
250		     BT_VOID, BT_PTR, BT_SIZE)
251DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
252		     BT_FLOAT, BT_FLOAT, BT_FLOAT)
253DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
254		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
255DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
256		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
257DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
258		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
259DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
260		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
261DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
262		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
263DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
264		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
265DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
266		     BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
267DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
268		     BT_FLOAT, BT_FLOAT, BT_INT)
269DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
270		     BT_DOUBLE, BT_DOUBLE, BT_INT)
271DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
272		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
273DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
274		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
275DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
276		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
277DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
278		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
279DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
280		     BT_FLOAT, BT_INT, BT_FLOAT)
281DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
282		     BT_DOUBLE, BT_INT, BT_DOUBLE)
283DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
284		     BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
285DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
286		     BT_FLOAT, BT_FLOAT, BT_LONG)
287DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
288		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
289DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
290		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
291DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
292		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
293DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
294		     BT_PTR, BT_SIZE, BT_SIZE)
295DEF_FUNCTION_TYPE_2 (BT_FN_PTR_PTR_SIZE,
296		     BT_PTR, BT_PTR, BT_SIZE)
297DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
298		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
299DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
300		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
301DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
302		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
303DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
304DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
305		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
306DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
307DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
308DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
309DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
310DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
311DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
312DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
313		     BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
314DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
315		     BT_BOOL, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
316
317DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
318
319DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
320		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
321DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
322		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
323DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
324		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
325DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
326		     BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
327DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
328		     BT_PTR, BT_PTR, BT_INT, BT_SIZE)
329DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
330		     BT_VOID, BT_PTR, BT_INT, BT_INT)
331DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
332		     BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
333DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
334		     BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
335DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
336		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
337DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
338		     BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
339DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
340		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
341DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
342		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
343DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
344		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
345DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
346		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
347DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
348		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
349DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
350		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
351DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
352		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
353DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
354		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
355DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
356		     BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
357DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
358		     BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
359DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
360DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
361		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
362DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
363		     BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
364DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
365		     BT_I1, BT_I1)
366DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
367		     BT_I2, BT_I2)
368DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
369		     BT_I4, BT_I4)
370DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
371		     BT_I8, BT_I8)
372DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
373		     BT_I16, BT_I16)
374DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
375DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
376DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
377DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
378DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
379		     BT_I16, BT_I16)
380DEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR,
381		     BT_PTR, BT_UINT)
382DEF_FUNCTION_TYPE_3 (BT_FN_PTR_CONST_PTR_INT_SIZE, BT_PTR,
383		     BT_CONST_PTR, BT_INT, BT_SIZE)
384
385DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
386		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
387DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
388		BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
389DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
390		BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
391DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
392		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
393DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
394		     BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
395DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
396		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
397DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
398		     BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
399DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
400		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
401DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
402		     BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
403
404DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
405		     BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
406		     BT_VALIST_ARG)
407DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
408		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
409		     BT_PTR_LONG, BT_PTR_LONG)
410
411DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
412		     BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
413		     BT_CONST_STRING, BT_VALIST_ARG)
414DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
415		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
416		     BT_PTR_LONG, BT_PTR_LONG)
417DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
418		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
419		     BT_LONG, BT_LONG, BT_LONG)
420DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
421		     BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
422		     BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
423
424DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
425		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
426		     BT_LONG, BT_LONG, BT_LONG, BT_LONG)
427DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT,
428		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR,
429		     BT_PTR_FN_VOID_PTR_PTR, BT_LONG, BT_LONG,
430		     BT_BOOL, BT_UINT)
431DEF_FUNCTION_TYPE_7 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
432		     BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
433		     BT_ULONGLONG, BT_ULONGLONG,
434		     BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
435
436DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
437DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
438DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
439
440DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
441			 BT_VOID, BT_VALIST_REF)
442DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
443			 BT_VOID, BT_CONST_PTR)
444DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
445			 BT_INT, BT_CONST_STRING)
446
447DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
448			 BT_INT, BT_FILEPTR, BT_CONST_STRING)
449DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
450			 BT_INT, BT_STRING, BT_CONST_STRING)
451DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
452			 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
453DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
454			 BT_INT, BT_INT, BT_CONST_STRING)
455
456DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
457			 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
458DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
459			 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
460DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
461			 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
462
463DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
464			 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
465
466DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
467			 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
468			 BT_CONST_STRING)
469
470DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_INT_INT_INT_INT_INT_VAR,
471			 BT_INT, BT_INT, BT_INT, BT_INT, BT_INT, BT_INT)
472
473DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
474DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
475		     BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)
476