Skip to content

Commit 2ab8a8e

Browse files
committed
Improvements and fixes of builtin-functions converter
1 parent 373d9a8 commit 2ab8a8e

File tree

1 file changed

+40
-34
lines changed

1 file changed

+40
-34
lines changed

src/ansi-c/get-gcc-builtins.sh

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,16 @@ if [ -e gcc-builtins.h ] ; then
77
exit 1
88
fi
99

10-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/builtin-types.def
11-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/builtin-types.def > /dev/null
10+
builtin_defs=" \
11+
builtin-types.def builtins.def sync-builtins.def \
12+
omp-builtins.def gtm-builtins.def cilk-builtins.def cilkplus.def \
13+
sanitizer.def chkp-builtins.def hsa-builtins.def"
1214

13-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/builtins.def
14-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/builtins.def > /dev/null
15-
16-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/sync-builtins.def
17-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/sync-builtins.def > /dev/null
18-
19-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/omp-builtins.def
20-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/omp-builtins.def > /dev/null
21-
22-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/gtm-builtins.def
23-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/gtm-builtins.def > /dev/null
24-
25-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/cilk-builtins.def
26-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/cilk-builtins.def > /dev/null
27-
28-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/cilkplus.def
29-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/cilkplus.def > /dev/null
30-
31-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/sanitizer.def
32-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/sanitizer.def > /dev/null
33-
34-
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/chkp-builtins.def
35-
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/chkp-builtins.def > /dev/null
15+
for f in $builtin_defs ; do
16+
[ ! -s $f ] || continue
17+
echo Downloading http://gcc.gnu.org/svn/gcc/trunk/gcc/$f
18+
svn export http://gcc.gnu.org/svn/gcc/trunk/gcc/$f > /dev/null
19+
done
3620

3721
cat > gcc-builtins.h <<EOF
3822
#include <inttypes.h>
@@ -78,6 +62,7 @@ cat > builtins.h <<EOF
7862
#define uint32_type_node uint32_t
7963
#define uint64_type_node uint64_t
8064
#define pid_type_node pid_t
65+
#define const_tm_ptr_type_node const struct tm*
8166
8267
// some newer versions of GCC apparently support __floatXYZ
8368
#define dfloat32_type_node __float32
@@ -87,6 +72,7 @@ cat > builtins.h <<EOF
8772
#define build_qualified_type(t, q) q t
8873
#define build_pointer_type(t) t*
8974
#define TYPE_QUAL_VOLATILE volatile
75+
#define TYPE_QUAL_CONST const
9076
9177
#define DEF_PRIMITIVE_TYPE(ENUM, TYPE) \
9278
NEXTDEF ENUM TYPE
@@ -106,11 +92,17 @@ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5)
10692
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
10793
#define DEF_FUNCTION_TYPE_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
10894
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
109-
#define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8)
95+
#define DEF_FUNCTION_TYPE_8(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8) \
11096
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8)
97+
#define DEF_FUNCTION_TYPE_9(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9) \
98+
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9)
99+
#define DEF_FUNCTION_TYPE_10(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10) \
100+
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10)
101+
#define DEF_FUNCTION_TYPE_11(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11) \
102+
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11)
111103
112104
#define DEF_FUNCTION_TYPE_VAR_0(ENUM, RETURN) \
113-
NEXTDEF ENUM(name) /* RETURN name(...) -- this is a macro */
105+
NEXTDEF ENUM(name) RETURN name()
114106
#define DEF_FUNCTION_TYPE_VAR_1(ENUM, RETURN, ARG1) \
115107
NEXTDEF ENUM(name) RETURN name(ARG1, ...)
116108
#define DEF_FUNCTION_TYPE_VAR_2(ENUM, RETURN, ARG1, ARG2) \
@@ -121,6 +113,10 @@ NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ...)
121113
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ...)
122114
#define DEF_FUNCTION_TYPE_VAR_5(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5) \
123115
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ...)
116+
#define DEF_FUNCTION_TYPE_VAR_6(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
117+
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ...)
118+
#define DEF_FUNCTION_TYPE_VAR_7(ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
119+
NEXTDEF ENUM(name) RETURN name(ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ...)
124120
125121
#define DEF_POINTER_TYPE(ENUM, TYPE) \
126122
NEXTDEF ENUM TYPE*
@@ -137,15 +133,25 @@ gcc -E builtins.h | sed 's/^NEXTDEF/#define/' | cat - builtins.def | \
137133
sed 's/MANGLE("__builtin_" "\(.*\)")/__builtin_\1/' | \
138134
sed '/^;$/d' >> gcc-builtins.h
139135

140-
rm builtin-types.def builtins.def sync-builtins.def omp-builtins.def gtm-builtins.def cilk-builtins.def cilkplus.def sanitizer.def
141-
rm builtins.h
136+
rm $builtin_defs builtins.h
142137

143138
# for some we don't know how to handle them - removing symbols should be safe
144-
sed -i '/MANGLE/d' gcc-builtins.h
145-
sed -i '/builtin_type_for_size/d' gcc-builtins.h
146-
sed -i '/BT_FN/d' gcc-builtins.h
147-
sed -i '/lang_hooks.types.type_for_mode/d' gcc-builtins.h
148-
sed -i '/__float/d' gcc-builtins.h
139+
remove_line() {
140+
local pattern="$1"
141+
if sed --version >/dev/null 2>&1 ; then
142+
# GNU sed
143+
sed -i "/$pattern/d" gcc-builtins.h
144+
else
145+
sed -i '' "/$pattern/d" gcc-builtins.h
146+
fi
147+
}
148+
149+
remove_line MANGLE
150+
remove_line builtin_type_for_size
151+
remove_line BT_FN
152+
remove_line lang_hooks.types.type_for_mode
153+
remove_line __float
154+
remove_line pointer_bounds_type_node
149155

150156
cat gcc-builtins.h | sed 's/__builtin/XX__builtin/' | \
151157
gcc -c -fno-builtin -x c - -o gcc-builtins.o

0 commit comments

Comments
 (0)