------- Additional Comments From pinskia at gcc dot gnu dot org  2004-11-13 
17:42 -------
Though I should note that PPC is much better on the mainline than before:
gcc 4.0.0:
L4:
        lfsx f0,r3,r2
        stfsx f0,r5,r2
        lfsx f13,r4,r2
        stfsx f13,r6,r2
        addi r2,r2,4
        bdnz L4

gcc 3.3 (Apple's):
L9:
        slwi r7,r11,2
        addi r11,r11,1
        lfsx f0,r7,r3
        stfsx f0,r7,r5
        lfsx f1,r7,r4
        stfsx f1,r7,r6
        bdnz L9

So really this is a target specific bug :).

Also here the loop for x86_64:
.L4:
        movl    (%rdx,%r10), %eax
        incl    %ecx
        movl    %eax, (%rdx,%r9)
        movl    (%rdx,%rdi), %eax
        movl    %eax, (%rdx,%rsi)
        addq    $4, %rdx
        cmpl    %ecx, %r8d
        jg      .L4

Note changing the type of n and i to be unsigned we get slightly better code:
.L4:
        movl    -16(%ebp), %ebx
        leal    0(,%ecx,4), %eax
        incl    %ecx
        cmpl    %ecx, 24(%ebp)
        movl    (%ebx,%eax), %edx
        movl    -20(%ebp), %ebx
        movl    %edx, (%edi,%eax)
        movl    (%esi,%eax), %edx
        movl    %edx, (%ebx,%eax)
        jne     .L4

So IV-OPTs is not doing its job correctly in one place.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
 GCC target triplet|                            |i?86-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18463

Reply via email to