/* PR tree-optimization/83519 - missing -Wrestrict on an overlapping strcpy to a non-member array { dg-do compile } { dg-options "-O2 -Wall -Wrestrict" } */ extern char* stpcpy (char*, const char*); // work around bug 82429 struct S { char a[17]; }; void f (struct S *p, const char *s) { __builtin_strcpy (p->a, "0123456789abcdef"); __builtin_strcpy (p->a, p->a + 4); /* { dg-warning "\\\[-Wrestrict]" } */ } char a[17]; void g (const char *s) { __builtin_strcpy (a, "0123456789abcdef"); __builtin_strcpy (a, a + 4); /* { dg-warning "\\\[-Wrestrict]" } */ } void h (const char *s) { char a[17]; __builtin_strcpy (a, "0123456789abcdef"); __builtin_strcpy (a, a + 4); /* { dg-warning "\\\[-Wrestrict]" } */ extern void sink (void*); sink (a); }