From 35fa89150a5de322e7c32ad168172890b7fb1be3 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 21 Jun 2006 21:27:19 +0000 Subject: [PATCH] re PR middle-end/28034 (section anchors break -fprofile-generate) gcc/ PR middle-end/28034 * coverage.c (coverage_counter_alloc): Leave the index type unspecified. (coverage_counter_alloc): Use null arguments for operands 2 and 3 of the ARRAY_REF. From-SVN: r114870 --- gcc/ChangeLog | 8 ++++++++ gcc/coverage.c | 17 +++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 715b45e244c..b8cd0420f78 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2006-06-21 Richard Sandiford + + PR middle-end/28034 + * coverage.c (coverage_counter_alloc): Leave the index type + unspecified. + (coverage_counter_alloc): Use null arguments for operands 2 and 3 + of the ARRAY_REF. + 2006-06-21 Andrew Pinski * doc/invoke.texi (-fopenmp) Move to "Options Controlling C Dialect" diff --git a/gcc/coverage.c b/gcc/coverage.c index 38339304a30..5eaf4888fe3 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -388,15 +388,13 @@ coverage_counter_alloc (unsigned counter, unsigned num) if (!tree_ctr_tables[counter]) { - /* Generate and save a copy of this so it can be shared. */ - /* We don't know the size yet; make it big enough that nobody - will make any clever transformation on it. */ + /* Generate and save a copy of this so it can be shared. Leave + the index type unspecified for now; it will be set after all + functions have been compiled. */ char buf[20]; tree gcov_type_node = get_gcov_type (); - tree domain_tree - = build_index_type (build_int_cst (NULL_TREE, 1000)); /* replaced later */ tree gcov_type_array_type - = build_array_type (gcov_type_node, domain_tree); + = build_array_type (gcov_type_node, NULL_TREE); tree_ctr_tables[counter] = build_decl (VAR_DECL, NULL_TREE, gcov_type_array_type); TREE_STATIC (tree_ctr_tables[counter]) = 1; @@ -416,18 +414,13 @@ tree tree_coverage_counter_ref (unsigned counter, unsigned no) { tree gcov_type_node = get_gcov_type (); - tree domain_type = TYPE_DOMAIN (TREE_TYPE (tree_ctr_tables[counter])); gcc_assert (no < fn_n_ctrs[counter] - fn_b_ctrs[counter]); no += prg_n_ctrs[counter] + fn_b_ctrs[counter]; /* "no" here is an array index, scaled to bytes later. */ return build4 (ARRAY_REF, gcov_type_node, tree_ctr_tables[counter], - fold_convert (domain_type, - build_int_cst (NULL_TREE, no)), - TYPE_MIN_VALUE (domain_type), - size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (gcov_type_node), - size_int (TYPE_ALIGN_UNIT (gcov_type_node)))); + build_int_cst (NULL_TREE, no), NULL, NULL); } /* Generate a checksum for a string. CHKSUM is the current -- 2.30.2