https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108552
--- Comment #15 from Uroš Bizjak <ubizjak at gmail dot com> ---
Sorry, %esi/%edi is the correct order.
-24(%ebp): some value previously saved to stack frame
%ecx: address to write to
%eax/%edx: loop iterator
%esi/%edi: termination value
.L1469:
movl %eax, __gcov0.prep_compound_page+56
movl -24(%ebp), %ebx
addl $1, %eax <- increase loop iterator (low word)...
movl %edx, __gcov0.prep_compound_page+60
adcl $0, %edx <- ... and high word
addl $40, %ecx <- increase address pointer
movl $1024, -28(%ecx) <- write to address
movl %ebx, -36(%ecx) <
movl %edi, %ebx <- loop exit test: %eax/%edx == %esi/%edi
xorl %edx, %ebx <
movl %ebx, -20(%ebp) <
movl %esi, %ebx <
xorl %eax, %ebx <
orl -20(%ebp), %ebx <
jne .L1469 <