blob: 505c13e5c11e6136711b928d9a1bb641c52f3222 [file] [log] [blame]
/* When the specified length exceeds one of the arguments of the call to memcmp,
the call to memcmp should NOT be inlined. */
/* { dg-do compile } */
/* { dg-options "-O2 -Wno-stringop-overread" } */
typedef struct { char s[8]; int x; } S;
__attribute__ ((noinline)) int
f1 (S * s)
{
int result = 0;
result += __builtin_memcmp (s->s, "a", 3);
return result;
}
__attribute__ ((noinline)) int
f2 (char *p)
{
int result = 0;
result += __builtin_memcmp (p, "a", 3);
return result;
}
int main (void)
{
S ss = {{'a','b','c'}, 2};
char *s = "abcd";
if (f1 (&ss) < 0 || f2 (s) < 0)
__builtin_abort ();
return 0;
}
/* { dg-final { scan-assembler-times "memcmp" 2 } } */