https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89688
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic, | |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2019-03-12 CC| |msebor at gcc dot gnu.org Component|c++ |tree-optimization Summary|-Wstringop-overflow |[9 Regression] |confused by 2D array of |-Wstringop-overflow |char |confused by const 2D array | |of char Ever confirmed|0 |1 --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- Confirmed. string_constant successfully folds the call but also sets *DECL to point to the array which fold_builtin_strlen interprets as the array not being nul-terminated. This in turn disables the folding and results in the false positive. Fixing it should be as simple as clearing *DECL. The false positive is a regression. The strlen() call wasn't folded before so it by itself isn't, but they might both as well be fixed together.