1 /* PR c/65345 */ 2 /* { dg-do compile } */ 3 /* { dg-options "" } */ 4 5 _Atomic int i = 3; 6 7 int a1 = sizeof (i + 1); 8 int a2 = sizeof (i = 0); 9 int a3 = sizeof (i++); 10 int a4 = sizeof (i--); 11 int a5 = sizeof (-i); 12 13 int b1 = _Alignof (i + 1); 14 int b2 = _Alignof (i = 0); 15 int b3 = _Alignof (i++); 16 int b4 = _Alignof (i--); 17 int b5 = _Alignof (-i); 18 19 int c1 = i; /* { dg-error "initializer element is not constant" } */ 20 int c2 = (i ? 1 : 2); /* { dg-error "initializer element is not constant" } */ 21 int c3[i]; /* { dg-error "variably modified" } */ 22 int c4 = 0 || i; /* { dg-error "initializer element is not constant" } */ 23 int c5 = (i += 10); /* { dg-error "initializer element is not constant" } */ 24 25 _Static_assert (_Generic (i, int: 1, default: 0) == 1, "1"); 26 _Static_assert (_Generic (i + 1, int: 1, default: 0) == 1, "2"); 27 _Static_assert (_Generic (i = 0, int: 1, default: 0) == 1, "3"); 28 _Static_assert (_Generic (i++, int: 1, default: 0) == 1, "4"); 29 _Static_assert (_Generic (i--, int: 1, default: 0) == 1, "5"); 30 31 void fn1 (int a[i + 1]); 32 void fn2 (int a[i = 0]); 33 void fn3 (int a[i++]); 34 void fn4 (int a[i--]); 35 void fn5 (int a[-i]); 36