--- Additional Comments From steven at gcc dot gnu dot org 2005-01-29
02:34 ---
*** Bug 19680 has been marked as a duplicate of this bug. ***
--
What|Removed |Added
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-12-05
04:29 ---
*** Bug 17647 has been marked as a duplicate of this bug. ***
--
What|Removed |Added
--- Additional Comments From giovannibajo at libero dot it 2004-11-28
23:38 ---
While the patch looks great to me, it is not feasable as you said for 4.0.
Since this is a 4.0 regression, we should probably look for a way to fix this
problem in a less intrusive (even if not totally corr
--- 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;
:;
mem[aa + 4B * i]{*D.1047} =
--- Additional Comments From rakdver at gcc dot gnu dot org 2004-11-26
08:12 ---
The problem indeed is ivopts - dom interaction. Ivopts decide that since
reg + 4 * reg is a cheap addressing mode, there is no reason to do anything
else than what it does. To cure this we need to be able t
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-26
05:11 ---
Actually I missed that you have to use -fomit-frame-pointer, so this is not
related to PR 18137 after all.
--
What|Removed |Added
---
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-25
23:55 ---
PR 18137 is the one which is about reload fucking up and pull the load of the
arguments into the loop.
--
What|Removed |Added
---
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-25
23:29 ---
This is mostly a iv-opts problem.
But note we still don't get the most optimal code with -fno-ivopts:
.L4:
movl8(%ebp), %ebx
movl(%ebx,%edx,4), %eax
movl20(%ebp), %ebx
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-13
18:14 ---
Here is the reduced testcase for the problem, it has nothing to do with loops
at all:
void
fcpy(float *restrict a, float *restrict b,
float *restrict aa, float *restrict bb, unsigned n)
{
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-13
17:54 ---
For PPC at least IV-OPTS should note that we have post increment and decrement
the pointers before
the loop and then increment all of them inside the loop, aka:
void
fcpy(float *restrict a, float *restric
--- Additional Comments From steven at gcc dot gnu dot org 2004-11-13
17:52 ---
At least x86 and ARM have {reg + reg OP const} addressing
modes. Unfortunately we rip such expressions apart already
in the gimplifier. This is something we canot fix properly
on trees. TER could perhap
--- 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
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-13
17:22 ---
Confirmed, the problem is that DOM does:
D.1192 = (unsigned int) i;
D.1194 = (float * restrict) D.1192 * 4B;
*(aa2 + D.1194) = *(a2 + D.1194);
*(bb2 + D.1194) = *(b2 + D.1194);
Note how we use D.119
13 matches
Mail list logo