On Friday, 19 September 2014 at 15:30:25 UTC, Daniel Murphy wrote:
"Chris" wrote in message news:[email protected]...

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.

All right, that escaped me. I'm not exactly asm-literate. Mea maxima culpa! But good to know that you can rely on the compiler. It's not that unusual actually. Often I have things like that in my programs. I make the program flexible for extensions in the future but until that happens it lives happily with something like DoIt.no (usually in the signature flag = DoIt.no), i.e. DoIt.yes is never used throughout the program. The if statement should be kept alive in a library though, cos there's no way you can foresee what users gonna do.

Reply via email to