On Mar 4, 2013 3:27 PM, "Manu" <turkeyman@gmail.com> wrote:
>
> I'm doing a lot of experiments with GDC, and I'm noticing that leaf functions are still generating a stack frame and doing pointless work...
>
> int leaf() pure nothrow
> {
>   return 0;
> }
>
> compile with -frelease -finline -O3, etc
>
> I expect 2 opcodes, load immediate and return, but I get a whole pointless function including memory access O_O
>
> Any ideas? Is this normal?

I'd expect so.  Leaf functions in C require explicit attributes to mark them.  Now that we've integrated UDA attributes into gcc attributes, we need to start building on what is needed to be implemented.   :)

import gcc.attributes;
@attribute ("leaf") int leaf;

Regards
--
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';