1 /* PR c/65345 */
2 /* { dg-options "" } */
3 
4 #define CHECK(X) if (!(X)) __builtin_abort ()
5 
6 _Atomic float i = 5;
7 _Atomic float j = 2;
8 
9 void
fn1(float a[(int)(i=0)])10 fn1 (float a[(int) (i = 0)])
11 {
12 }
13 
14 void
fn2(float a[(int)(i+=2)])15 fn2 (float a[(int) (i += 2)])
16 {
17 }
18 
19 void
fn3(float a[(int)++i])20 fn3 (float a[(int) ++i])
21 {
22 }
23 
24 void
fn4(float a[(int)++i])25 fn4 (float a[(int) ++i])
26 {
27 }
28 
29 void
fn5(float a[(int)++i][(int)(j=10)])30 fn5 (float a[(int) ++i][(int) (j = 10)])
31 {
32 }
33 
34 void
fn6(float a[(int)(i=7)][(int)j--])35 fn6 (float a[(int) (i = 7)][(int) j--])
36 {
37 }
38 
39 int
main()40 main ()
41 {
42   float a[10];
43   float aa[10][10];
44   fn1 (a);
45   CHECK (i == 0);
46   fn2 (a);
47   CHECK (i == 2);
48   fn3 (a);
49   CHECK (i == 3);
50   fn4 (a);
51   CHECK (i == 4);
52   fn5 (aa);
53   CHECK (i == 5);
54   CHECK (j == 10);
55   fn6 (aa);
56   CHECK (i == 7);
57   CHECK (j == 9);
58 }
59