https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105823
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |needs-bisection --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- I can now only see the correct t.C: In member function 'auto ah::aq(long int)': t.C:4:28: warning: argument 1 null where non-null expected [-Wnonnull] 4 | return __builtin_memcpy(0, &aq_ai, aj); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~ <built-in>: note: in a call to function 'void* __builtin_memcpy(void*, const void*, long unsigned int)' declared 'nonnull' not sure what changed it. If I supply (void *)4 as destination I get In member function 'auto ah::aq(long int)', inlined from 'ah& ah::bi(long int)' at t.C:17:9, inlined from 'ah& ah::bi(long int)' at t.C:11:5: t.C:4:28: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' specified bound between 9223372036854775808 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] 4 | return __builtin_memcpy((void *)4, &aq_ai, aj); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ In member function 'auto ah::aq(long int)', inlined from 'ah& ah::bi(long int)' at t.C:17:9, inlined from 'ah& ah::bi(long int)' at t.C:11:5, inlined from 'void ah::ba()' at t.C:7:17, inlined from 'void cn()' at t.C:24:15: t.C:4:28: warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)' specified bound between 9223372036854775808 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] 4 | return __builtin_memcpy((void *)4, &aq_ai, aj); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ that resembles what you are seeing I guess.