blob: 709d0046b8c55ae0a35df7409470dd077037f5c1 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -Warray-bounds" } */
int foo(unsigned int state, unsigned char * p, unsigned int p_len)
{
static char const pattern[] = "abcd";
static unsigned const pattern_length = sizeof(pattern) - 1;
if (p_len == 1) {
return state;
}
if (state < pattern_length &&
p_len == (pattern_length - state) &&
(!__builtin_constant_p(p_len) ?
__builtin_memcmp(p, pattern + state, p_len) :
((unsigned char*)p)[6] == ((unsigned char*)pattern + state)[6] /* { dg-bogus "array bounds" } */
)) {
return 4;
}
return 1;
}