https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101718
--- Comment #2 from Matt Jacobson <mhjacobson at me dot com> --- (In reply to Iain Sandoe from comment #1) > can you give me some idea of the platform? it would help with testing at > least (assuming that there is a suitable machine on the cfarm). Sure, but I'm guessing it's not going to be very helpful! The platform I'm using is an AVR microcontroller, with my own custom NeXT-v2-ABI-compliant runtime. <https://mjacobson.net/blog/2021-07-objc-avr.html> <https://github.com/mhjacobson/avr-objc> > Having said that, there could be some types for which this would fire even > on Darwin. Hm -- I'm not so sure. The x86_64 calling convention allocates *two* (64-bit) registers to integer/pointer return values, so `__int128` doesn't require memory. Similarly, it can return `_Complex double` via multiple SSE registers. Finally, there's also `_Complex long double`, which is returned via the x87 stack (and for which there is yet another messenger routine, `objc_msgSend_fp2ret`). In fact, a close reading of the ABI spec suggests that the *only* types that would ever be returned through memory are structs and unions. So the code here would work.