(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
ubsan/
bounds-9.c
       1  /* PR sanitizer/65280 */
       2  /* { dg-do run } */
       3  /* { dg-options "-fsanitize=bounds" } */
       4  /* Origin: Martin Uecker <uecker@eecs.berkeley.edu> */
       5  
       6  void
       7  foo (volatile int (*a)[3])
       8  {
       9    (*a)[3] = 1;	// error
      10    a[0][0] = 1;	// ok
      11    a[1][0] = 1;	// ok
      12    a[1][4] = 1;	// error
      13  }
      14  
      15  int
      16  main ()
      17  {
      18    volatile int a[20];
      19    foo ((int (*)[3]) &a);
      20    return 0;
      21  }
      22  
      23  /* { dg-output "index 3 out of bounds for type 'int \\\[3\\\]'\[^\n\r]*(\n|\r\n|\r)" } */
      24  /* { dg-output "\[^\n\r]*index 4 out of bounds for type 'int \\\[3\\\]'" } */