* [Bug middle-end/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
@ 2008-12-20 15:53 ` steven at gcc dot gnu dot org
2008-12-22 7:55 ` pinskia at gcc dot gnu dot org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2008-12-20 15:53 UTC (permalink / raw)
To: gcc-bugs
--
steven at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2008-12-20 15:47:21
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
2008-12-20 15:53 ` [Bug middle-end/38582] " steven at gcc dot gnu dot org
@ 2008-12-22 7:55 ` pinskia at gcc dot gnu dot org
2009-01-03 15:27 ` steven at gcc dot gnu dot org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-12-22 7:55 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from pinskia at gcc dot gnu dot org 2008-12-22 07:54 -------
PR 15023 was about -frename-registers being slow.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
OtherBugsDependingO| |15023
nThis| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
2008-12-20 15:53 ` [Bug middle-end/38582] " steven at gcc dot gnu dot org
2008-12-22 7:55 ` pinskia at gcc dot gnu dot org
@ 2009-01-03 15:27 ` steven at gcc dot gnu dot org
2009-10-18 7:01 ` jv244 at cam dot ac dot uk
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: steven at gcc dot gnu dot org @ 2009-01-03 15:27 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from steven at gcc dot gnu dot org 2009-01-03 15:24 -------
*** Bug 15023 has been marked as a duplicate of this bug. ***
--
steven at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
` (2 preceding siblings ...)
2009-01-03 15:27 ` steven at gcc dot gnu dot org
@ 2009-10-18 7:01 ` jv244 at cam dot ac dot uk
2009-11-12 18:13 ` [Bug rtl-optimization/38582] " bernds at gcc dot gnu dot org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-10-18 7:01 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from jv244 at cam dot ac dot uk 2009-10-18 07:01 -------
partial patch http://gcc.gnu.org/ml/gcc-patches/2009-10/msg01130.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
` (3 preceding siblings ...)
2009-10-18 7:01 ` jv244 at cam dot ac dot uk
@ 2009-11-12 18:13 ` bernds at gcc dot gnu dot org
2009-11-26 21:35 ` bernds at gcc dot gnu dot org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: bernds at gcc dot gnu dot org @ 2009-11-12 18:13 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from bernds at gcc dot gnu dot org 2009-11-12 18:12 -------
Subject: Bug 38582
Author: bernds
Date: Thu Nov 12 18:12:09 2009
New Revision: 154123
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154123
Log:
PR rtl-opt/38582
* regrename.c (struct du_head): New structure; some elements moved
from...
(struct du_chain): ... this one.
(open_chains, closed_chains): Now of type struct du_head *.
(do_replace): Accept du_head argument, not du_chain. All callers
changed. Modified code to match new data structures.
(build_def_use): Return a list of du_head structures. Modified code
to match new data structures.
(dump_def_use_chain): Accept du_head argument, not du_chain. All
callers changed. Modified code to match new data structures.
(merge_overlapping_regs): Accept du_head argument, not du_chain. All
callers changed. Modified code to match new data structures.
(scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
Allocate a du_head structure as well as a du_chain when creating a
new chain. Modified other code to match new data structures.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/regrename.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
` (4 preceding siblings ...)
2009-11-12 18:13 ` [Bug rtl-optimization/38582] " bernds at gcc dot gnu dot org
@ 2009-11-26 21:35 ` bernds at gcc dot gnu dot org
2009-11-26 21:42 ` bernds at gcc dot gnu dot org
2009-11-27 8:55 ` jv244 at cam dot ac dot uk
7 siblings, 0 replies; 9+ messages in thread
From: bernds at gcc dot gnu dot org @ 2009-11-26 21:35 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from bernds at gcc dot gnu dot org 2009-11-26 21:35 -------
Subject: Bug 38582
Author: bernds
Date: Thu Nov 26 21:35:35 2009
New Revision: 154687
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154687
Log:
PR rtl-opt/38582
* regrename.c (struct du_chain): Remove member earlyclobber.
(scan_rtx_reg): Don't set it. Remove argument earlyclobber,
all callers changed.
(scan_rtx): Remove argument earlyclobber, all callers changed.
(hide_operands, restore_operands, record_out_operands): New functions,
broken out of build_def_use.
(build_def_use): Call them as necessary.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/regrename.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
` (5 preceding siblings ...)
2009-11-26 21:35 ` bernds at gcc dot gnu dot org
@ 2009-11-26 21:42 ` bernds at gcc dot gnu dot org
2009-11-27 8:55 ` jv244 at cam dot ac dot uk
7 siblings, 0 replies; 9+ messages in thread
From: bernds at gcc dot gnu dot org @ 2009-11-26 21:42 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from bernds at gcc dot gnu dot org 2009-11-26 21:41 -------
Subject: Bug 38582
Author: bernds
Date: Thu Nov 26 21:41:42 2009
New Revision: 154688
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154688
Log:
PR rtl-opt/38582
* regrename.c (struct du_head): New members id, conflicts,
hard_conflicts and cannot_rename.
(enum scan_actions): Remove terminate_all_read and
terminate_overlapping_read; add mark_all_read.
(scan_actions_name): Likewise.
(du_head_p): New typedef. Define a vector type for it.
(id_to_chain): New static variable.
(note_sets, clear_dead_regs): Delete functions.
(free_chain_data): New function.
(merge_overlapping_regs): Simply walk the conflicts bitmap.
Remove argument B, all callers changed.
(regrename_optimize): Allocate id_to_chain. Ignore chains that have
the cannot_rename bit set. Update regno and nregs of a renamed chain.
Call free_chain_data when done.
(do_replace): Remove death notes when the renamed reg is set in the
last insn; add them if not.
(mark_conflict, note_sets_clobbers): New static function.
(fail_current_block, current_id, open_chains_set, live_hard_regs): New
static variables.
(scan_rtx_reg): Keep track of conflicts between chains, and between
chains and hard regs. Don't terminate chains when we find a read we
can't handle, mark it unrenameable instead. For terminate_write,
terminate chains that are written with an exact match or a superset
of registers. Set fail_current_block if multi-word lifetimes are too
complex to handle.
(scan_rtx_address): Use mark_all_read instead of terminate_all_read.
(build_def_use): Initialize current_id, live_chains and live_hard_regs;
free memory for them when done.
Rearrange the steps so that earlyclobbers are noted before reads
are processed. Add new steps to keep track of hard register lifetimes
outside insn operands.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/regrename.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug rtl-optimization/38582] excessive time in rename registers
2008-12-20 11:17 [Bug middle-end/38582] New: excessive time in rename registers jv244 at cam dot ac dot uk
` (6 preceding siblings ...)
2009-11-26 21:42 ` bernds at gcc dot gnu dot org
@ 2009-11-27 8:55 ` jv244 at cam dot ac dot uk
7 siblings, 0 replies; 9+ messages in thread
From: jv244 at cam dot ac dot uk @ 2009-11-27 8:55 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from jv244 at cam dot ac dot uk 2009-11-27 08:55 -------
Time report shows this is now fixed at -O3. Great job!
Execution times (seconds)
garbage collection : 7.60 ( 1%) usr 0.03 ( 0%) sys 7.65 ( 1%) wall
0 kB ( 0%) ggc
callgraph construction: 0.23 ( 0%) usr 0.01 ( 0%) sys 0.25 ( 0%) wall
12524 kB ( 1%) ggc
callgraph optimization: 0.48 ( 0%) usr 0.03 ( 0%) sys 0.51 ( 0%) wall
4370 kB ( 0%) ggc
ipa cp : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
2061 kB ( 0%) ggc
ipa reference : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
0 kB ( 0%) ggc
ipa pure const : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
2 kB ( 0%) ggc
cfg cleanup : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
0 kB ( 0%) ggc
CFG verifier : 11.18 ( 1%) usr 0.04 ( 0%) sys 11.25 ( 1%) wall
0 kB ( 0%) ggc
trivially dead code : 2.70 ( 0%) usr 0.01 ( 0%) sys 2.72 ( 0%) wall
0 kB ( 0%) ggc
df multiple defs : 3.28 ( 0%) usr 0.00 ( 0%) sys 3.28 ( 0%) wall
0 kB ( 0%) ggc
df reaching defs : 1.30 ( 0%) usr 0.04 ( 0%) sys 1.33 ( 0%) wall
0 kB ( 0%) ggc
df live regs : 11.46 ( 1%) usr 0.01 ( 0%) sys 11.47 ( 1%) wall
0 kB ( 0%) ggc
df live&initialized regs: 6.86 ( 1%) usr 0.02 ( 0%) sys 6.87 ( 1%) wall
0 kB ( 0%) ggc
df use-def / def-use chains: 3.87 ( 0%) usr 0.02 ( 0%) sys 3.91 ( 0%)
wall 0 kB ( 0%) ggc
df reg dead/unused notes: 9.18 ( 1%) usr 0.01 ( 0%) sys 9.23 ( 1%) wall
28894 kB ( 2%) ggc
register information : 3.54 ( 0%) usr 0.02 ( 0%) sys 3.58 ( 0%) wall
0 kB ( 0%) ggc
alias analysis : 5.55 ( 1%) usr 0.01 ( 0%) sys 5.60 ( 1%) wall
42254 kB ( 4%) ggc
alias stmt walking : 0.23 ( 0%) usr 0.11 ( 1%) sys 0.33 ( 0%) wall
0 kB ( 0%) ggc
register scan : 0.70 ( 0%) usr 0.00 ( 0%) sys 0.71 ( 0%) wall
4 kB ( 0%) ggc
rebuild jump labels : 1.43 ( 0%) usr 0.00 ( 0%) sys 1.46 ( 0%) wall
0 kB ( 0%) ggc
parser : 4.66 ( 1%) usr 0.11 ( 1%) sys 4.78 ( 1%) wall
50732 kB ( 4%) ggc
inline heuristics : 40.66 ( 5%) usr 8.08 (51%) sys 48.90 ( 6%) wall
112 kB ( 0%) ggc
integration : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
951 kB ( 0%) ggc
tree gimplify : 0.67 ( 0%) usr 0.00 ( 0%) sys 0.67 ( 0%) wall
13182 kB ( 1%) ggc
tree eh : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
tree CFG construction : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
172 kB ( 0%) ggc
tree CFG cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
1 kB ( 0%) ggc
tree VRP : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
425 kB ( 0%) ggc
tree copy propagation : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall
139 kB ( 0%) ggc
tree find ref. vars : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
3262 kB ( 0%) ggc
tree PTA : 21.39 ( 3%) usr 0.38 ( 2%) sys 21.76 ( 3%) wall
371 kB ( 0%) ggc
tree PHI insertion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
tree SSA rewrite : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
8504 kB ( 1%) ggc
tree SSA other : 0.04 ( 0%) usr 0.01 ( 0%) sys 0.05 ( 0%) wall
18 kB ( 0%) ggc
tree SSA incremental : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
24 kB ( 0%) ggc
tree operand scan : 0.04 ( 0%) usr 0.07 ( 0%) sys 0.10 ( 0%) wall
4721 kB ( 0%) ggc
dominator optimization: 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
68 kB ( 0%) ggc
tree SRA : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
86 kB ( 0%) ggc
tree CCP : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall
105 kB ( 0%) ggc
tree reassociation : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
48 kB ( 0%) ggc
tree PRE : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
171 kB ( 0%) ggc
tree FRE : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
140 kB ( 0%) ggc
tree code sinking : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
24 kB ( 0%) ggc
tree linearize phis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
14 kB ( 0%) ggc
tree forward propagate: 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
7 kB ( 0%) ggc
tree conservative DCE : 0.40 ( 0%) usr 0.05 ( 0%) sys 0.46 ( 0%) wall
0 kB ( 0%) ggc
tree aggressive DCE : 0.21 ( 0%) usr 0.03 ( 0%) sys 0.19 ( 0%) wall
319 kB ( 0%) ggc
tree buildin call DCE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
tree DSE : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
8 kB ( 0%) ggc
complete unrolling : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
43 kB ( 0%) ggc
tree vectorization : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree slp vectorization: 0.03 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
27 kB ( 0%) ggc
tree rename SSA copies: 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
0 kB ( 0%) ggc
tree SSA verifier : 2.85 ( 0%) usr 0.02 ( 0%) sys 2.83 ( 0%) wall
0 kB ( 0%) ggc
tree STMT verifier : 13.12 ( 2%) usr 0.06 ( 0%) sys 13.20 ( 2%) wall
0 kB ( 0%) ggc
callgraph verifier : 1.85 ( 0%) usr 0.00 ( 0%) sys 1.86 ( 0%) wall
0 kB ( 0%) ggc
dominance computation : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
expand : 548.68 (65%) usr 4.27 (27%) sys 552.92 (64%) wall
311209 kB (26%) ggc
lower subreg : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
0 kB ( 0%) ggc
forward prop : 6.49 ( 1%) usr 0.08 ( 1%) sys 6.57 ( 1%) wall
18623 kB ( 2%) ggc
CSE : 4.60 ( 1%) usr 0.02 ( 0%) sys 4.62 ( 1%) wall
11149 kB ( 1%) ggc
dead code elimination : 2.60 ( 0%) usr 0.01 ( 0%) sys 2.60 ( 0%) wall
0 kB ( 0%) ggc
dead store elim1 : 3.33 ( 0%) usr 0.22 ( 1%) sys 3.51 ( 0%) wall
27472 kB ( 2%) ggc
dead store elim2 : 8.94 ( 1%) usr 0.02 ( 0%) sys 8.92 ( 1%) wall
40503 kB ( 3%) ggc
CPROP : 3.82 ( 0%) usr 0.01 ( 0%) sys 3.84 ( 0%) wall
10 kB ( 0%) ggc
CSE 2 : 4.43 ( 1%) usr 0.02 ( 0%) sys 4.44 ( 1%) wall
7115 kB ( 1%) ggc
branch prediction : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
43 kB ( 0%) ggc
combiner : 3.60 ( 0%) usr 0.03 ( 0%) sys 3.62 ( 0%) wall
13773 kB ( 1%) ggc
regmove : 1.00 ( 0%) usr 0.01 ( 0%) sys 1.00 ( 0%) wall
0 kB ( 0%) ggc
integrated RA : 30.06 ( 4%) usr 0.29 ( 2%) sys 30.38 ( 4%) wall
52314 kB ( 4%) ggc
reload : 11.54 ( 1%) usr 0.52 ( 3%) sys 12.09 ( 1%) wall
216344 kB (18%) ggc
reload CSE regs : 9.15 ( 1%) usr 0.01 ( 0%) sys 9.16 ( 1%) wall
59432 kB ( 5%) ggc
load CSE after reload : 0.53 ( 0%) usr 0.01 ( 0%) sys 0.53 ( 0%) wall
0 kB ( 0%) ggc
thread pro- & epilogue: 0.86 ( 0%) usr 0.00 ( 0%) sys 0.86 ( 0%) wall
302 kB ( 0%) ggc
if-conversion 2 : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
24 kB ( 0%) ggc
combine stack adjustments: 0.18 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall
0 kB ( 0%) ggc
peephole 2 : 1.07 ( 0%) usr 0.00 ( 0%) sys 1.07 ( 0%) wall
27 kB ( 0%) ggc
hard reg cprop : 3.83 ( 0%) usr 0.00 ( 0%) sys 3.85 ( 0%) wall
2 kB ( 0%) ggc
scheduling 2 : 20.89 ( 2%) usr 0.83 ( 5%) sys 21.75 ( 3%) wall
125198 kB (10%) ggc
machine dep reorg : 1.51 ( 0%) usr 0.00 ( 0%) sys 1.53 ( 0%) wall
0 kB ( 0%) ggc
reorder blocks : 0.31 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall
1 kB ( 0%) ggc
final : 3.47 ( 0%) usr 0.13 ( 1%) sys 3.56 ( 0%) wall
1631 kB ( 0%) ggc
symout : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
4315 kB ( 0%) ggc
variable tracking : 15.85 ( 2%) usr 0.03 ( 0%) sys 15.90 ( 2%) wall
133442 kB (11%) ggc
TOTAL : 844.13 15.69 860.19
1197120 kB
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.
COLLECT_GCC_OPTIONS='-ffree-line-length-512' '-g' '-ffree-form' '-ftime-report'
'-c' '-O3' '-ffree-line-length-512' '-v' '-mtune=generic'
as -V -Qy -o PR38582.o /tmp/ccoKMKzI.s
--
jv244 at cam dot ac dot uk changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38582
^ permalink raw reply [flat|nested] 9+ messages in thread