(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Wstringop-overflow-73.c
       1  /*
       2    { dg-do compile }
       3    { dg-options "-Wall" } */
       4  
       5  typedef __SIZE_TYPE__ size_t;
       6  
       7  int memcmp (const void*, const void*, size_t);
       8  int strncmp (const char*, const char*, size_t);
       9  char* stpncpy (char*, const char*, size_t);
      10  char* strncpy (char*, const char*, size_t);
      11  
      12  extern char a4[4], b5[5];
      13  
      14  struct A { char a4[4]; };
      15  
      16  extern volatile int i;
      17  extern void* volatile ptr;
      18  
      19  void test_stpncpy (struct A *p)
      20  {
      21    ptr = stpncpy (a4, b5, 4);
      22    ptr = stpncpy (a4, b5, 5);      // { dg-warning "writing 5 bytes" }
      23  
      24    ptr = stpncpy (p->a4, b5, 4);
      25    ptr = stpncpy (p->a4, b5, 5);   // { dg-warning "writing 5 bytes" }
      26  }
      27  
      28  void test_strncpy (struct A *p)
      29  {
      30    ptr = strncpy (a4, b5, 4);
      31    ptr = strncpy (a4, b5, 5);      // { dg-warning "writing 5 bytes" }
      32  
      33    ptr = strncpy (p->a4, b5, 4);
      34    ptr = strncpy (p->a4, b5, 5);   // { dg-warning "writing 5 bytes" }
      35  }