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