/* PR c/65345 */ /* { dg-options "" } */ #define CHECK(X) if (!(X)) __builtin_abort () _Atomic float i = 5; _Atomic float j = 2; void fn1 (float a[(int) (i = 0)]) { } void fn2 (float a[(int) (i += 2)]) { } void fn3 (float a[(int) ++i]) { } void fn4 (float a[(int) ++i]) { } void fn5 (float a[(int) ++i][(int) (j = 10)]) { } void fn6 (float a[(int) (i = 7)][(int) j--]) { } int main () { float a[10]; float 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); }