On Mar 4, 2013 3:27 PM, "Manu" <[email protected]> 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';

Reply via email to