Static inner functions

Simon s.d.hammett at gmail.com
Wed Dec 22 12:05:00 PST 2010


On 22/12/2010 18:17, bearophile wrote:
> A little D2 program:
>
> void main() {
>             pure nothrow int foo1(immutable int x) { return x; }
>      static pure nothrow int foo2(immutable int x) { return x; }
> }
>
>
> This is the asm of the two inner functions:
>
> _D6test4mainFZv4foo1MFNaNbyiZi    comdat
>          enter   4,0
>          mov EAX,8[EBP]
>          leave
>          ret 4
>
> _D6test4mainFZv4foo2FNaNbyiZi comdat
>          enter   4,0
>          leave
>          ret
>
> Is this a compiler mistake? Aren't strongly pure inner function static too?
>
> Bye,
> bearophile

Why would they be?

Surely a pure inner function could access immutable vars from the outer 
function and still be pure.

That's being said, you'd hope the compiler would recognise that foo1 is 
essentially static and optimise it properly.

-- 
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


More information about the Digitalmars-d-learn mailing list