--- Comment #53 from bergner at gcc dot gnu dot org 2008-04-09 15:38
---
Author: bergner
Date: Wed Apr 9 13:42:43 2008
New Revision: 134139
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=134139
Log:
PR middle-end/PR28690
* explow.c (break_out_memory_refs): Use
--- Comment #47 from ubizjak at gmail dot com 2008-04-08 06:39 ---
Author: bergner
Date: Mon Apr 7 17:36:59 2008
New Revision: 133985
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=133985
Log:
PR middle-end/PR28690
* rtlanal.c: Update copyright years.
--- Comment #48 from ubizjak at gmail dot com 2008-04-08 06:43 ---
(In reply to comment #47)
* rtlanal.c: Update copyright years.
(commutative_operand_precedence): Give SYMBOL_REF's the same precedence
This change causes regression in i686-pc-linux-gnu testsuite:
--- Comment #49 from bergner at gcc dot gnu dot org 2008-04-08 14:49
---
The offending hunk has been reverted in revision 134095.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28690
--- Comment #50 from bonzini at gnu dot org 2008-04-08 15:00 ---
I guess that you had modified the precedences in order to allow additional
simplifications. Can you report here what is missed using the current values?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28690
--- Comment #51 from bergner at gcc dot gnu dot org 2008-04-08 18:50
---
Ok, I dug into this a little deeper. For the following test case:
int array[1024];
void
clear_table (unsigned int n)
{
unsigned int i;
for (i = 0; i n; i++)
array[i] = 0;
}
compiling
--- Comment #52 from bonzini at gnu dot org 2008-04-08 19:07 ---
Subject: Re: [4.2 Regression] Performace problem with
indexed load/stores on powerpc
Index: explow.c
===
--- explow.c(revision 134095)
+++
--- Comment #46 from bergner at gcc dot gnu dot org 2008-01-16 01:51
---
This is fixed on mainline and we're not going to backport it to 4.2, so I'm
changing the target milestone.
--
bergner at gcc dot gnu dot org changed:
What|Removed |Added
--
steven at gcc dot gnu dot org changed:
What|Removed |Added
Status|WAITING |NEW
Last reconfirmed|2006-08-11 13:29:43 |2008-01-08
--- Comment #23 from janis at gcc dot gnu dot org 2006-10-12 17:23 ---
Subject: Bug 28690
Author: janis
Date: Thu Oct 12 17:23:10 2006
New Revision: 117668
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=117668
Log:
PR middle-end/28690
* explow.c (force_reg): Set
--- Comment #19 from bergner at vnet dot ibm dot com 2006-10-03 15:51
---
David has already said offline that he would reject any patch that would cause
us to view a non-REG_POINTER + REG_POINTER expression an not legitimate. I
agree with that.
Sorry, but I'm slowly learning the
--- Comment #20 from dje at gcc dot gnu dot org 2006-10-03 17:58 ---
Paolo, forcing all addresses through legitimize_address should not be the goal.
The wrong ordering has performance effects, but is not an invalid address.
While the performance effects on POWER-specific,
--- Comment #22 from dje at watson dot ibm dot com 2006-10-03 18:09 ---
Subject: Re: [4.2 Regression] Performace problem with indexed load/stores on
powerpc
I am not suggesting that the problem has to be solved in
swap_commutative_operands, etc. I would think that GCC should
--- Comment #21 from bonzini at gnu dot org 2006-10-03 18:07 ---
Note that I don't oppose at all fixing the problem in
swap_commutative_operands_p. At the very least, you have to change at the very
least simplify-rtx.c's uses of commutative_operand_precedence to use s_c_o_p
instead,
--- Comment #17 from bergner at vnet dot ibm dot com 2006-10-03 03:30
---
Created an attachment (id=12375)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12375action=view)
Patch to swap_commutative_operands_p and gen_addr_rtx to force base pointers
into rA position of indexed
--- Comment #18 from paolo dot bonzini at lu dot unisi dot ch 2006-10-03
05:20 ---
Subject: Re: [4.2 Regression] Performace problem with
indexed load/stores on powerpc
* rtlanal.c (swap_commutative_operands_p): Preference a REG_POINTER
over a non REG_POINTER.
--- Comment #12 from bergner at vnet dot ibm dot com 2006-09-22 16:30
---
Anton dicovered that we don't get multiple dimensioned arrays like the
following test case:
int indexedload(int ***base, int idx0, int idx1, int idx2)
{
return base[idx0][idx1][idx2];
}
This one leads to 3
--- Comment #13 from bergner at vnet dot ibm dot com 2006-09-22 16:56
---
Yet another test case from Anton we don't catch. Will they never end?!?! ;)
int indexedload(int *base, int len)
{
int i, sum = 0;
for (i=0; i len; i++)
sum += base[i];
return sum;
}
In this case,
--- Comment #14 from pinskia at gcc dot gnu dot org 2006-09-22 17:05
---
(In reply to comment #13)
Yet another test case from Anton we don't catch. Will they never end?!?! ;)
I bet a beer or a shot of vodka, that this is caused by MEM_REF not expanding
with a REG_POINTER.
--
On Fri, 2006-09-22 at 17:05 +, pinskia at gcc dot gnu dot org wrote:
--- Comment #14 from pinskia at gcc dot gnu dot org 2006-09-22 17:05
---
(In reply to comment #13)
Yet another test case from Anton we don't catch. Will they never end?!?! ;)
I bet a beer or a shot of
--- Comment #15 from pinskia at physics dot uc dot edu 2006-09-22 17:09
---
Subject: Re: [4.2 Regression] Performace problem
with indexed load/stores on powerpc
On Fri, 2006-09-22 at 17:05 +, pinskia at gcc dot gnu dot org wrote:
--- Comment #14 from pinskia at gcc
--- Comment #16 from sabre at nondot dot org 2006-09-22 17:27 ---
Out of curiosity, which powerpc processors are affected by this?
-Chris
--
sabre at nondot dot org changed:
What|Removed |Added
--- Comment #9 from bergner at vnet dot ibm dot com 2006-09-21 18:14
---
Created an attachment (id=12305)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12305action=view)
Patch to rs6000_legitimize_address to force base pointers into rA position of
indexed load/store instructions.
--- Comment #10 from bergner at vnet dot ibm dot com 2006-09-21 18:16
---
(From update of attachment 12190)
Forgot to obsolete this patch by the updated patch.
--
bergner at vnet dot ibm dot com changed:
What|Removed |Added
--- Comment #11 from bergner at vnet dot ibm dot com 2006-09-21 18:19
---
Created an attachment (id=12306)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12306action=view)
Alternate patch to rs6000_legitimize_address to force base pointers into rA
position of indexed load/store
--- Comment #8 from bergner at vnet dot ibm dot com 2006-09-07 05:14
---
Ok, this also passed regression tests on powerpc64-linux (32-bit and 64-bit
testsuite runs) for c, c++, fortran, objc, obj-c++ and java.
Does the attached patch look reasonable to everyone?
--
--- Comment #5 from bergner at vnet dot ibm dot com 2006-09-05 18:43
---
Created an attachment (id=12190)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12190action=view)
Patch to rs6000_legitimize_address to force base pointers into rA position of
indexed load/store instructions.
--- Comment #6 from bonzini at gnu dot org 2006-09-05 19:25 ---
To clarify, I make this suggestion because I think that we were getting it
right pre-4.2 just out of luck.
I also thought about having a lower commutative_operand_precedence for
REG_POINTER regs than normal regs, but in
--- Comment #7 from bergner at vnet dot ibm dot com 2006-09-05 20:01
---
Well, to get REG_POINTER regs to be the first operand, we'd need to increase
their commutative_operand_precedence. I tried that change already, but that
led to an infinite recursion loop while attempting to
--- Comment #4 from bonzini at gnu dot org 2006-09-03 13:51 ---
which ends up being -1 4, so we swap the operands. For powerpc, we'd
prefer the base pointer remain the first operand for performance reasons. I'd
like other people familar with this code to comment on how we can fix
--
mmitchel at gcc dot gnu dot org changed:
What|Removed |Added
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28690
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
CC||pinskia at gcc dot gnu dot
|
--- Comment #3 from bergner at vnet dot ibm dot com 2006-08-26 04:24
---
Ok, I tracked down where the expander is swapping the operands. It's occuring
at simplify-rtx.c:simplify_binary_operation() at line 1459:
/* Make sure the constant is second. */
if (GET_RTX_CLASS (code) ==
--- Comment #1 from dje at gcc dot gnu dot org 2006-08-11 13:29 ---
Confirmed
--
dje at gcc dot gnu dot org changed:
What|Removed |Added
Status|UNCONFIRMED
--- Comment #2 from dberlin at gcc dot gnu dot org 2006-08-11 14:33 ---
Subject: Re: [4.2 Regression] Performace problem with
indexed load/stores on powerpc
Here is the reassoc patch that puts them in the right order at the tree
level.
Index: tree-ssa-reassoc.c
35 matches
Mail list logo