| /* PR sanitizer/81604 */ |
| /* { dg-do run } */ |
| /* { dg-options "-fsanitize=bounds,signed-integer-overflow" } */ |
| |
| long a[10]; |
| |
| __attribute__((noinline, noclone)) long * |
| foo (int i) |
| { |
| return &a[i]; |
| } |
| |
| __attribute__((noinline, noclone)) long |
| bar (long x, long y) |
| { |
| return x * y; |
| } |
| |
| int |
| main () |
| { |
| volatile int i = -1; |
| volatile long l = __LONG_MAX__; |
| long *volatile p; |
| p = foo (i); |
| l = bar (l, l); |
| return 0; |
| } |
| |
| /* { dg-output "index -1 out of bounds for type 'long int \\\[10\\\]'\[^\n\r]*(\n|\r\n|\r)" } */ |
| /* { dg-output "\[^\n\r]*signed integer overflow: \[0-9]+ \\* \[0-9]+ cannot be represented in type 'long int'" } */ |