1/* PR sanitizer/65280 */
2/* { dg-do run } */
3/* { dg-options "-fsanitize=bounds" } */
4/* Origin: Martin Uecker <uecker@eecs.berkeley.edu> */
5
6void
7foo (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
15int
16main ()
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\\\]'" } */
25