/* PR middle-end/79538 - missing -Wformat-overflow with %s and non-member array arguments { dg-do compile } { dg-options "-O2 -Wformat-overflow" } */ char a3[3]; char a4[4]; char d[3]; void g (int i) { const char *s = i < 0 ? a3 : a4; __builtin_sprintf (d, "%s", s); /* { dg-warning ".__builtin_sprintf. may write a terminating nul past the end of the destination" } */ return; } void f () { char des[3]; char src[] = "abcd"; __builtin_sprintf (des, "%s", src); /* { dg-warning "directive writing 4 bytes into a region of size 3" } */ return; }