/* PR middle-end/78138 - missing warnings on buffer overflow with non-constant source length { dg-do compile } { dg-options "-O2 -Wformat-overflow" } */ char d [5]; __extension__ typedef __SIZE_TYPE__ size_t; void* memcpy (void*, const void*, size_t); extern char* strcpy (char*, const char*); void f (int i, int j) { strcpy (d, j ? "12345" : "123456"); /* { dg-warning ".strcpy. writing between 6 and 7 bytes into a region of size 5 " } */ } void g (void *p) { extern unsigned n; if (n < 17 || 32 < n) n = 7; memcpy (d, p, n); /* { dg-warning ".memcpy. writing between 7 and 32 bytes into a region of size 5" } */ };