1172677Smlaier/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
2172677Smlaier   Free Software Foundation, Inc.
3172677Smlaier
4235426SdelphijThis file is part of GCC.
5172677Smlaier
6172677SmlaierGCC is free software; you can redistribute it and/or modify it under
7172677Smlaierthe terms of the GNU General Public License as published by the Free
8172677SmlaierSoftware Foundation; either version 2, or (at your option) any later
9235426Sdelphijversion.
10172677Smlaier
11172677SmlaierGCC is distributed in the hope that it will be useful, but WITHOUT ANY
12172677SmlaierWARRANTY; without even the implied warranty of MERCHANTABILITY or
13172677SmlaierFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14235426Sdelphijfor more details.
15235426Sdelphij
16172677SmlaierYou should have received a copy of the GNU General Public License
17235426Sdelphijalong with GCC; see the file COPYING.  If not, write to the Free
18235426SdelphijSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
19235426Sdelphij02110-1301, USA.  */
20235426Sdelphij
21235426Sdelphij/* This header provides a declarative way of describing the types that
22235426Sdelphij   are used when declaring builtin functions.
23235426Sdelphij
24172677Smlaier   Before including this header, you must define the following macros:
25235426Sdelphij
26235426Sdelphij   DEF_PRIMITIVE_TYPE (ENUM, TYPE)
27235426Sdelphij
28235426Sdelphij     The ENUM is an identifier indicating which type is being defined.
29235426Sdelphij     TYPE is an expression for a `tree' that represents the type.
30235426Sdelphij
31235426Sdelphij   DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
32235426Sdelphij   DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
33235426Sdelphij   DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
34235426Sdelphij   DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
35235426Sdelphij   DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
36235426Sdelphij   DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
37235426Sdelphij   DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
38235426Sdelphij   DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
39235426Sdelphij
40235426Sdelphij     These macros describe function types.  ENUM is as above.  The
41235426Sdelphij     RETURN type is one of the enumerals already defined.  ARG1, ARG2,
42235426Sdelphij     and ARG3 give the types of the arguments, similarly.
43235426Sdelphij
44172677Smlaier   DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
45235426Sdelphij   DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
46172677Smlaier   DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
47172677Smlaier   DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
48235426Sdelphij   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
49235426Sdelphij   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
50235426Sdelphij
51172677Smlaier     Similar, but for function types that take variable arguments.
52172677Smlaier     For example:
53172677Smlaier
54172677Smlaier       DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
55235426Sdelphij
56235426Sdelphij     describes the type `int ()(double)', using the enumeral
57172677Smlaier     BT_INT_DOUBLE, whereas:
58172677Smlaier
59172677Smlaier       DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
60172677Smlaier
61172677Smlaier     describes the type `int ()(double, ...)'.
62235426Sdelphij
63235426Sdelphij  DEF_POINTER_TYPE (ENUM, TYPE)
64235426Sdelphij
65235426Sdelphij    This macro describes a pointer type.  ENUM is as above; TYPE is
66235426Sdelphij    the type pointed to.  */
67235426Sdelphij
68235426SdelphijDEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
69241231SdelphijDEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
70235426SdelphijDEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
71241231SdelphijDEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
72241231SdelphijDEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
73235426SdelphijDEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
74235426SdelphijDEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
75235426SdelphijDEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
76235426SdelphijDEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
77235426SdelphijDEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
78DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
79DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
80DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
81DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
82DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
83DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
84DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
85
86DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
87DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
88DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
89DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
90		    build_pointer_type
91		     (build_qualified_type (void_type_node,
92					    TYPE_QUAL_VOLATILE)))
93DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
94DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
95DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
96DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
97DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
98DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
99DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
100DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
101DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
102DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
103DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
104
105DEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
106DEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
107DEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
108DEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
109DEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
110DEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
111
112DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
113DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
114
115DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
116DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
117DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
118DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
119DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
120
121DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
122DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
123DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
124
125DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
126DEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL)
127DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
128DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
129DEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT)
130DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
131DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
132DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
133/* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
134   distinguish it from two types in sequence, "long" followed by
135   "double".  */
136DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
137DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
138DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
139DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
140
141DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
142DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
143DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
144DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
145DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
146DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
147		     BT_LONGDOUBLE, BT_LONGDOUBLE)
148DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
149		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
150DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
151		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
152DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
153		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
154DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
155		     BT_FLOAT, BT_COMPLEX_FLOAT)
156DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
157		     BT_DOUBLE, BT_COMPLEX_DOUBLE)
158DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
159		     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
160DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
161DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
162DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
163DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
164DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
165DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
166DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
167DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
168DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
169DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
170DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
171DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
172DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
173DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
174DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
175DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
176DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
177DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
178DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
179DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
180DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
181DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
182DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
183DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
184DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
185DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
186DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
187DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
188DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
189DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
190DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
191DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
192		     BT_LONGDOUBLE, BT_CONST_STRING)
193DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
194DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
195DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
196		     BT_DFLOAT128, BT_CONST_STRING)
197DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
198DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
199DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
200DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
201DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
202DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
203DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
204DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
205DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
206DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
207
208DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR)
209
210DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
211DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
212		     BT_STRING, BT_STRING, BT_CONST_STRING)
213DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
214		     BT_INT, BT_CONST_STRING, BT_CONST_STRING)
215DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
216		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
217DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
218		     BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
219DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
220		     BT_STRING, BT_CONST_STRING, BT_INT)
221DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
222		     BT_STRING, BT_CONST_STRING, BT_SIZE)
223DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
224		     BT_INT, BT_CONST_STRING, BT_FILEPTR)
225DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
226		     BT_INT, BT_INT, BT_FILEPTR)
227DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
228		     BT_VOID, BT_PTRMODE, BT_PTR)
229DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
230		     BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
231DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
232		     BT_LONG, BT_LONG, BT_LONG)
233DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
234		     BT_INT, BT_PTR, BT_CONST_STRING)
235DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
236		     BT_VOID, BT_PTR, BT_SIZE)
237DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
238		     BT_FLOAT, BT_FLOAT, BT_FLOAT)
239DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
240		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
241DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
242		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
243DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
244		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
245DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
246		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
247DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
248		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
249DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
250		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
251DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
252		     BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
253DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
254		     BT_FLOAT, BT_FLOAT, BT_INT)
255DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
256		     BT_DOUBLE, BT_DOUBLE, BT_INT)
257DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
258		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
259DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
260		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
261DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
262		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
263DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
264		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
265DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
266		     BT_FLOAT, BT_INT, BT_FLOAT)
267DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
268		     BT_DOUBLE, BT_INT, BT_DOUBLE)
269DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
270		     BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
271DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
272		     BT_FLOAT, BT_FLOAT, BT_LONG)
273DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
274		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
275DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
276		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
277DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
278		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
279DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
280		     BT_PTR, BT_SIZE, BT_SIZE)
281DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
282		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
283DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
284		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
285DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
286		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
287DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
288DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
289		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
290DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
291DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
292DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
293DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
294DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
295DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
296DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
297		     BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
298
299DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
300		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
301DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
302		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
303DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
304		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
305DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
306		     BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
307DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
308		     BT_PTR, BT_PTR, BT_INT, BT_SIZE)
309DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
310		     BT_VOID, BT_PTR, BT_INT, BT_INT)
311DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
312		     BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
313DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
314		     BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
315DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
316		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
317DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
318		     BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
319DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
320		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
321DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
322		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
323DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
324		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
325DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
326		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
327DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
328		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
329DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
330		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
331DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
332		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
333DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
334		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
335DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
336		     BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
337DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
338		     BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
339DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
340DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
341		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
342DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
343		     BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
344DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
345		     BT_I1, BT_I1)
346DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
347		     BT_I2, BT_I2)
348DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
349		     BT_I4, BT_I4)
350DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
351		     BT_I8, BT_I8)
352DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
353		     BT_I16, BT_I16)
354DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
355DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
356DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
357DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
358DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
359		     BT_I16, BT_I16)
360DEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR,
361		     BT_PTR, BT_UINT)
362
363DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
364		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
365DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
366		BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
367DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
368		BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
369DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
370		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
371DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
372		     BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
373DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
374		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
375DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
376		     BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
377DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
378		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
379
380DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
381		     BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
382		     BT_VALIST_ARG)
383DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
384		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
385		     BT_PTR_LONG, BT_PTR_LONG)
386
387DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
388		     BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
389		     BT_CONST_STRING, BT_VALIST_ARG)
390DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
391		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
392		     BT_PTR_LONG, BT_PTR_LONG)
393DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
394		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
395		     BT_LONG, BT_LONG, BT_LONG)
396
397DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
398		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
399		     BT_LONG, BT_LONG, BT_LONG, BT_LONG)
400
401DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
402DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
403DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
404
405DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
406			 BT_VOID, BT_VALIST_REF)
407DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
408			 BT_VOID, BT_CONST_PTR)
409DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
410			 BT_INT, BT_CONST_STRING)
411
412DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
413			 BT_INT, BT_FILEPTR, BT_CONST_STRING)
414DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
415			 BT_INT, BT_STRING, BT_CONST_STRING)
416DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
417			 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
418DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
419			 BT_INT, BT_INT, BT_CONST_STRING)
420
421DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
422			 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
423DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
424			 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
425DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
426			 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
427
428DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
429			 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
430
431DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
432			 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
433			 BT_CONST_STRING)
434
435DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
436DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
437		     BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)
438
439