/* PR middle-end/30286 */
/* { dg-do run } */
/* { dg-options "-O2 -ftrapv" } */

extern void abort (void);
struct S { struct S *s; };
struct T { struct S *t[25]; };

void
__attribute__((noinline))
foo (int i, struct T *x, struct S *y)
{
  int j;
  for (j = 14; j > i; j--)
    x->t[j] = y->s;
}

int
main (void)
{
  struct S s;
  struct T t;
  int i;

  s.s = &s;
  __builtin_memset (&t, 0, sizeof (t));
  foo (6, &t, &s);
  for (i = 0; i < 25; i++)
    if (t.t[i] != ((i > 6 && i <= 14) ? &s : (struct S *) 0))
      abort ();
  __builtin_memset (&t, 0, sizeof (t));
  foo (-1, &t, &s);
  for (i = 0; i < 25; i++)
    if (t.t[i] != ((i >= 0 && i <= 14) ? &s : (struct S *) 0))
      abort ();
  return 0;
}
