/* { dg-do run } */
/* { dg-options "-O2" } */

/* PR target/20126 was not really target-specific, but rather a loop's
   failure to take into account the possibility that a DEST_ADDR giv
   replacement might fail, such as when you attempt to replace a REG
   with a PLUS in one of the register_operands of cmpstrqi_rex_1.  */

extern void abort (void);

typedef struct { int a; char b[3]; } S;
S c = { 2, "aa" }, d = { 2, "aa" };

void *
bar (const void *x, int y, int z)
{
  return (void *) 0;
}

int
foo (S *x, S *y)
{
  const char *e, *f, *g;
  int h;

  h = y->a;
  f = y->b;
  e = x->b;

  if (h == 1)
    return bar (e, *f, x->a) != 0;

  g = e + x->a - h;
  while (e <= g)
    {
      const char *t = e + 1;
      if (__builtin_memcmp (e, f, h) == 0)
        return 1;
      e = t;
    }
  return 0;
}

int
main (void)
{
  if (foo (&c, &d) != 1)
    abort ();
  return 0;
}
