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 }