On Wednesday, 25 December 2013 at 12:03:08 UTC, Ivan Kazmenko
wrote:
Now, I am not exactly fluent in assembler, but the "mov ECX,
EDX" seems unnecessary. The ECX register is explicitly used
three times in the whole program, and it looks like this
instruction can at least be moved out of the loop, if not
removed completely.
Is it indeed a bug, or there's some reason here? And if the
former, where do I report it - at
http://d.puremagic.com/issues/, as with the front-end?
Did you try something like:
for(immutable i; 0..MAX_N)
a[i] = i;
too? One thing to note is that, technically, i is a _copy_ of the
iterated number. So things like
for(i; 0..5)
i++;
have no effect (it will loop 5 times regardless). Indeed, in your
case, this could be optimized out, but in general the extra
instruction is technically correct. I don't know if making i
immutable would change things, but it might give the compiler
enough of a hint to do the correct optimization here.