source: src/libcfa/prototypes.awk@ 2ee5426

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

add missing files for the building the builtins/extras

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