1  /* PR middle-end/108459 */
       2  
       3  char a[17][17];
       4  
       5  __attribute__((noipa)) void
       6  foo (int x, int y)
       7  {
       8    #pragma omp for collapse(2)
       9    for (int i = 1; i <= 16; i++)
      10      for (int j = i * x + y; j <= 16; j++)
      11        a[i][j] = 1;
      12  }
      13  
      14  int
      15  main ()
      16  {
      17    #pragma omp parallel
      18    foo (1, 1);
      19    for (int i = 0; i <= 16; i++)
      20      for (int j = 0; j <= 16; j++)
      21        if (i >= 1 && j >= i + 1)
      22  	{
      23  	  if (a[i][j] != 1)
      24  	    __builtin_abort ();
      25  	  a[i][j] = 0;
      26  	}
      27        else if (a[i][j])
      28  	__builtin_abort ();
      29    #pragma omp parallel
      30    foo (2, -2);
      31    for (int i = 0; i <= 16; i++)
      32      for (int j = 0; j <= 16; j++)
      33        if (i >= 1 && j >= 2 * i - 2)
      34  	{
      35  	  if (a[i][j] != 1)
      36  	    __builtin_abort ();
      37  	}
      38        else if (a[i][j])
      39  	__builtin_abort ();
      40    return 0;
      41  }