/* 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 }