source: libcfa/prototypes.awk@ b1a6d6b

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors ctor deferred_resn demangler enum forall-pointer-decay gc_noraii jacob/cs343-translation jenkins-sandbox memory new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new string with_gc
Last change on this file since b1a6d6b was bdd516a, checked in by Peter A. Buhr <pabuhr@…>, 10 years ago

fixed sizeof type variable, find lowest cost alternative for sizeof expression, removed unused classes, added compiler flag, remove temporary file for -CFA, formatting

  • Property mode set to 100644
File size: 4.5 KB
Line 
1# http://llvm.org/svn/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def
2
3BEGIN {
4 FS = "("
5 # order so string search is longest string
6 types[0] = "UINTMAX"; vtypes[0] = "unsigned long int"
7 types[1] = "UINT16"; vtypes[1] = "short int"
8 types[2] = "UINT32"; vtypes[2] = "int"
9 types[3] = "UINT64"; vtypes[3] = "long long int"
10 types[4] = "UINT"; vtypes[4] = "unsigned int"
11 types[5] = "INTMAX"; vtypes[5] = "long int"
12 types[6] = "INTPTR"; vtypes[6] = "int *"
13 types[7] = "WINT"; vtypes[7] = "unsigned int"
14 types[8] = "INT"; vtypes[8] = "int"
15 types[9] = "ULONGLONG"; vtypes[9] = "unsigned long long"
16 types[10] = "ULONG"; vtypes[10] = "unsigned long"
17 types[11] = "UNSIGNED"; vtypes[11] = "unsigned"
18 types[12] = "COMPLEX_LONGDOUBLE"; vtypes[12] = "_Complex long double"
19 types[13] = "COMPLEX_DOUBLE"; vtypes[13] = "_Complex double"
20 types[14] = "COMPLEX_FLOAT"; vtypes[14] = "_Complex float"
21 types[15] = "LONGDOUBLEPTR"; vtypes[15] = "long double *"
22 types[16] = "LONGDOUBLE"; vtypes[16] = "long double"
23 types[17] = "LONGLONG"; vtypes[17] = "long long"
24 types[18] = "LONG"; vtypes[18] = "long"
25 types[19] = "DFLOAT32"; vtypes[19] = "_Decimal32"
26 types[20] = "DFLOAT64"; vtypes[20] = "_Decimal64"
27 types[21] = "DFLOAT128"; vtypes[21] = "_Decimal128"
28 types[22] = "DOUBLEPTR"; vtypes[22] = "double *"
29 types[23] = "DOUBLE"; vtypes[23] = "double"
30 types[24] = "FLOATPTR"; vtypes[24] = "float *"
31 types[25] = "FLOAT"; vtypes[25] = "float"
32 types[26] = "CONST_PTR"; vtypes[26] = "const void *"
33 types[27] = "CONST_STRING"; vtypes[27] = "const char *"
34 types[28] = "PTR_FN_VOID_VAR_PTR_SIZE"; vtypes[28] = ""
35 types[29] = "PTR_CONST_STRING"; vtypes[29] = "char *const"
36 types[30] = "PTRMODE_PTR"; vtypes[30] = ""
37 types[31] = "PTRPTR"; vtypes[31] = "void **"
38 types[32] = "PTR"; vtypes[32] = "void *"
39 types[33] = "VOID"; vtypes[33] = "void"
40 types[34] = "STRING"; vtypes[34] = "char *"
41 types[35] = "FILEPTR"; vtypes[35] = "struct _IO_FILE *"
42 types[36] = "SIZE"; vtypes[36] = "unsigned long"
43 types[37] = "VAR"; vtypes[37] = "..."
44 types[38] = "VALIST_ARG"; vtypes[38] = "void **"
45 types[39] = "VALIST_REF"; vtypes[39] = "void **"
46 types[40] = "UNWINDWORD"; vtypes[40] = "void *"
47 types[41] = "WORD"; vtypes[41] = ""
48 types[42] = "SSIZE"; vtypes[42] = "long int"
49 types[43] = "PID"; vtypes[43] = "int"
50 N = 44
51} # BEGIN
52
53/^BT_/ { prototypes[$1] = $1 }
54
55END {
56 printf( "#define DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) TYPE(NAME)\n" );
57 printf( "#define FUNC_SIMPLE(RETURN, NAME, ARGS...) RETURN NAME(ARGS);\n" );
58 printf( "#define BT_LAST(NAME) FUNC_SIMPLE(void, NAME)\n\n" );
59
60 # generate C types for macros names
61 for ( i = 0; i < N; i += 1 ) {
62 printf( "#define BT_%s %s\n", types[i], vtypes[i] )
63 } # for
64 printf( "\n" )
65
66 for ( prototype in prototypes ) {
67 if ( index( "BT_LAST", prototype ) == 1 ) {
68 continue
69 } # if
70
71 printf( "#define %s(NAME) FUNC_SIMPLE(", prototype )
72
73 if ( sub( "BT_FN_", "", prototype ) == 0 ) {
74 printf( "\n********** BAD MACRO NAME \"%s\" **********\n", prototype )
75 exit 0
76 } # if
77
78 # generate function return type as macro
79 for ( t = 0; t < N; t += 1 ) { # find longest match
80 type = types[t];
81 if ( index( prototype, type ) == 1 ) { # found match
82 printf( "BT_%s, NAME", type )
83 sub( type, "", prototype )
84 break;
85 } # if
86 } # for
87
88 # generate function parameter types as macro
89 if ( index( prototype, "VAR" ) != 2 ) { # C-style empty parameters ?
90 for ( p = 0; length( prototype ) > 0; p += 1 ) { # until all parameters types are removed
91 sub( "_", "", prototype) # remove "_"
92 printf( ", ", type )
93 temp = prototype
94 for ( t = 0; t < N; t += 1 ) { # find longest match
95 type = types[t];
96 if ( index( prototype, type ) == 1 ) { # found match
97 printf( "BT_%s", type )
98 sub( type, "", prototype )
99 break;
100 } # if
101 } # for
102 if ( temp == prototype ) { # no match found for parameter in macro table
103 printf( "\n********** MISSING TYPE \"%s\" **********\n", prototype )
104 exit 0
105 } # if
106 } # for
107 } # if
108 printf( ")\n" )
109 } # for
110
111 # extras
112 printf( "\n#include \"builtins.def\"\n\n" );
113 printf( "typedef void ** __builtin_va_list;\n" );
114 printf( "extern const char *__PRETTY_FUNCTION__;\n" );
115 printf( "typedef int wchar_t;\n" );
116} # END
Note: See TracBrowser for help on using the repository browser.