chiark / gitweb /
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 */