On 19.09.2014 17:30, Daniel Murphy wrote:
"Chris"  wrote in message news:kcsnboocxeykhknjl...@forum.dlang.org...
Out of curiosity. dmd still produces the if statement, although it
ain't gonna happen. Same is true of "DoIt.yes". I know, it's an
unlikely and marginal example.

No it doesn't, here's main:

_Dmain:
push RBP
mov RBP,RSP
mov EDI,1
call   _D7dump_if4doitFE7dump_if4DoItZv@PC32
xor EAX,EAX
pop RBP
ret
0f1f
add [RAX],R8B
.text._Dmain ends

See, no branches or comparisons.

The branch is still in the doIt function:

> _D7dump_if4doitFE7dump_if4DoItZv:
>          push    RBP
>          mov    RBP,RSP
>          sub    RSP,010h
>          mov    -8[RBP],EDI
>          cmp    dword ptr -8[RBP],0
>          jne    L29

dmd didn't do any inlining at all. It is very restrained with inlining, you'll get much better results with GDC or LDC.

Reply via email to