Import upstream sources.
[cparse] / gcc.c
1 #include "cparse.h"
2
3 static void fn(const char *s,
4 struct declaration_specifiers *ds) {
5 struct declarator *decl;
6
7 NEW(decl);
8 decl->name = xstrdup(s);
9 NEW(decl->declarator_type);
10 decl->declarator_type->type = dt_old_function;
11 decl->declaration_specifiers = ds;
12 add_declaration(decl);
13 }
14
15 static void ptrfn(const char *s,
16 struct declaration_specifiers *ds) {
17 struct declarator *decl;
18
19 NEW(decl);
20 decl->name = xstrdup(s);
21 NEW(decl->declarator_type);
22 decl->declarator_type->type = dt_old_function;
23 NEW(decl->declarator_type->next);
24 decl->declarator_type->next->type = dt_pointer;
25 decl->declaration_specifiers = ds;
26 add_declaration(decl);
27 }
28
29
30 void gcc_extensions(void) {
31 struct declaration_specifiers *ds_void, *ds_int;
32
33 NEW(ds_void);
34 ds_void->type_specifiers = TS_VOID;
35 NEW(ds_int);
36 ds_void->type_specifiers = TS_INT;
37
38 fn("__builtin_stdarg_start", ds_void);
39 fn("__builtin_va_start", ds_void);
40 fn("__builtin_va_end", ds_void);
41 fn("__builtin_va_copy", ds_void);
42 ptrfn("__builtin_memcpy", ds_void);
43 ptrfn("__builtin_alloca", ds_void);
44 ptrfn("__builtin_next_arg", ds_void);
45 fn("__builtin_constant_p", ds_int);
46 }
47
48 /*
49 Local Variables:
50 c-basic-offset:2
51 comment-column:40
52 End:
53 */