https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977
--- Comment #25 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to ibuclaw from comment #24) > (In reply to Iain Sandoe from comment #23) > > So the ABIs differ in this (as noted on IRC, the Darwin 32b ABIs are not the > > same as Linux). > I'm still yet to work out why D on 32-bit Darwin behaves the same as 32-bit > Linux though. I would have assumed the decision to generate an sret would > occur long after the front-end has freed itself from the compilation process. there should be some target hook to query whether a struct returns in regs. > Regardless, the ABI issue can be raised in a separate PR. Because of it > though, that means for this bootstrap PR we just have to avoid calling any > extern(C++) method implemented in D that returns a struct by value. Note that this would affect any interface to libc or external C++ that returns a small struct. AFAIR, X86 Darwin is not the only platform that returns small structs in regs.