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
      10  fn1 (float a[(int) (i = 0)])
      11  {
      12  }
      13  
      14  void
      15  fn2 (float a[(int) (i += 2)])
      16  {
      17  }
      18  
      19  void
      20  fn3 (float a[(int) ++i])
      21  {
      22  }
      23  
      24  void
      25  fn4 (float a[(int) ++i])
      26  {
      27  }
      28  
      29  void
      30  fn5 (float a[(int) ++i][(int) (j = 10)])
      31  {
      32  }
      33  
      34  void
      35  fn6 (float a[(int) (i = 7)][(int) j--])
      36  {
      37  }
      38  
      39  int
      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  }