Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/Wreturn-local-addr-6.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* PR c/71924 - missing -Wreturn-local-addr returning alloca result | |
2 { dg-do compile } | |
3 { dg-options "-O2 -Wall" } */ | |
4 | |
5 typedef __SIZE_TYPE__ size_t; | |
6 | |
7 void* memcpy (void*, const void*, size_t); | |
8 void* mempcpy (void*, const void*, size_t); | |
9 void* memmove (void*, const void*, size_t); | |
10 | |
11 char* stpcpy (char*, const char*); | |
12 char* stpncpy (char*, const char*, size_t); | |
13 | |
14 size_t strlen (const char*); | |
15 size_t strnlen (const char*, size_t); | |
16 | |
17 char* strcat (char*, const char*); | |
18 char* strncat (char*, const char*, size_t); | |
19 | |
20 char* strcpy (char*, const char*); | |
21 char* strncpy (char*, const char*, size_t); | |
22 | |
23 char* strdup (const char*); | |
24 | |
25 char* strchr (const char*, int); | |
26 char* strrchr (const char*, int); | |
27 char* strstr (const char*, const char*); | |
28 | |
29 void sink (void*, ...); | |
30 | |
31 | |
32 void* return_memcpy (const void *s, unsigned n) | |
33 { | |
34 char a[n]; /* { dg-message "declared here" } */ | |
35 void *p = memcpy (a, s, n); | |
36 sink (p); | |
37 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
38 } | |
39 | |
40 void* return_memcpy_cst (const void *s, unsigned n) | |
41 { | |
42 char a[n]; /* { dg-message "declared here" } */ | |
43 void *p = memcpy (a + 1, s, n); | |
44 sink (p); | |
45 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
46 } | |
47 | |
48 void* return_memcpy_var (const void *s, unsigned n, int i) | |
49 { | |
50 char a[n]; /* { dg-message "declared here" } */ | |
51 void *p = memcpy (a + i, s, n); | |
52 sink (p); | |
53 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
54 } | |
55 | |
56 void* return_mempcpy (const void *s, unsigned n) | |
57 { | |
58 char a[n]; /* { dg-message "declared here" } */ | |
59 void *p = mempcpy (a, s, n); | |
60 sink (p); | |
61 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
62 } | |
63 | |
64 void* return_memmove_cst (unsigned n) | |
65 { | |
66 char a[n]; /* { dg-message "declared here" } */ | |
67 sink (a); | |
68 void *p = memmove (a + 1, a, n); | |
69 sink (p); | |
70 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
71 } | |
72 | |
73 void* return_memmove_var (unsigned n, int i) | |
74 { | |
75 char a[n]; /* { dg-message "declared here" } */ | |
76 sink (a); | |
77 void *p = memmove (a + i, a, n); | |
78 sink (p); | |
79 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
80 } | |
81 | |
82 char* return_stpcpy (unsigned n, const char *s) | |
83 { | |
84 char a[n]; /* { dg-message "declared here" } */ | |
85 char *p = stpcpy (a, s); | |
86 sink (p); | |
87 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
88 } | |
89 | |
90 char* return_stpncpy (unsigned n, const char *s) | |
91 { | |
92 char a[n]; /* { dg-message "declared here" } */ | |
93 char *p = stpncpy (a, s, n); | |
94 sink (p); | |
95 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
96 } | |
97 | |
98 char* return_strcat (unsigned n, const char *s) | |
99 { | |
100 char a[n]; /* { dg-message "declared here" } */ | |
101 sink (a); | |
102 char *p = strcat (a, s); | |
103 sink (p); | |
104 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
105 } | |
106 | |
107 char* return_strncat (unsigned n, const char *s) | |
108 { | |
109 char a[n]; /* { dg-message "declared here" } */ | |
110 sink (a); | |
111 char *p = strncat (a, s, n); | |
112 sink (p); | |
113 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
114 | |
115 } | |
116 char* return_strcpy (unsigned n, const char *s) | |
117 { | |
118 char a[n]; /* { dg-message "declared here" } */ | |
119 char *p = strcpy (a, s); | |
120 sink (p); | |
121 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
122 } | |
123 | |
124 char* return_strcpy_plus_strlen (unsigned n, const char *s) | |
125 { | |
126 char a[n]; /* { dg-message "declared here" } */ | |
127 char *p = strcpy (a, s); | |
128 sink (p); | |
129 p += strlen (p); | |
130 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
131 } | |
132 | |
133 char* return_strcpy_cst_plus_strlen (unsigned n, const char *s) | |
134 { | |
135 char a[n]; /* { dg-message "declared here" } */ | |
136 sink (a); | |
137 char *p = strcpy (a + 1, s); | |
138 sink (p); | |
139 p += strlen (p); | |
140 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
141 } | |
142 | |
143 char* return_strcpy_var_plus_strlen (unsigned n, const char *s, int i) | |
144 { | |
145 char a[n]; /* { dg-message "declared here" } */ | |
146 sink (a); | |
147 char *p = strcpy (a + i, s); | |
148 sink (p); | |
149 p += strlen (p); | |
150 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
151 } | |
152 | |
153 char* return_strncpy (unsigned n, const char *s) | |
154 { | |
155 char a[n]; /* { dg-message "declared here" } */ | |
156 char *p = strncpy (a, s, n); | |
157 sink (p); | |
158 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
159 } | |
160 | |
161 char* return_strncpy_plus_strnlen (unsigned n, const char *s) | |
162 { | |
163 char a[n]; /* { dg-message "declared here" } */ | |
164 char *p = strncpy (a, s, n); | |
165 p += strnlen (p, n); | |
166 sink (p); | |
167 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
168 } | |
169 | |
170 char* return_strdup (unsigned n) | |
171 { | |
172 char a[n]; | |
173 sink (a); | |
174 char *p = strdup (a); | |
175 return p; | |
176 } | |
177 | |
178 char* return_strchr (unsigned n, int c) | |
179 { | |
180 char a[n]; /* { dg-message "declared here" } */ | |
181 sink (a); | |
182 char *p = strchr (a, c); | |
183 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
184 } | |
185 | |
186 char* return_strstr (unsigned n, const char *s) | |
187 { | |
188 char a[n]; /* { dg-message "declared here" } */ | |
189 sink (a); | |
190 char *p = strstr (a, s); | |
191 if (p) | |
192 p += strlen (p); | |
193 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
194 } | |
195 | |
196 char* return_strrchr (unsigned n, int c) | |
197 { | |
198 char a[n]; /* { dg-message "declared here" } */ | |
199 sink (a); | |
200 char *p = strrchr (a, c); | |
201 return p; /* { dg-warning "\\\[-Wreturn-local-addr]" } */ | |
202 | |
203 } |