* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
@ 2012-06-06 19:54 ` gjl at gcc dot gnu.org
2012-06-06 19:56 ` gjl at gcc dot gnu.org
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 19:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #1 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 19:54:34 UTC ---
Created attachment 27570
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27570
ira dump of older version (good)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
2012-06-06 19:54 ` [Bug rtl-optimization/53595] " gjl at gcc dot gnu.org
@ 2012-06-06 19:56 ` gjl at gcc dot gnu.org
2012-06-06 19:57 ` gjl at gcc dot gnu.org
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 19:56 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 19:55:49 UTC ---
Created attachment 27571
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27571
ira dump of newer version (+10%)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
2012-06-06 19:54 ` [Bug rtl-optimization/53595] " gjl at gcc dot gnu.org
2012-06-06 19:56 ` gjl at gcc dot gnu.org
@ 2012-06-06 19:57 ` gjl at gcc dot gnu.org
2012-06-06 19:58 ` gjl at gcc dot gnu.org
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 19:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #3 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 19:56:57 UTC ---
Created attachment 27572
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27572
reload dump of older version (good)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (2 preceding siblings ...)
2012-06-06 19:57 ` gjl at gcc dot gnu.org
@ 2012-06-06 19:58 ` gjl at gcc dot gnu.org
2012-06-06 20:01 ` jakub at gcc dot gnu.org
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 19:58 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #4 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 19:58:10 UTC ---
Created attachment 27573
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27573
reload dump of newer version (+10%)
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (3 preceding siblings ...)
2012-06-06 19:58 ` gjl at gcc dot gnu.org
@ 2012-06-06 20:01 ` jakub at gcc dot gnu.org
2012-06-06 20:05 ` gjl at gcc dot gnu.org
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: jakub at gcc dot gnu.org @ 2012-06-06 20:01 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-06-06 20:01:06 UTC ---
That's not very narrow interval. Please bisect what affected it (or what
affected it most).
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (4 preceding siblings ...)
2012-06-06 20:01 ` jakub at gcc dot gnu.org
@ 2012-06-06 20:05 ` gjl at gcc dot gnu.org
2012-06-06 20:12 ` gjl at gcc dot gnu.org
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 20:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #6 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 20:05:02 UTC ---
And here is the first part of the diff of the reload dumps that shows that
something weird is going on:
--- bresenham-i-1.198r.reload Wed Jun 6 19:59:24 2012
+++ bresenham-i-2.198r.reload Wed Jun 6 19:59:26 2012
@@ -273,123 +273,378 @@
changing reg in insn 251
changing reg in insn 249
changing reg in insn 252
+Spilling for insn 40.
+Using reg 30 for reload 0
+Spilling for insn 44.
+Using reg 26 for reload 0
+Spilling for insn 45.
+Using reg 28 for reload 0
Spilling for insn 65.
+Using reg 28 for reload 0
Spilling for insn 68.
+Using reg 28 for reload 0
Spilling for insn 71.
+Using reg 28 for reload 0
Spilling for insn 75.
+Using reg 28 for reload 0
Spilling for insn 76.
+Using reg 28 for reload 0
Spilling for insn 78.
+Using reg 26 for reload 0
+Spilling for insn 248.
+Using reg 30 for reload 0
+Spilling for insn 249.
+Using reg 30 for reload 0
Spilling for insn 202.
+Using reg 30 for reload 0
Spilling for insn 203.
+Using reg 30 for reload 0
+Spilling for insn 96.
+Using reg 30 for reload 0
+Spilling for insn 204.
+Using reg 30 for reload 0
+Spilling for insn 205.
+Using reg 30 for reload 0
+Spilling for insn 108.
+Using reg 28 for reload 0
+Spilling for insn 112.
+Using reg 28 for reload 0
+Spilling for insn 114.
+Using reg 28 for reload 0
Spilling for insn 142.
+Using reg 28 for reload 0
Spilling for insn 143.
+Using reg 30 for reload 0
Spilling for insn 144.
+Using reg 30 for reload 0
Spilling for insn 145.
+Using reg 30 for reload 0
Spilling for insn 146.
+Using reg 30 for reload 0
+Spilling for insn 154.
+Using reg 30 for reload 0
+Spilling for insn 159.
+Using reg 30 for reload 0
+Spilling for insn 165.
+Using reg 30 for reload 0
+Spilling for insn 170.
+Using reg 30 for reload 0
Spilling for insn 176.
+Using reg 30 for reload 0
Spilling for insn 179.
+Using reg 30 for reload 0
+Spilling for insn 40.
+Using reg 30 for reload 0
+Spilling for insn 44.
+Using reg 26 for reload 0
+Spilling for insn 45.
+Using reg 28 for reload 0
+Spilling for insn 65.
+Using reg 28 for reload 0
+Spilling for insn 68.
+Using reg 28 for reload 0
+Spilling for insn 71.
+Using reg 28 for reload 0
+Spilling for insn 75.
+Using reg 28 for reload 0
+Spilling for insn 76.
+Using reg 28 for reload 0
+Spilling for insn 78.
+Using reg 26 for reload 0
+Spilling for insn 248.
+Using reg 30 for reload 0
+Spilling for insn 249.
+Using reg 30 for reload 0
+Spilling for insn 202.
+Using reg 30 for reload 0
+Spilling for insn 203.
+Using reg 30 for reload 0
+Spilling for insn 96.
+Using reg 30 for reload 0
+Spilling for insn 204.
+Using reg 30 for reload 0
+Spilling for insn 205.
+Using reg 30 for reload 0
+Spilling for insn 108.
+Using reg 28 for reload 0
+Spilling for insn 112.
+Using reg 28 for reload 0
+Spilling for insn 114.
+Using reg 28 for reload 0
+Spilling for insn 142.
+Using reg 28 for reload 0
+Spilling for insn 143.
+Using reg 30 for reload 0
+Spilling for insn 144.
+Using reg 30 for reload 0
+Spilling for insn 145.
+Using reg 30 for reload 0
+Spilling for insn 146.
+Using reg 30 for reload 0
+Spilling for insn 154.
+Using reg 30 for reload 0
+Spilling for insn 159.
+Using reg 30 for reload 0
+Spilling for insn 165.
+Using reg 30 for reload 0
+Spilling for insn 170.
+Using reg 30 for reload 0
+Spilling for insn 176.
+Using reg 30 for reload 0
+Spilling for insn 179.
+Using reg 30 for reload 0
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (5 preceding siblings ...)
2012-06-06 20:05 ` gjl at gcc dot gnu.org
@ 2012-06-06 20:12 ` gjl at gcc dot gnu.org
2012-06-07 13:25 ` gjl at gcc dot gnu.org
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-06 20:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #7 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-06 20:12:19 UTC ---
(In reply to comment #5)
> That's not very narrow interval. Please bisect what affected it (or what
> affected it most).
The only changes to 4_7-branch in the IRA/reload area was for PR52804.
Will take until friday to before I can look deeper into it.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (6 preceding siblings ...)
2012-06-06 20:12 ` gjl at gcc dot gnu.org
@ 2012-06-07 13:25 ` gjl at gcc dot gnu.org
2012-06-07 13:27 ` gjl at gcc dot gnu.org
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-07 13:25 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
Georg-Johann Lay <gjl at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |avr
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-06-07
CC| |vmakarov at redhat dot com
Ever Confirmed|0 |1
--- Comment #8 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-07 13:24:51 UTC ---
(In reply to comment #5)
> That's not very narrow interval. Please bisect what affected it (or what
> affected it most).
CCing Vladimir
It is caused by fix for PR53065 in
http://gcc.gnu.org/viewcvs?view=revision&revision=186770
--- branches/gcc-4_7-branch/gcc/config/avr/avr.h 2012/04/24 15:23:22
186769
+++ branches/gcc-4_7-branch/gcc/config/avr/avr.h 2012/04/24 15:23:46
186770
@@ -394,6 +394,11 @@
#define REGNO_OK_FOR_INDEX_P(NUM) 0
+#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \
+ (((REGNO) < 18 && (REGNO) + GET_MODE_SIZE (MODE) > 18) \
+ || ((REGNO) < REG_Y && (REGNO) + GET_MODE_SIZE (MODE) > REG_Y) \
+ || ((REGNO) < REG_Z && (REGNO) + GET_MODE_SIZE (MODE) > REG_Z))
+
What's really confusing to me is that this macro is called with invalid
registers, i.e with registers that HARD_REGNO_MODE_OK will reject.
If the macro returns false for the invalid registers, the performance
regression goes away.
Vladimir, is it save to return 0 for invalid hard registers?
What's the point with generating different code when invalid registers are
treated differently? As far as I can see the hard register is not about
SUBREGs, it contains a pointer.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (7 preceding siblings ...)
2012-06-07 13:25 ` gjl at gcc dot gnu.org
@ 2012-06-07 13:27 ` gjl at gcc dot gnu.org
2012-06-07 13:31 ` gjl at gcc dot gnu.org
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-07 13:27 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #9 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-07 13:27:33 UTC ---
Created attachment 27576
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27576
pr53595.diff
And here is a tentative patch:
Let HARD_REGNO_CALL_PART_CLOBBERED return false if HARD_REGNO_MODE_OK is false.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (8 preceding siblings ...)
2012-06-07 13:27 ` gjl at gcc dot gnu.org
@ 2012-06-07 13:31 ` gjl at gcc dot gnu.org
2012-06-08 17:04 ` gjl at gcc dot gnu.org
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-07 13:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
Georg-Johann Lay <gjl at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #27576|0 |1
is obsolete| |
--- Comment #10 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-07 13:31:32 UTC ---
Created attachment 27577
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27577
pr53595.diff: tentative patch
Better return 0 as false...
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (9 preceding siblings ...)
2012-06-07 13:31 ` gjl at gcc dot gnu.org
@ 2012-06-08 17:04 ` gjl at gcc dot gnu.org
2012-06-28 13:54 ` gjl at gcc dot gnu.org
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-08 17:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #11 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-08 17:04:41 UTC ---
FYI, the patch attachment 27568 also resolves the strange error described in
PR53615, at least for the test case given there.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (10 preceding siblings ...)
2012-06-08 17:04 ` gjl at gcc dot gnu.org
@ 2012-06-28 13:54 ` gjl at gcc dot gnu.org
2012-06-28 13:58 ` gjl at gcc dot gnu.org
2012-06-28 14:02 ` [Bug other/53595] " gjl at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-28 13:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #12 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-28 13:53:59 UTC ---
Author: gjl
Date: Thu Jun 28 13:53:51 2012
New Revision: 189049
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189049
Log:
PR 53595
* config/avr/avr.c (avr_hard_regno_call_part_clobbered): New.
* config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered): New.
* config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Forward to
avr_hard_regno_call_part_clobbered.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/avr/avr-protos.h
trunk/gcc/config/avr/avr.c
trunk/gcc/config/avr/avr.h
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (11 preceding siblings ...)
2012-06-28 13:54 ` gjl at gcc dot gnu.org
@ 2012-06-28 13:58 ` gjl at gcc dot gnu.org
2012-06-28 14:02 ` [Bug other/53595] " gjl at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-28 13:58 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
--- Comment #13 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-28 13:58:37 UTC ---
Author: gjl
Date: Thu Jun 28 13:58:32 2012
New Revision: 189050
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189050
Log:
Backport from 2012-06-28 mainline r189049
PR 53595
* config/avr/avr.c (avr_hard_regno_call_part_clobbered): New.
* config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered): New.
* config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Forward to
avr_hard_regno_call_part_clobbered.
Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/config/avr/avr-protos.h
branches/gcc-4_7-branch/gcc/config/avr/avr.c
branches/gcc-4_7-branch/gcc/config/avr/avr.h
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Bug other/53595] Code size increase of +10% between two 4.7.1 snapshot
2012-06-06 19:53 [Bug rtl-optimization/53595] New: Code size increase of +10% between two 4.7.1 snapshot gjl at gcc dot gnu.org
` (12 preceding siblings ...)
2012-06-28 13:58 ` gjl at gcc dot gnu.org
@ 2012-06-28 14:02 ` gjl at gcc dot gnu.org
13 siblings, 0 replies; 15+ messages in thread
From: gjl at gcc dot gnu.org @ 2012-06-28 14:02 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595
Georg-Johann Lay <gjl at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ra
Status|NEW |RESOLVED
Component|rtl-optimization |other
Resolution| |FIXED
Target Milestone|--- |4.7.2
--- Comment #14 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2012-06-28 14:02:39 UTC ---
Rather worked around than a proper fix of the call site, e.g.
ira-costs.c:ira_tune_allocno_costs
^ permalink raw reply [flat|nested] 15+ messages in thread