diff gcc/testsuite/gcc.dg/Wrestrict-13.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/Wrestrict-13.c	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,36 @@
+/* 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);
+}