Commit | Line | Data |
---|---|---|
3cd4b0f8 MW |
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 | */ |