------- Comment #2 from rguenth at gcc dot gnu dot org  2006-02-15 10:58 -------
Confirmed.  This are the two inner loops:

4.0.2:

.L6:
        movl    -4(%esi), %ecx
        movl    (%edx), %eax
        cmpl    %eax, %ecx
        jle     .L7
        movl    %eax, -4(%esi)
        movl    %ecx, (%edx)
.L7:
        incl    %ebx
        addl    $4, %edx
        cmpl    %edi, %ebx
        jne     .L6


4.1.0:

.L6:
        movl    8(%ebp), %ebx
        movl    4(%edx), %ecx
        movl    -4(%ebx,%eax,4), %ebx
        movl    %ecx, -20(%ebp)
        cmpl    %ecx, %ebx
        movl    %ebx, -16(%ebp)
        jle     .L7
        movl    8(%ebp), %ebx
        movl    %ecx, -4(%ebx,%eax,4)
        movl    -16(%ebp), %ecx
        movl    %ecx, 4(%edx)
.L7:
        incl    -24(%ebp)
        addl    $4, %edx
        cmpl    -24(%ebp), %esi
        jle     .L12
        jmp     .L6

Optimized tree-dumps have for 4.0.2:

<L1>:;
  D.2291 = *((int *) ivtmp.31 + -4B);
  D.2339 = (int *) ivtmp.22;
  D.2296 = *D.2339;
  if (D.2291 > D.2296) goto <L2>; else goto <L3>;

<L2>:;
  *((int *) ivtmp.31 + -4B) = D.2296;
  *D.2339 = D.2291; 

<L3>:;
  ivtmp.19 = ivtmp.19 + 1;
  ivtmp.22 = ivtmp.22 + 4B;
  if (ivtmp.19 != (unsigned int) cnt - (unsigned int) j) goto <L1>; else goto
<L8>;

and for 4.1.0:

<L1>:;
  D.2434 = MEM[base: lst, index: D.2540, step: 4B, offset: -4B];
  D.2534 = (int *) ivtmp.49;
  D.2439 = MEM[base: D.2534, offset: 4B];
  if (D.2434 > D.2439) goto <L2>; else goto <L3>;

<L2>:;
  MEM[base: lst, index: D.2540, step: 4B, offset: -4B] = D.2439;
  MEM[base: D.2534, offset: 4B] = D.2434;

<L3>:; 
  j.56 = j.56 + 1;
  ivtmp.49 = ivtmp.49 + 4B;
  if (cnt > j.56) goto <L1>; else goto <L8>;

which doesn't look too much worse.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-02-15 10:58:11
               date|                            |


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

Reply via email to