https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86532
--- Comment #8 from Bernd Edlinger <bernd.edlinger at hotmail dot de> --- $ cat part.c const char a[2][3] = { "121", "1" }; int main () { int n = __builtin_strlen (&a[0][0]); n += __builtin_strlen (a[0]); if (n != 8) __builtin_abort (); } I think I find no way to stop this example from being miscompiled.