https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90482
--- Comment #4 from Ian Lance Taylor <ian at airs dot com> --- What is different about 32-bit SPARC is not that it treats pointers and integers differently, but that struct { void *p; } and void *p; are passed as arguments in two different ways. The former is passed by invisible reference and the latter is passed directly. On many platforms they are passed as arguments in exactly the same way.