1  /* Exercise nested function decomposition, gcc/tree-nested.c.  */
       2  
       3  int
       4  main (void)
       5  {
       6    void test1 ()
       7    {
       8      int i, j, k;
       9      int a[4][7][8];
      10  
      11      __builtin_memset (a, 0, sizeof (a));
      12  
      13  #pragma acc parallel
      14  #pragma acc loop collapse(4 - 1)
      15      for (i = 1; i <= 3; i++)
      16        for (j = 4; j <= 6; j++)
      17  	for (k = 5; k <= 7; k++)
      18  	  a[i][j][k] = i + j + k;
      19  
      20      for (i = 1; i <= 3; i++)
      21        for (j = 4; j <= 6; j++)
      22  	for (k = 5; k <= 7; k++)
      23  	  if (a[i][j][k] != i + j + k)
      24  	    __builtin_abort();
      25    }
      26  
      27    void test2 ()
      28    {
      29      int i, j, k;
      30      int a[4][4][4];
      31  
      32      __builtin_memset (a, 0, sizeof (a));
      33  
      34  #pragma acc parallel
      35  #pragma acc loop collapse(3)
      36      for (i = 1; i <= 3; i++)
      37        for (j = 1; j <= 3; j++)
      38  	for (k = 1; k <= 3; k++)
      39  	  a[i][j][k] = 1;
      40  
      41      for (i = 1; i <= 3; i++)
      42        for (j = 1; j <= 3; j++)
      43  	for (k = 1; k <= 3; k++)
      44  	  if (a[i][j][k] != 1)
      45  	    __builtin_abort ();
      46    }
      47  
      48    test1 ();
      49    test2 ();
      50  
      51    return 0;
      52  }