185072004-11-15 23:05:00 +0000block_defs_stack varrray should not be GC'ed2004-12-01 00:50:07 +0000111Unclassifiedgcctree-optimization4.0.0AllAllRESOLVEDFIXEDcompile-time-hog, patchP2minor4.0.08361137761pinskiapinskiagcc-bugs2004-11-16 15:52:57oldest_to_newest1030590pinskia2004-11-15 23:05:00 +0000For the testcase in PR 13776 (ir.ii) we spend a lot of time (10% out of 120 seconds) in ggc_alloc.
Most of that time comes from creatting/expanding the block_defs_stack varray in tree-into-ssa.c
Why is this GC allocated in the first place?
Maybe this should be a non-gc'ed VEC.
We know that this varray does not spill out from rewrite_blocks/rewrite_ssa_into_ssa at all.1031281pinskia2004-11-16 15:52:54 +0000Mine, this speeds up PR 13776 by 10 seconds or 7% (at -O3).1032082pinskia2004-11-17 16:00:21 +0000Patch here: <http://gcc.gnu.org/ml/gcc-patches/2004-11/msg01325.html>.1033823pinskia2004-11-19 18:22:11 +0000Fixed.1033834cvs-commit2004-11-19 18:22:12 +0000Subject: Bug 18507
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: pinskia@gcc.gnu.org 2004-11-19 18:22:00
Modified files:
gcc : tree-flow.h tree-ssa-dom.c tree-into-ssa.c
ChangeLog
Log message:
2004-11-19 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/18507
* tree-flow.h (tree2): Typedef because there is already a VEC(tree).
Define a VEC(tree2) for head.
(register_new_def): Change second argument to be a VEC(tree2).
* tree-ssa-dom.c (block_defs_stack): Change to be a VEC(tree2).
(tree_ssa_dominator_optimize): Initialize block_defs_stack with
the VEC(tree2) function. Also free it before returning.
(dom_opt_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
(restore_currdefs_to_original_value): Use VEC_length instead of
VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
(dom_opt_finalize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
* tree-into-ssa.c (block_defs_stack): Change to be a VEC(tree2).
(rewrite_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
for block_defs_stack.
(ssa_register_new_def): Likewise.
(ssa_rewrite_initialize_block): Likewise.
(rewrite_finalize_block): Use VEC_length instead of
VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
(ssa_rewrite_finalize_block): Likewise.
(register_new_def): Change second argument to be a VEC(tree2).
Use VEC_safe_push instead of VARRAY_PUSH_TREE.
(rewrite_blocks): Initialize block_defs_stack with
the VEC(tree2) function. Also free it before returning.
(rewrite_ssa_into_ssa): Likewise.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-flow.h.diff?cvsroot=gcc&r1=2.66&r2=2.67
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-dom.c.diff?cvsroot=gcc&r1=2.67&r2=2.68
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-into-ssa.c.diff?cvsroot=gcc&r1=2.30&r2=2.31
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.6416&r2=2.6417