On Friday, 31 July 2020 at 10:22:20 UTC, Michael Reese wrote:

My question: Is there a way I can tell the D compiler to use registers instead of stack for string arguments, or any other trick to reduce code size while maintaining an ideomatic D codestyle?

A D string is a "slice", which is a struct (pointer + length). Depending on the function call ABI, structs are passed in registers or on the stack. On x86, the D calling convention is to put small POD structs in registers, similar to the C++ calling convention. I don't know whether GDC has attributes to change the calling convention of functions (besides extern(C/C++/Windows/etc.)), but that's where you'd need to look. Otherwise, file a bug with GDC. Slice arguments are common enough to require enregistering them in the D calling convention on your lm32 platform.

-Johan

Reply via email to