------- Additional Comments From rakdver at gcc dot gnu dot org  2004-11-28 
22:56 -------
I have the (experimental) patch for addressing mode selection on trees
(http://atrey.karlin.mff.cuni.cz/~rakdver/diff_lower_address.diff).
It indeed helps; we get

  i = 0;

<L0>:;
  mem[aa + 4B * i]{*D.1047} = mem[a + 4B * i]{*D.1048};
  mem[bb + 4B * i]{*D.1050} = mem[b + 4B * i]{*D.1051};
  i = (int) ((unsigned int) i + 1);
  if (n > i) goto <L0>; else goto <L2>;

<L2>:;

in .vars dump and

.L4:
        movl    (%ebp,%edx,4), %eax
        movl    %eax, (%esi,%edx,4) 
        movl    (%edi,%edx,4), %eax 
        movl    %eax, (%ebx,%edx,4)
        incl    %edx
        cmpl    %edx, %ecx
        jg      .L4

in the assembler, which seems fine (except that the memory references are not
reordered; maybe some of the aliasing information gets lost due to the patch
currently).

The patch definitely won't make it for 4.0, but I would like to get it or
something similar to 4.1.

-- 


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

Reply via email to