Import upstream sources.
[cparse] / gcc.c
CommitLineData
3cd4b0f8
MW
1#include "cparse.h"
2
3static 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
15static 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
30void 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/*
49Local Variables:
50c-basic-offset:2
51comment-column:40
52End:
53*/