/* PR middle-end/100680 */
/* { dg-do compile { target size32plus } } */
/* { dg-options "-O2 -Wstringop-overread" } */

struct s {
  char a[8];
  int i;
  long l;
};

extern char ea[8];
static char sa[8] = { 1, 2, 3, 4 };

int
test (void)
{
  const struct s *ps = (const struct s *) 0x12345678L;
  if (__builtin_memcmp (ps->a, ps->a, 8))
    return 0;

  if (__builtin_memcmp (ps->a, ea, 8))		/* { dg-bogus "exceeds source size 0" } */
    return 0;

  if (__builtin_memcmp (ps->a, sa, 8))		/* { dg-bogus "exceeds source size 0" } */
    return 0;

  if (__builtin_memcmp (ps->a, "abcdABCD", 8))	/* { dg-bogus "exceeds source size 0" } */
    return 0;

  return 1;
}