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.