[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2005-01-28 Thread steven at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-12-04 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-28 Thread rakdver at gcc dot gnu dot org
--- 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}

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-28 Thread giovannibajo at libero dot it
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-26 Thread rakdver at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-25 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-25 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-25 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-13 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-13 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-13 Thread steven at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-13 Thread pinskia at gcc dot gnu dot org
--- 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

[Bug tree-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-13 Thread pinskia at gcc dot gnu dot org
--- 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) {