/* PR middle-end/92936 - missing warning on a past-the-end store to a PHI
   Test case derived from gcc/opts-common.c.
   { dg-do compile }
   { dg-options "-O2 -Wall" } */

typedef __SIZE_TYPE__ size_t;

char* f (const void*, ...);

const char *
candidates_list_and_hint (const char *arg, char **str, const char *a[])
{
  size_t len = 0;
  int i;

  for (i = 0; a[i]; ++i)
    len += __builtin_strlen (a[i]) + 1;

  char *p = (char*)__builtin_malloc (len);
  *str = p;

  for (i = 0; a[i]; ++i)
    {
      len = __builtin_strlen (a[i]);
      __builtin_memcpy (p, a[i], len);
      p[len] = ' ';
      p += len + 1;
    }

  p[-1] = '\0';     // { dg-bogus "\\\[-Wstringop-overflow" }

  return f (arg, &a);
}