https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96900
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |false-positive --- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note the location is messed up starting in GCC 12. GCC 11 gave: <source>: In function 'int g()': <source>:13:27: warning: offset '1' outside bounds of constant string [-Warray-bounds] 13 | return __builtin_strlen (p - sizeof s.a); // bogus -Warray-bounds | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ GCC 12 gives: <source>: In function 'int g()': <source>:10:5: warning: offset '1' outside bounds of constant string [-Warray-bounds] 10 | int g (void) | ^ Looks like c_strlen could use a loc argument but that is a huge huge change.