--- Comment #9 from chrbr at gcc dot gnu dot org 2009-03-12 15:04 ---
The attached patch improves the SH generation, but I noticed a small regression
with the ARM that could make use before of a shifted constant addressing mode,
so not using the extra register for the value.
A target
--- Comment #10 from chrbr at gcc dot gnu dot org 2009-03-12 15:10 ---
Created an attachment (id=17447)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17447action=view)
SH illustrative patch
for feedback only. win on SH. lost on ARM
2009-03-12 Christian Bruel
--- Comment #2 from chrbr at gcc dot gnu dot org 2009-03-11 08:46 ---
I observed some large performance regressions in 4.3 and upwards for many
benchmarks for the superh targets, There are many causes but the main one is
reduced to the indirect+offset access :
int
foo (int tab[], int
--
chrbr at gcc dot gnu dot org changed:
What|Removed |Added
AssignedTo|unassigned at gcc dot gnu |chrbr at gcc dot gnu dot org
|dot org
--- Comment #3 from ebotcazou at gcc dot gnu dot org 2009-03-11 09:06
---
See http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01134.html
--
ebotcazou at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #4 from chrbr at gcc dot gnu dot org 2009-03-11 09:30 ---
(In reply to comment #3)
See http://gcc.gnu.org/ml/gcc-patches/2008-12/msg01134.html
Thanks, I tried your patch against a 4.3.3 base but it didn't fix the problem,
your patch canonicalizes while what I need is a
--- Comment #7 from ebotcazou at gcc dot gnu dot org 2009-03-11 10:25
---
I thought that the now what as with your patch. So it looks indeed like quite
similar to what I see. I'll try to see why it doesn't solve my case.
Reverting to the old canonicalization at the tree level is not
--- Comment #8 from chrbr at gcc dot gnu dot org 2009-03-11 14:07 ---
I have picky disabled the canonicalization in fold_plusminus_mult_expr for
identical constants that are power of 2, so my mov @(disp, rn) is back :-(. For
some reason your patch let the base+index computation