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