https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81631
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- This is void baz (const int *y) { const int (*x)[6]; x = (const int (*)[6]) y; } ISO C11 says "If the specification of an array type includes any type qualifiers, the element type is so-qualified, not the array type." so the compiler sees pointer-to-const being casted to pointer-to-array-of-const-ints. But you can't assign to an array anyway so perhaps it makes sense to not warn in this case.