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

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
A testcase where not doing the storing would might give wrong code:

using nullptr_t = decltype(nullptr);

[[gnu::noipa]]
void test(nullptr_t* p)
{
    *p = nullptr;
}

int main(void)
{
  nullptr_t t, t1 = nullptr;
  test(&t);
  char a[sizeof(t)], a1[sizeof(t)];
  __builtin_memcpy(&a[0], &t, sizeof(t));
  __builtin_memcpy(&a1[0], &t1, sizeof(t));
  if (__builtin_memcmp(&a[0], &a1[0], sizeof(a)) != 0)
    __builtin_abort();
  return 0;
}

So I suspect this should be marked as invalid.

Reply via email to