/* PR c/65345 */ /* { dg-do run } */ /* { dg-require-effective-target sync_int_long } */ /* { dg-options "" } */ #define CHECK(X) if (!(X)) __builtin_abort () _Atomic int i = 5; _Atomic int j = 2; void fn1 (int a[i = 0]) { } void fn2 (int a[i += 2]) { } void fn3 (int a[++i]) { } void fn4 (int a[++i]) { } void fn5 (int a[++i][j = 10]) { } void fn6 (int a[i = 7][j--]) { } int main () { int a[10]; int aa[10][10]; fn1 (a); CHECK (i == 0); fn2 (a); CHECK (i == 2); fn3 (a); CHECK (i == 3); fn4 (a); CHECK (i == 4); fn5 (aa); CHECK (i == 5); CHECK (j == 10); fn6 (aa); CHECK (i == 7); CHECK (j == 9); }