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.