(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Wstringop-overflow-81.c
       1  /* Verify that -Wstringop-overflow uses context-sensitive range info
       2     even at -O0.
       3     { dg-do compile }
       4     { dg-options "-O0 -Wall" } */
       5  
       6  extern void* memset (void*, int, __SIZE_TYPE__);
       7  
       8  char a[8];
       9  
      10  void warn_offset_range (int i)
      11  {
      12    if (i < 4)
      13      i = 4;
      14    memset (a + i, 0, 5);       // { dg-warning "writing 5 bytes into a region of size 4 " }
      15  }
      16  
      17  void warn_size_range (int i, int n)
      18  {
      19    if (n < 5)
      20      n = 5;
      21  
      22    memset (a + 4, 1, n);      // { dg-warning "writing between 5 and \\d+ bytes into a region of size 4 " }
      23  }
      24  
      25  void warn_offset_and_size_range (int i, int n)
      26  {
      27    if (n < 5)
      28      n = 5;
      29  
      30    if (i < 4)
      31      {
      32        if (n < 9)
      33  	n = 9;
      34        memset (a + i, 1, n);   // { dg-warning "writing between 9 and \\d+ bytes into a region of size 8 " }
      35      }
      36    else
      37      memset (a + i, 0, n);     // { dg-warning "writing between 5 and \\d+ bytes into a region of size 4 " }
      38  }