| /* Verify that -Warray-bounds suppression via #pragma GCC diagnostic |
| works at any call site in an inlining stack |
| { dg-do compile } |
| { dg-options "-O2 -Wall" } */ |
| |
| int a[4]; |
| |
| void f1 (int *p, int i) |
| { |
| #pragma GCC diagnostic push |
| #if IGNORE == '1' |
| # pragma GCC diagnostic ignored "-Warray-bounds" |
| #endif |
| p[i + 1] = 0; |
| #pragma GCC diagnostic pop |
| } |
| |
| void f2 (int *p, int i) |
| { |
| #pragma GCC diagnostic push |
| #if IGNORE == '2' |
| # pragma GCC diagnostic ignored "-Warray-bounds" |
| #endif |
| f1 (p + 1, i + 1); |
| #pragma GCC diagnostic pop |
| } |
| |
| void f3 (int *p, int i) |
| { |
| #pragma GCC diagnostic push |
| #if IGNORE == '3' |
| # pragma GCC diagnostic ignored "-Warray-bounds" |
| #endif |
| f2 (p + 1, i + 1); |
| #pragma GCC diagnostic pop |
| } |
| |
| void f4 (void) |
| { |
| #pragma GCC diagnostic push |
| #if IGNORE == '4' |
| # pragma GCC diagnostic ignored "-Warray-bounds" |
| #endif |
| f3 (a, 1); |
| #pragma GCC diagnostic pop |
| } |