annotate gcc/testsuite/c-c++-common/builtins.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* Test to verify that calls to common built-in functions declared
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 with no prototype do not cause an ICE.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 { dg-options "-O2 -Wall -Wextra" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 { dg-prune-output "warning" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 { dg-require-effective-target alloca } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 typedef __SIZE_TYPE__ size_t;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 #if __cplusplus
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 extern "C" {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 #define NO_PROTO ...
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 #else
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 #define NO_PROTO /* empty */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 #endif
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 /* Character classification built-ins from <ctype.h>. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 int isalpha (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 int isalnum (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 int isalpha (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 int iscntrl (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 int isdigit (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 int isgraph (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 int islower (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 int isprint (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 int ispunct (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 int isspace (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 int isupper (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 int isxdigit (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 int tolower (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 int toupper (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 /* Memory allocation built-ins from <stdlib.h>. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 void* alloca (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 void* aligned_alloc (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 void* calloc (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 void* malloc (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 void* realloc (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 /* Raw memory built-ins from <string.h>. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 void* memcpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 void* memchr (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 void* memmove (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 void* mempcpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 void* memset (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 /* String built-ins from <string.h>. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 char* stpcpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 char* stpncpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 char* strcat (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 char* strcpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 char* strdup (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 char* strndup (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 char* strncat (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 char* strncpy (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 size_t strlen (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 size_t strnlen (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 char* strchr (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 int strcmp (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 int strncmp (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 /* Input/output functions from <stdio.h>. */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 int puts (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 int fputs (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 int scanf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 int fscanf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 int sscanf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 int vfscanf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 int vsscanf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 int printf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 int fprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 int sprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 int snprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 int vprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 int vfprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 int vsprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 int vsnprintf (NO_PROTO);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 #if __cplusplus
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 #endif
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 #define CONCAT(a, b) a ## b
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96 #define UNIQ_NAME(func, id) CONCAT (test_ ## func ## _, id)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 #define TEST_FUNC(func, arglist) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 __typeof__ (func arglist) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 UNIQ_NAME (func, __COUNTER__) (void) { \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 return func arglist; \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104 #define T1(func) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 TEST_FUNC (func, ()); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 TEST_FUNC (func, (1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 TEST_FUNC (func, ("")); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108 TEST_FUNC (func, ((void*)1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 TEST_FUNC (func, (iarr)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 TEST_FUNC (func, (function))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 #define T2(func) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 TEST_FUNC (func, (1, 1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 TEST_FUNC (func, (1, "")); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 TEST_FUNC (func, (1, (void*)1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116 TEST_FUNC (func, (1, iarr)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 TEST_FUNC (func, (1, function))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 #define T3(func) \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120 TEST_FUNC (func, (1, 1, 1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 TEST_FUNC (func, (1, 1, "")); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 TEST_FUNC (func, (1, 1, (void*)1)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 TEST_FUNC (func, (1, 1, iarr)); \
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124 TEST_FUNC (func, (1, 1, function))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 extern int iarr[];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 extern void function (void);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 T1 (isalpha);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 T1 (isalnum);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 T1 (isalpha);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 T1 (iscntrl);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 T1 (isdigit);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 T1 (isgraph);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 T1 (islower);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 T1 (isprint);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 T1 (ispunct);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 T1 (isspace);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 T1 (isupper);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 T1 (isxdigit);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 T1 (tolower);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 T1 (toupper);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144 T1 (alloca);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 T2 (aligned_alloc);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 T2 (malloc);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 T2 (calloc);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 T2 (realloc);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 T3 (memcpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 T3 (memmove);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 T3 (mempcpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 T3 (memset);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 T3 (memchr);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 T2 (stpcpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 T3 (stpncpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159 T2 (strcat);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 T2 (strcpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162 T1 (strdup);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 T2 (strndup);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165 T3 (strncat);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 T3 (strncpy);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168 T2 (strchr);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169 T2 (strcmp);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 T3 (strncmp);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172 T1 (strlen);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 T2 (strnlen);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175 T1 (puts);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176 T2 (fputs);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 T1 (scanf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179 T2 (fscanf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180 T2 (sscanf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 T2 (vfscanf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 T2 (vsscanf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184 T2 (printf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185 T3 (fprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186 T3 (sprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 T3 (snprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190 T2 (vprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 T2 (vfprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192 T2 (vsprintf);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 T3 (vsnprintf);