1  /* { dg-do run } */
       2  
       3  /* We do not want to treat int[3] as an object that cannot overlap
       4     itself but treat it as arbitrary sub-array of a larger array object.  */
       5  int ar1(int (*p)[3], int (*q)[3])
       6  {
       7    (*p)[0] = 1;
       8    (*q)[1] = 2;
       9    return (*p)[0];
      10  }
      11  int main()
      12  {
      13    int a[4];
      14    if (ar1 ((int (*)[3])&a[1], (int (*)[3])&a[0]) != 2)
      15      __builtin_abort ();
      16    return 0;
      17  }