view gcc/testsuite/gcc.dg/Wrestrict-13.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
line wrap: on
line source

/* 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);
}