https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89688
Bug ID: 89688 Summary: -Wstringop-overflow confused by 2D array of char Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redbeard0531 at gmail dot com Target Milestone: --- Also, for some reason it repeats the warning 3 times. https://godbolt.org/z/SStUsl // Fine extern const char a[2] = {'1'}; auto z = __builtin_strlen(a); // Warns extern const char aa[1][2] = {{'2'}}; auto zz = __builtin_strlen(aa[0]); > ~/opensource/gcc/prefix/bin/g++ -Wall str.cpp -fsyntax-only str.cpp:7:27: warning: ‘strlen’ argument missing terminating nul [-Wstringop-overflow=] 7 | auto zz = __builtin_strlen(aa[0]); | ~~~~~~~~~~~~~~~~^~~~~~~ str.cpp:6:19: note: referenced argument declared here 6 | extern const char aa[1][2] = {{'2'}}; | ^~ str.cpp:7:27: warning: ‘strlen’ argument missing terminating nul [-Wstringop-overflow=] 7 | auto zz = __builtin_strlen(aa[0]); | ~~~~~~~~~~~~~~~~^~~~~~~ str.cpp:6:19: note: referenced argument declared here 6 | extern const char aa[1][2] = {{'2'}}; | ^~ str.cpp:7:32: warning: ‘strlen’ argument missing terminating nul [-Wstringop-overflow=] 7 | auto zz = __builtin_strlen(aa[0]); | ~~~~^ str.cpp:6:19: note: referenced argument declared here 6 | extern const char aa[1][2] = {{'2'}}; | ^~ Reduced example from real code at: https://github.com/boostorg/date_time/blob/b0437e2999a65668dc4178dbb817a89a382ece94/include/boost/date_time/special_values_formatter.hpp#L89-L92 + https://github.com/boostorg/date_time/blob/b0437e2999a65668dc4178dbb817a89a382ece94/include/boost/date_time/special_values_formatter.hpp#L43-L45