GDC and leaf functions

Iain Buclaw ibuclaw at ubuntu.com
Mon Mar 4 09:35:31 PST 2013


On Mar 4, 2013 3:27 PM, "Manu" <turkeyman at 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';
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130304/3513332d/attachment.html>


More information about the Digitalmars-d mailing list