From: jakub Date: Thu, 8 Jan 2009 16:01:42 +0000 (+0000) Subject: PR tree-optimization/37031 X-Git-Tag: upstream/4.9.2~38203 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12c697cd044562794c83205e4ac9f6bbab6ae5ee;p=platform%2Fupstream%2Flinaro-gcc.git PR tree-optimization/37031 * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy on parameter_set. (build_access_matrix): Reserve correct size for AM_MATRIX vector, allocate it using gc instead of heap, use VEC_quick_push instead of VEC_safe_push. * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc instead of heap, use VEC_quick_push instead of VEC_safe_push. * tree-data-ref.h (struct access_matrix): Change matrix to gc allocated vector from heap allocated. * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector. * tree-loop-linear.c (linear_transform_loops): Allocate nest vector only after perfect_loop_nest_depth call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143188 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a985b50..8f7a68d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2009-01-08 Jakub Jelinek + + PR tree-optimization/37031 + * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy + on parameter_set. + (build_access_matrix): Reserve correct size for AM_MATRIX vector, + allocate it using gc instead of heap, use VEC_quick_push instead of + VEC_safe_push. + * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc + instead of heap, use VEC_quick_push instead of VEC_safe_push. + * tree-data-ref.h (struct access_matrix): Change matrix to gc + allocated vector from heap allocated. + * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector. + * tree-loop-linear.c (linear_transform_loops): Allocate nest + vector only after perfect_loop_nest_depth call. + 2009-01-08 Sebastian Pop Jan Sjodin diff --git a/gcc/graphite.c b/gcc/graphite.c index c90ba96..27cadf3 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -1,5 +1,5 @@ /* Gimple Represented as Polyhedra. - Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Sebastian Pop . This file is part of GCC. @@ -3630,7 +3630,7 @@ build_access_matrix (data_reference_p ref, graphite_bb_p gb) int i, ndim = DR_NUM_DIMENSIONS (ref); struct access_matrix *am = GGC_NEW (struct access_matrix); - AM_MATRIX (am) = VEC_alloc (lambda_vector, heap, ndim); + AM_MATRIX (am) = VEC_alloc (lambda_vector, gc, ndim); DR_SCOP (ref) = GBB_SCOP (gb); for (i = 0; i < ndim; i++) @@ -3642,7 +3642,7 @@ build_access_matrix (data_reference_p ref, graphite_bb_p gb) if (!build_access_matrix_with_af (af, v, scop, ref_nb_loops (ref))) return false; - VEC_safe_push (lambda_vector, heap, AM_MATRIX (am), v); + VEC_quick_push (lambda_vector, AM_MATRIX (am), v); } DR_ACCESS_MATRIX (ref) = am; diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c index 1bf9ddf..794d4e8 100644 --- a/gcc/lambda-code.c +++ b/gcc/lambda-code.c @@ -1,5 +1,6 @@ /* Loop transformation code generation - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. @@ -2682,6 +2683,7 @@ lambda_collect_parameters (VEC (data_reference_p, heap) *datarefs, for (j = 0; j < DR_NUM_DIMENSIONS (data_reference); j++) lambda_collect_parameters_from_af (DR_ACCESS_FN (data_reference, j), parameter_set, parameters); + pointer_set_destroy (parameter_set); } /* Translates BASE_EXPR to vector CY. AM is needed for inferring @@ -2792,15 +2794,13 @@ build_access_matrix (data_reference_p data_reference, unsigned i, ndim = DR_NUM_DIMENSIONS (data_reference); unsigned nivs = VEC_length (loop_p, nest); unsigned lambda_nb_columns; - lambda_vector_vec_p matrix; AM_LOOP_NEST (am) = nest; AM_NB_INDUCTION_VARS (am) = nivs; AM_PARAMETERS (am) = parameters; lambda_nb_columns = AM_NB_COLUMNS (am); - matrix = VEC_alloc (lambda_vector, heap, lambda_nb_columns); - AM_MATRIX (am) = matrix; + AM_MATRIX (am) = VEC_alloc (lambda_vector, gc, ndim); for (i = 0; i < ndim; i++) { @@ -2810,7 +2810,7 @@ build_access_matrix (data_reference_p data_reference, if (!av_for_af (access_function, access_vector, am)) return false; - VEC_safe_push (lambda_vector, heap, matrix, access_vector); + VEC_quick_push (lambda_vector, AM_MATRIX (am), access_vector); } DR_ACCESS_MATRIX (data_reference) = am; diff --git a/gcc/lambda.h b/gcc/lambda.h index 2d321fb..94ca906 100644 --- a/gcc/lambda.h +++ b/gcc/lambda.h @@ -1,5 +1,6 @@ /* Lambda matrix and vector interface. - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. Contributed by Daniel Berlin This file is part of GCC. @@ -30,6 +31,7 @@ along with GCC; see the file COPYING3. If not see typedef int *lambda_vector; DEF_VEC_P(lambda_vector); DEF_VEC_ALLOC_P(lambda_vector,heap); +DEF_VEC_ALLOC_P(lambda_vector,gc); typedef VEC(lambda_vector, heap) *lambda_vector_vec_p; DEF_VEC_P (lambda_vector_vec_p); diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 3c2f1b2..6477542 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -1,5 +1,6 @@ /* Data references and dependences detectors. - Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. Contributed by Sebastian Pop This file is part of GCC. @@ -131,7 +132,7 @@ struct access_matrix VEC (loop_p, heap) *loop_nest; int nb_induction_vars; VEC (tree, heap) *parameters; - VEC (lambda_vector, heap) *matrix; + VEC (lambda_vector, gc) *matrix; }; #define AM_LOOP_NEST(M) (M)->loop_nest diff --git a/gcc/tree-loop-linear.c b/gcc/tree-loop-linear.c index 8b57e2a..cc2440d 100644 --- a/gcc/tree-loop-linear.c +++ b/gcc/tree-loop-linear.c @@ -1,5 +1,6 @@ /* Linear Loop transforms - Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 + Free Software Foundation, Inc. Contributed by Daniel Berlin . This file is part of GCC. @@ -334,12 +335,13 @@ linear_transform_loops (void) lambda_trans_matrix trans; struct obstack lambda_obstack; struct loop *loop; - VEC(loop_p,heap) *nest = VEC_alloc (loop_p, heap, 3); + VEC(loop_p,heap) *nest; depth = perfect_loop_nest_depth (loop_nest); if (depth == 0) continue; + nest = VEC_alloc (loop_p, heap, 3); for (loop = loop_nest; loop; loop = loop->inner) VEC_safe_push (loop_p, heap, nest, loop);