/* { dg-options "-O2 -fdump-tree-dse-details -fno-tree-fre" } */


struct S { int i; char n[128]; int j; };

void f (char*);

void g (struct S *p)
{
  char a[sizeof p->n + 1];

  __builtin_memset (a, 0, sizeof a);   // dead store, can be eliminated

  __builtin_strncpy (a, p->n, sizeof a - 1);
  a[sizeof a - 1] = '\0';

  f (a);
}

/* { dg-final { scan-tree-dump-times "Deleted dead call" 1 "dse1" } } */