1010builtin_defs=" \
1111 builtin-types.def builtins.def sync-builtins.def \
1212 omp-builtins.def gtm-builtins.def cilk-builtins.def cilkplus.def \
13- sanitizer.def chkp-builtins.def hsa-builtins.def brig-builtins.def"
13+ sanitizer.def chkp-builtins.def hsa-builtins.def brig-builtins.def \
14+ config/i386/i386-builtin.def config/i386/i386-builtin-types.def"
1415
1516for f in $builtin_defs ; do
16- [ ! -s $f ] || continue
17+ [ ! -s ` basename $f ` ] || continue
1718 echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/$f
1819 svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/$f > /dev/null
1920done
@@ -25,6 +26,31 @@ cat > gcc-builtins.h <<EOF
2526#include <stdio.h>
2627#include <wctype.h>
2728
29+ typedef char __gcc_v8qi __attribute__ ((__vector_size__ (8)));
30+ typedef char __gcc_v16qi __attribute__ ((__vector_size__ (16)));
31+ typedef char __gcc_v32qi __attribute__ ((__vector_size__ (32)));
32+ typedef char __gcc_v64qi __attribute__ ((__vector_size__ (64)));
33+ typedef int __gcc_v2si __attribute__ ((__vector_size__ (8)));
34+ typedef int __gcc_v4si __attribute__ ((__vector_size__ (16)));
35+ typedef int __gcc_v8si __attribute__ ((__vector_size__ (32)));
36+ typedef int __gcc_v16si __attribute__ ((__vector_size__ (64)));
37+ typedef short __gcc_v4hi __attribute__ ((__vector_size__ (8)));
38+ typedef short __gcc_v8hi __attribute__ ((__vector_size__ (16)));
39+ typedef short __gcc_v16hi __attribute__ ((__vector_size__ (32)));
40+ typedef short __gcc_v32hi __attribute__ ((__vector_size__ (64)));
41+ typedef float __gcc_v2sf __attribute__ ((__vector_size__ (8)));
42+ typedef float __gcc_v4sf __attribute__ ((__vector_size__ (16)));
43+ typedef float __gcc_v8sf __attribute__ ((__vector_size__ (32)));
44+ typedef float __gcc_v16sf __attribute__ ((__vector_size__ (64)));
45+ typedef double __gcc_v2df __attribute__ ((__vector_size__ (16)));
46+ typedef double __gcc_v4df __attribute__ ((__vector_size__ (32)));
47+ typedef double __gcc_v8df __attribute__ ((__vector_size__ (64)));
48+ typedef long long __gcc_v1di __attribute__ ((__vector_size__ (8)));
49+ typedef long long __gcc_v2di __attribute__ ((__vector_size__ (16)));
50+ typedef long long __gcc_v4di __attribute__ ((__vector_size__ (32)));
51+ typedef long long __gcc_v8di __attribute__ ((__vector_size__ (64)));
52+ typedef unsigned long long __gcc_di;
53+
2854EOF
2955
3056cat > builtins.h << EOF
@@ -63,6 +89,15 @@ cat > builtins.h <<EOF
6389#define uint64_type_node uint64_t
6490#define pid_type_node pid_t
6591#define const_tm_ptr_type_node const struct tm*
92+ #define char_type_node char
93+ #define intSI_type_node int
94+ #define intHI_type_node short
95+ #define unsigned_intSI_type_node unsigned
96+ #define unsigned_intHI_type_node unsigned short
97+ #define unsigned_intQI_type_node unsigned char
98+ #define short_unsigned_type_node unsigned short
99+ #define short_integer_type_node short
100+ #define unsigned_char_type_node unsigned char
66101
67102// some newer versions of GCC apparently support __floatXYZ
68103#define dfloat32_type_node __float32
@@ -121,19 +156,53 @@ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ...)
121156#define DEF_POINTER_TYPE(ENUM, TYPE) \
122157NEXTDEF ENUM TYPE*
123158
159+ #define DEF_POINTER_TYPE_CONST(ENUM, TYPE, C) \
160+ NEXTDEF ENUM const TYPE*
161+
124162#include "builtin-types.def"
125163
126164NEXTDEF DEF_BUILTIN(ENUM, NAME, CLASS, TYPE, LIBTYPE, BOTH_P, \
127165 FALLBACK_P, NONANSI_P, ATTRS, IMPLICIT, COND) \
128166TYPE(MANGLE(NAME));
167+
168+ #include "i386-builtin-types-expanded.def"
169+
170+ NEXTDEF BDESC(mask, icode, name, code, comparison, flag) \
171+ flag(MANGLEi386(name));
172+ NEXTDEF BDESC_FIRST(kind, KIND, mask, icode, name, code, comparison, flag) \
173+ flag(MANGLEi386(name));
129174EOF
130175
131- gcc -E builtins.h | sed ' s/^NEXTDEF/#define/' | cat - builtins.def | \
176+ grep ' ^DEF_VECTOR_TYPE' i386-builtin-types.def | \
177+ awk -F ' [,() \t]' ' { print "#define " $3 " __gcc_" tolower($3) }' \
178+ > i386-builtin-types-expanded.def
179+
180+ grep -v ' ^DEF_FUNCTION_TYPE[[:space:]]' i386-builtin-types.def | \
181+ grep ' ^DEF_P' | \
182+ sed ' /^DEF_POINTER_TYPE[^,]*, [^,]*, [^,]*$/ s/_TYPE/_TYPE_CONST/' \
183+ >> i386-builtin-types-expanded.def
184+
185+ cat i386-builtin-types.def | \
186+ sed ' /^DEF_FUNCTION_TYPE[[:space:]]/! s/.*//' | \
187+ sed ' s/^DEF_FUNCTION_TYPE[[:space:]]*(\([^,]*\))/\1_FTYPE_VOID/' | \
188+ sed ' s/^DEF_FUNCTION_TYPE[[:space:]]*(\([^,]*\), \(.*\))/\1_FTYPE_\2/' | \
189+ sed ' s/, /_/g' > i386-type-names.def
190+ cat i386-builtin-types.def | tr -c -d ' ,\n' | awk ' { print length }' | \
191+ paste - i386-type-names.def i386-builtin-types.def | grep -v ' #' | \
192+ sed ' s/^\([0-9]\)[[:space:]]*\([^[:space:]]*\)[[:space:]]*DEF_FUNCTION_TYPE[[:space:]]*(/DEF_FUNCTION_TYPE_\1(\2, /' | \
193+ grep ^DEF_FUNCTION_TYPE >> i386-builtin-types-expanded.def
194+
195+ gcc -E builtins.h | sed ' s/^NEXTDEF/#define/' | \
196+ cat - builtins.def i386-builtin.def | \
132197 gcc -E -P - | \
133198 sed ' s/MANGLE("__builtin_" "\(.*\)")/__builtin_\1/' | \
199+ sed ' s/MANGLEi386("__builtin_\(.*\)")/__builtin_\1/' | \
200+ sed ' s/^(int) //' | \
134201 sed ' /^;$/d' >> gcc-builtins.h
135202
136- rm $builtin_defs builtins.h
203+ for f in $builtin_defs builtins.h i386-builtin-types-expanded.def i386-type-names.def ; do
204+ rm ` basename $f `
205+ done
137206
138207sed_is_gnu_sed=0
139208if sed --version > /dev/null 2>&1 ; then
@@ -158,6 +227,12 @@ remove_line lang_hooks.types.type_for_mode
158227remove_line __float
159228remove_line pointer_bounds_type_node
160229remove_line BT_LAST
230+ remove_line BDESC_END
231+ remove_line error_mark_node
232+ remove_line ' ^0('
233+ remove_line ' CC.mode('
234+ remove_line FTYPE
235+ remove_line MULTI_ARG
161236
162237ifs=$IFS
163238IFS='
@@ -176,6 +251,19 @@ while read line ; do
176251 continue
177252 fi
178253
254+ bi=` echo " $line " | cut -f1 -d' (' | sed ' s/.* //' `
255+
256+ if [[ $bi =~ __builtin_ia32 ]] ; then
257+ if grep -wq $bi gcc_builtin_headers_ia32* .h ; then
258+ if [ $sed_is_gnu_sed -eq 1 ] ; then
259+ sed -i " /[^/].*$bi (/ s/.*/$line /" gcc_builtin_headers_ia32* .h
260+ else
261+ sed -i ' ' " /[^/].*$bi (/ s/.*/$line /" gcc_builtin_headers_ia32* .h
262+ fi
263+ continue
264+ fi
265+ fi
266+
179267 echo " $line " >> _gcc-builtins.h
180268done < gcc-builtins.h
181269mv _gcc-builtins.h gcc-builtins.h
0 commit comments