1 /* { dg-do compile } */
2 /* { dg-additional-options "-Wno-stringop-overflow" } */
3 /* The loop below writes past the end of the global object a.
4    When the loop is transformed into a call to memcpy the buffer
5    overflow is detected and diagnosed by the -Wstringop-overflow
6    option enabled by default.  */
7 
8 typedef unsigned size_t;
9 struct {
10     unsigned char buf[sizeof(long)];
11 } a;
12 size_t b;
main()13 int main()
14 {
15   size_t c, i;
16   unsigned char *d;
17   for (; c < sizeof(long);)
18     {
19       d = a.buf;
20       b = 0;
21       for (; b < i; b++)
22 	*d++ = '\0';
23       for (; c < b; c++)
24 	*d++ = 'a';
25       c = 0;
26       for (; i < sizeof(long); i++)
27 	;
28     }
29 }
30