GCC Bugzilla has been upgraded from version 4.4.9 to 5.0rc3. If you see any problem, please report it to bug 64968.
Bug 18507 - block_defs_stack varrray should not be GC'ed
Summary: block_defs_stack varrray should not be GC'ed
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.0.0
: P2 minor
Target Milestone: 4.0.0
Assignee: Andrew Pinski
URL:
Keywords: compile-time-hog, patch
Depends on:
Blocks: 8361 13776
  Show dependency treegraph
 
Reported: 2004-11-15 23:05 UTC by Andrew Pinski
Modified: 2004-12-01 00:50 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2004-11-16 15:52:57


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Pinski 2004-11-15 23:05:00 UTC
For 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.
Comment 1 Andrew Pinski 2004-11-16 15:52:54 UTC
Mine, this speeds up PR 13776 by 10 seconds or 7% (at -O3).
Comment 2 Andrew Pinski 2004-11-17 16:00:21 UTC
Patch here: <http://gcc.gnu.org/ml/gcc-patches/2004-11/msg01325.html>.
Comment 3 Andrew Pinski 2004-11-19 18:22:11 UTC
Fixed.
Comment 4 CVS Commits 2004-11-19 18:22:12 UTC
Subject: 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