On Wednesday, 25 December 2013 at 14:51:11 UTC, bearophile wrote:
ldc2 optimizes the useless loop away:
__Dmain:
xorl %eax, %eax
ret
If I modify the code returning some value from the int main:
return a[7];
ldc2 gives the loop code:
LBB0_1:
movl %eax, 12(%esp,%eax,4)
incl %eax
cmpl $1000000, %eax
jne LBB0_1
If I use iota ldc2 copiles the loop to exactly the same asm:
foreach (i; MAX_N.iota)
Glad to know that! But what about DMD? Anyone?..
If someone with better knowledge in assembly confirms the
instruction is unnecessary, I'll file a bug report (at
http://d.puremagic.com/issues/ I presume).
Ivan Kazmenko.