Mercurial > hg > CbC > CbC_gcc
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); |