https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92828
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |msebor at gcc dot gnu.org
--- Comment #6 from Martin Sebor <msebor at gcc dot gnu.org> ---
Here's a slightly more reduced example that reproduces a similar warning:
$ cat pr92828.C && gcc -O2 -S -Wall pr92828.C
extern int f (void);
static const char*
g (unsigned n, const char *t)
{
for (unsigned i = n; i--; )
{
if (f ())
{
const char *p = t + n;
if (p[1] == '.' && p[2] == '.' && p[3] == '/')
goto not_this_one;
break;
}
not_this_one:;
}
return t;
}
void h (unsigned n)
{
g (n, "-");
}
pr92828.C: In function ‘void h(unsigned int)’:
pr92828.C:11:26: warning: array subscript [2, 4294967297] is outside array
bounds of ‘const char [2]’ [-Warray-bounds]
11 | if (p[1] == '.' && p[2] == '.' && p[3] == '/')
| ~~~^
pr92828.C:11:41: warning: array subscript [3, 4294967298] is outside array
bounds of ‘const char [2]’ [-Warray-bounds]
11 | if (p[1] == '.' && p[2] == '.' && p[3] == '/')
| ~~~^