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             <

Reply via email to