1 /* { dg-do compile }
2    { dg-options "-O2 -Wstringop-overflow" } */
3 
4 extern char* strchr (const char*, int);
5 extern char* strcpy (char*, const char*);
6 extern void* malloc (__SIZE_TYPE__);
7 extern __SIZE_TYPE__ strlen (const char *);
8 struct define_item {
9     int len;
10     char value[1];
11 };
12 
foo(char * name)13 struct define_item * foo(char *name)
14 {
15   char * p;
16   char * value;
17   struct define_item * ptr;
18 
19   p = strchr (name, '=');
20   if (1 && p) {
21       value = p+1;
22   } else
23     value = "1";
24 
25   ptr = malloc(sizeof(struct define_item) + strlen(value));
26   strcpy(ptr->value, value);  /* { dg-bogus "bytes into a region" } */
27   return ptr;
28 }
29