GDC and leaf functions

Manu turkeyman at gmail.com
Mon Mar 4 09:49:15 PST 2013


Hmm, it seems PPC is working too.
Actually, maybe it's just SH4. I think my tests on other arch's were thrown
by bad compiler options.
Hmmm...

extern(C) float testfunc(float v, float v2)
{
return v*v2 + v2;
}


PPC:

testfunc:
fmadds 1,1,2,2
blr


MIPS:

testfunc:
j $31
madd.s $f0,$f13,$f12,$f13



SH4 Produces:

testfunc:
mov.l .L3,r1
lds.l @r1+,fpscr
add #-4,r1
fmov fr4,fr0
add #4,r1
fmac fr0,fr5,fr0
rts
lds.l @r1+,fpscr


But it should be:

testfunc:
fmov fr4,fr0
fmac fr0,fr5,fr0
rts



On 5 March 2013 03:39, David Nadlinger <see at klickverbot.at> wrote:

> On Monday, 4 March 2013 at 15:25:43 UTC, Manu 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?
>>
>
> http://d.godbolt.org/#%7B%**22version%22%3A3%2C%**
> 22filterAsm%22%3A%7B%22labels%**22%3Atrue%2C%22directives%22%**
> 3Atrue%2C%22commentOnly%22%**3Atrue%2C%22intel%22%3Atrue%**
> 7D%2C%22compilers%22%3A%5B%7B%**22source%22%3A%22int%20leaf()%**
> 20pure%20nothrow%5Cn%7B%5Cn%**20%20return%200%3B%5Cn%7D%22%**
> 2C%22compiler%22%3A%22%2Fusr%**2Fbin%2Fgdc%22%2C%22options%**
> 22%3A%22-O3%20-march%3Dnative%**22%7D%5D%7D<http://d.godbolt.org/#%7B%22version%22%3A3%2C%22filterAsm%22%3A%7B%22labels%22%3Atrue%2C%22directives%22%3Atrue%2C%22commentOnly%22%3Atrue%2C%22intel%22%3Atrue%7D%2C%22compilers%22%3A%5B%7B%22source%22%3A%22int%20leaf()%20pure%20nothrow%5Cn%7B%5Cn%20%20return%200%3B%5Cn%7D%22%2C%22compiler%22%3A%22%2Fusr%2Fbin%2Fgdc%22%2C%22options%22%3A%22-O3%20-march%3Dnative%22%7D%5D%7D>
>
> The rest is just code for registering the ModuleInfo of the given module
> in the global list.
>
> David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130305/1b72c806/attachment.html>


More information about the Digitalmars-d mailing list