Inlining of function(){...}()
Mathias Laurenz Baumann
anonym001 at supradigital.org
Mon Apr 26 05:39:34 PDT 2010
Greetings,
The following code seems to create a new function call:
module test;
void main(char[][] args)
{
return function(int i) { return i+2; }(1);
}
compiled with dmd test.d -inline
At least objdump of the .o file contains:
RELOCATION RECORDS FOR [.text._Dmain]:
OFFSET TYPE VALUE
00000009 R_386_PC32 _D4test4mainFAAaZv14__funcliteral1FiZi
which looks like a additional function to me. Though I must mention that I
don't really know how correct my interpretation of these information is.
Using nested functions, it seems to get inlined:
module test;
void main(char[][] args)
{
int tmp(int i)
{
return i+2;
}
return tmp(1);
}
I was wondering if this is correctly interpreted by me and if yes, why it
isn't inlined? I would expect that inlining function() {} () would even be
more easy than a nested function because it is used only at one place.
--Marenz
--
Erstellt mit Operas revolutionärem E-Mail-Modul: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list