https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105864
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Ivan Sorokin from comment #5) > I would suggest (In reply to Andrew Pinski from comment #4) > > nullptr_t t, t1 = nullptr; > > __builtin_memcpy(&a[0], &t, sizeof(t)); > > > So I suspect this should be marked as invalid. > > The questions is how GCC defines memcpy'ing from nullptr_t. > > Should it be required to read zero bytes? Or null pointer value? What about > systems where the value of null pointer is not zero? > > In any case I don't think memcpy'ing nullptr_t into a different type is > particularly useful or used anywhere (I might be wrong). So I suggest > defining nullptr_t as an empty type containing only padding bytes. In this > case memcpy should just read the padding bytes. But the padding bits needs to be zero then ....