https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94130

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Slightly reduced testcase:
struct A { char a[6]; void *b; };
struct B { unsigned int c, d; };

static void __attribute__((noipa))
foo (struct A *x)
{
  struct B *b = (struct B *) x->b;
  if (b->c != 1234 || b->d)
    __builtin_abort ();
}

int
main ()
{
  struct A a;
  struct B b;
  __builtin_memset (&a, 0, sizeof (a));
  __builtin_strncpy (a.a, "Hello", sizeof (a.a));
  a.b = __builtin_memset (&b, 0, sizeof (b));
  b.c = 1234;
  b.d = 0;
  foo (&a);
  return 0;
}

Reply via email to