https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63336

--- Comment #10 from Yves Vandriessche <yves.vandriessche at intel dot com> ---
A similar internal compile error is triggered in find_rank when dealing with
two-dimensional array arguments, for both g++-5.2 and g++-6.1.1.

>void test(double Arr[][16]) {
>  double A[16]= {0};
>  for(int i=0; i<4; i++) {
>    A[:] += Arr[i][:]; // internal compile error:
>                       // in find_rank, at c-family/array-notation-common.c:232
>  }
>  printf("%f \n", A[0]);
>}

This only happens on two-dimensional arrays. Passing a regular array (e.g.
Arr[16]) correctly yields a normal compile error (not an ICE); start-index and
length cannot be determined as `double Arr[16]` degenerates into `double *Arr`.

Complete test code has been attached attached.

Reply via email to