Commit 070e3969 by Richard Sandiford Committed by Richard Sandiford

coverage.h (GCOV_TYPE_NODE): Delete.

	* coverage.h (GCOV_TYPE_NODE): Delete.
	* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref)
	(build_ctr_info_type): Use get_gcov_type () instead of GCOV_TYPE_NODE.
	* tree-profile.c (tree_gen_edge_profiler, tree_gen_interval_profiler)
	(tree_gen_pow2_profiler, tree_gen_one_value_profiler): Likewise.
	* value-prof.c (tree_divmod_fixed_value_transform): Delete.

From-SVN: r97760
parent fb72a0a3
2004-04-06 Richard Sandiford <rsandifo@redhat.com> 2004-04-06 Richard Sandiford <rsandifo@redhat.com>
* coverage.h (GCOV_TYPE_NODE): Delete.
* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref)
(build_ctr_info_type): Use get_gcov_type () instead of GCOV_TYPE_NODE.
* tree-profile.c (tree_gen_edge_profiler, tree_gen_interval_profiler)
(tree_gen_pow2_profiler, tree_gen_one_value_profiler): Likewise.
* value-prof.c (tree_divmod_fixed_value_transform): Delete.
2004-04-06 Richard Sandiford <rsandifo@redhat.com>
PR other/20792 PR other/20792
* Makefile.in (gcc.pot): Remove options.c dependency. * Makefile.in (gcc.pot): Remove options.c dependency.
* optc-gen.awk: Don't quote help strings with N_(). * optc-gen.awk: Don't quote help strings with N_().
......
...@@ -392,16 +392,17 @@ coverage_counter_alloc (unsigned counter, unsigned num) ...@@ -392,16 +392,17 @@ coverage_counter_alloc (unsigned counter, unsigned num)
/* We don't know the size yet; make it big enough that nobody /* We don't know the size yet; make it big enough that nobody
will make any clever transformation on it. */ will make any clever transformation on it. */
char buf[20]; char buf[20];
tree gcov_type_node = get_gcov_type ();
tree domain_tree tree domain_tree
= build_index_type (build_int_cst (NULL_TREE, 1000)); /* replaced later */ = build_index_type (build_int_cst (NULL_TREE, 1000)); /* replaced later */
tree gcov_type_array_type tree gcov_type_array_type
= build_array_type (GCOV_TYPE_NODE, domain_tree); = build_array_type (gcov_type_node, domain_tree);
tree_ctr_tables[counter] tree_ctr_tables[counter]
= build_decl (VAR_DECL, NULL_TREE, gcov_type_array_type); = build_decl (VAR_DECL, NULL_TREE, gcov_type_array_type);
TREE_STATIC (tree_ctr_tables[counter]) = 1; TREE_STATIC (tree_ctr_tables[counter]) = 1;
ASM_GENERATE_INTERNAL_LABEL (buf, "LPBX", counter + 1); ASM_GENERATE_INTERNAL_LABEL (buf, "LPBX", counter + 1);
DECL_NAME (tree_ctr_tables[counter]) = get_identifier (buf); DECL_NAME (tree_ctr_tables[counter]) = get_identifier (buf);
DECL_ALIGN (tree_ctr_tables[counter]) = TYPE_ALIGN (GCOV_TYPE_NODE); DECL_ALIGN (tree_ctr_tables[counter]) = TYPE_ALIGN (gcov_type_node);
} }
fn_b_ctrs[counter] = fn_n_ctrs[counter]; fn_b_ctrs[counter] = fn_n_ctrs[counter];
fn_n_ctrs[counter] += num; fn_n_ctrs[counter] += num;
...@@ -440,18 +441,19 @@ rtl_coverage_counter_ref (unsigned counter, unsigned no) ...@@ -440,18 +441,19 @@ rtl_coverage_counter_ref (unsigned counter, unsigned no)
tree tree
tree_coverage_counter_ref (unsigned counter, unsigned no) 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])); tree domain_type = TYPE_DOMAIN (TREE_TYPE (tree_ctr_tables[counter]));
gcc_assert (no < fn_n_ctrs[counter] - fn_b_ctrs[counter]); gcc_assert (no < fn_n_ctrs[counter] - fn_b_ctrs[counter]);
no += prg_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. */ /* "no" here is an array index, scaled to bytes later. */
return build4 (ARRAY_REF, GCOV_TYPE_NODE, tree_ctr_tables[counter], return build4 (ARRAY_REF, gcov_type_node, tree_ctr_tables[counter],
fold_convert (domain_type, fold_convert (domain_type,
build_int_cst (NULL_TREE, no)), build_int_cst (NULL_TREE, no)),
TYPE_MIN_VALUE (domain_type), TYPE_MIN_VALUE (domain_type),
size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (GCOV_TYPE_NODE), size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (gcov_type_node),
size_int (TYPE_ALIGN_UNIT (GCOV_TYPE_NODE)))); size_int (TYPE_ALIGN_UNIT (gcov_type_node))));
} }
/* Generate a checksum for a string. CHKSUM is the current /* Generate a checksum for a string. CHKSUM is the current
...@@ -685,7 +687,7 @@ build_ctr_info_type (void) ...@@ -685,7 +687,7 @@ build_ctr_info_type (void)
{ {
tree type = lang_hooks.types.make_type (RECORD_TYPE); tree type = lang_hooks.types.make_type (RECORD_TYPE);
tree field, fields = NULL_TREE; tree field, fields = NULL_TREE;
tree gcov_ptr_type = build_pointer_type (GCOV_TYPE_NODE); tree gcov_ptr_type = build_pointer_type (get_gcov_type ());
tree gcov_merge_fn_type; tree gcov_merge_fn_type;
/* counters */ /* counters */
......
...@@ -49,6 +49,4 @@ extern gcov_type *get_coverage_counts (unsigned /*counter*/, ...@@ -49,6 +49,4 @@ extern gcov_type *get_coverage_counts (unsigned /*counter*/,
extern tree get_gcov_type (void); extern tree get_gcov_type (void);
#define GCOV_TYPE_NODE get_gcov_type ()
#endif #endif
...@@ -61,14 +61,15 @@ tree_init_edge_profiler (void) ...@@ -61,14 +61,15 @@ tree_init_edge_profiler (void)
static void static void
tree_gen_edge_profiler (int edgeno, edge e) tree_gen_edge_profiler (int edgeno, edge e)
{ {
tree tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tree gcov_type_node = get_gcov_type ();
tree tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tree tmp1 = create_tmp_var (gcov_type_node, "PROF");
tree tmp2 = create_tmp_var (gcov_type_node, "PROF");
tree ref = tree_coverage_counter_ref (GCOV_COUNTER_ARCS, edgeno); tree ref = tree_coverage_counter_ref (GCOV_COUNTER_ARCS, edgeno);
tree stmt1 = build (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref); tree stmt1 = build (MODIFY_EXPR, gcov_type_node, tmp1, ref);
tree stmt2 = build (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, tree stmt2 = build (MODIFY_EXPR, gcov_type_node, tmp2,
build (PLUS_EXPR, GCOV_TYPE_NODE, build (PLUS_EXPR, gcov_type_node,
tmp1, integer_one_node)); tmp1, integer_one_node));
tree stmt3 = build (MODIFY_EXPR, GCOV_TYPE_NODE, ref, tmp2); tree stmt3 = build (MODIFY_EXPR, gcov_type_node, ref, tmp2);
bsi_insert_on_edge (e, stmt1); bsi_insert_on_edge (e, stmt1);
bsi_insert_on_edge (e, stmt2); bsi_insert_on_edge (e, stmt2);
bsi_insert_on_edge (e, stmt3); bsi_insert_on_edge (e, stmt3);
...@@ -95,6 +96,7 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -95,6 +96,7 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
tree stmt = value->hvalue.tree.stmt; tree stmt = value->hvalue.tree.stmt;
block_stmt_iterator bsi = bsi_for_stmt (stmt); block_stmt_iterator bsi = bsi_for_stmt (stmt);
basic_block bb = bb_for_stmt (stmt); basic_block bb = bb_for_stmt (stmt);
tree gcov_type_node = get_gcov_type ();
tree optype; tree optype;
op = stmt; op = stmt;
...@@ -143,7 +145,7 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -143,7 +145,7 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
bsi_insert_before (&bsi, stmt3, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt3, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt4, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt4, BSI_SAME_STMT);
index = create_tmp_var (GCOV_TYPE_NODE, "PROF"); index = create_tmp_var (gcov_type_node, "PROF");
/* Check for too big. */ /* Check for too big. */
stmt1 = build3 (COND_EXPR, void_type_node, stmt1 = build3 (COND_EXPR, void_type_node,
...@@ -167,23 +169,24 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -167,23 +169,24 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
/* Normal case, within range. */ /* Normal case, within range. */
label3 = build1 (LABEL_EXPR, void_type_node, label_decl3); label3 = build1 (LABEL_EXPR, void_type_node, label_decl3);
bsi_insert_before (&bsi, label3, BSI_SAME_STMT); bsi_insert_before (&bsi, label3, BSI_SAME_STMT);
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, index, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, index,
build1 (NOP_EXPR, GCOV_TYPE_NODE, val)); build1 (NOP_EXPR, gcov_type_node, val));
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bb3end = stmt1; bb3end = stmt1;
/* Too big */ /* Too big */
label4 = build1 (LABEL_EXPR, void_type_node, label_decl4); label4 = build1 (LABEL_EXPR, void_type_node, label_decl4);
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, index, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, index,
build_int_cst (GCOV_TYPE_NODE, value->hdata.intvl.steps)); build_int_cst (gcov_type_node, value->hdata.intvl.steps));
bsi_insert_before (&bsi, label4, BSI_SAME_STMT); bsi_insert_before (&bsi, label4, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bb4end = stmt1; bb4end = stmt1;
/* Too small */ /* Too small */
label5 = build1 (LABEL_EXPR, void_type_node, label_decl5); label5 = build1 (LABEL_EXPR, void_type_node, label_decl5);
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, index, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, index,
build_int_cst (GCOV_TYPE_NODE, value->hdata.intvl.steps + 1)); build_int_cst (gcov_type_node,
value->hdata.intvl.steps + 1));
bsi_insert_before (&bsi, label5, BSI_SAME_STMT); bsi_insert_before (&bsi, label5, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bb5end = stmt1; bb5end = stmt1;
...@@ -192,22 +195,22 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -192,22 +195,22 @@ tree_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
label6 = build1 (LABEL_EXPR, void_type_node, label_decl6); label6 = build1 (LABEL_EXPR, void_type_node, label_decl6);
bsi_insert_before (&bsi, label6, BSI_SAME_STMT); bsi_insert_before (&bsi, label6, BSI_SAME_STMT);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
tmp3 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp3 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1,
build2 (PLUS_EXPR, GCOV_TYPE_NODE, index, build2 (PLUS_EXPR, gcov_type_node, index,
TREE_OPERAND (ref, 1))); TREE_OPERAND (ref, 1)));
TREE_OPERAND (ref, 1) = tmp1; TREE_OPERAND (ref, 1) = tmp1;
/* Make a copy to avoid sharing complaints. */ /* Make a copy to avoid sharing complaints. */
ref2 = build4 (ARRAY_REF, TREE_TYPE (ref), TREE_OPERAND (ref, 0), ref2 = build4 (ARRAY_REF, TREE_TYPE (ref), TREE_OPERAND (ref, 0),
TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2), TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2),
TREE_OPERAND (ref, 3)); TREE_OPERAND (ref, 3));
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, ref); stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2, ref);
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp3, stmt3 = build2 (MODIFY_EXPR, gcov_type_node, tmp3,
build2 (PLUS_EXPR, GCOV_TYPE_NODE, tmp2, integer_one_node)); build2 (PLUS_EXPR, gcov_type_node, tmp2, integer_one_node));
stmt4 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref2, tmp3); stmt4 = build2 (MODIFY_EXPR, gcov_type_node, ref2, tmp3);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt3, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt3, BSI_SAME_STMT);
...@@ -259,6 +262,7 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -259,6 +262,7 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
tree stmt = value->hvalue.tree.stmt; tree stmt = value->hvalue.tree.stmt;
block_stmt_iterator bsi = bsi_for_stmt (stmt); block_stmt_iterator bsi = bsi_for_stmt (stmt);
basic_block bb = bb_for_stmt (stmt); basic_block bb = bb_for_stmt (stmt);
tree gcov_type_node = get_gcov_type ();
tree optype, optypesigned, optypeunsigned; tree optype, optypesigned, optypeunsigned;
op = stmt; op = stmt;
...@@ -289,9 +293,9 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -289,9 +293,9 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
/* Set up variables and check if denominator is negative when considered /* Set up variables and check if denominator is negative when considered
as signed. */ as signed. */
index = create_tmp_var (GCOV_TYPE_NODE, "PROF"); index = create_tmp_var (gcov_type_node, "PROF");
denom = create_tmp_var (optype, "PROF"); denom = create_tmp_var (optype, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, index, integer_zero_node); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, index, integer_zero_node);
stmt2 = build2 (MODIFY_EXPR, optype, denom, op); stmt2 = build2 (MODIFY_EXPR, optype, denom, op);
if (optypesigned == optype) if (optypesigned == optype)
{ {
...@@ -335,8 +339,8 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -335,8 +339,8 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
/* Loop. Increment index, shift denominator, repeat if denominator nonzero. */ /* Loop. Increment index, shift denominator, repeat if denominator nonzero. */
label2 = build1 (LABEL_EXPR, void_type_node, label_decl2); label2 = build1 (LABEL_EXPR, void_type_node, label_decl2);
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, index, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, index,
build2 (PLUS_EXPR, GCOV_TYPE_NODE, index, integer_one_node)); build2 (PLUS_EXPR, gcov_type_node, index, integer_one_node));
if (optypeunsigned == optype) if (optypeunsigned == optype)
{ {
tmp1 = denom; tmp1 = denom;
...@@ -364,19 +368,20 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -364,19 +368,20 @@ tree_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
/* Increment the appropriate counter. */ /* Increment the appropriate counter. */
label3 = build1 (LABEL_EXPR, void_type_node, label_decl3); label3 = build1 (LABEL_EXPR, void_type_node, label_decl3);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
tmp3 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp3 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1,
build2 (PLUS_EXPR, GCOV_TYPE_NODE, index, TREE_OPERAND (ref, 1))); build2 (PLUS_EXPR, gcov_type_node,
index, TREE_OPERAND (ref, 1)));
TREE_OPERAND (ref, 1) = tmp1; TREE_OPERAND (ref, 1) = tmp1;
/* Make a copy to avoid sharing complaints. */ /* Make a copy to avoid sharing complaints. */
ref2 = build4 (ARRAY_REF, TREE_TYPE (ref), TREE_OPERAND (ref, 0), ref2 = build4 (ARRAY_REF, TREE_TYPE (ref), TREE_OPERAND (ref, 0),
TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2), TREE_OPERAND (ref, 3)); TREE_OPERAND (ref, 1), TREE_OPERAND (ref, 2), TREE_OPERAND (ref, 3));
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, ref); stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2, ref);
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp3, stmt3 = build2 (MODIFY_EXPR, gcov_type_node, tmp3,
build2 (PLUS_EXPR, GCOV_TYPE_NODE, tmp2, integer_one_node)); build2 (PLUS_EXPR, gcov_type_node, tmp2, integer_one_node));
stmt4 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref2, tmp3); stmt4 = build2 (MODIFY_EXPR, gcov_type_node, ref2, tmp3);
bsi_insert_before (&bsi, label3, BSI_SAME_STMT); bsi_insert_before (&bsi, label3, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
...@@ -425,6 +430,7 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -425,6 +430,7 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
tree stmt = value->hvalue.tree.stmt; tree stmt = value->hvalue.tree.stmt;
block_stmt_iterator bsi = bsi_for_stmt (stmt); block_stmt_iterator bsi = bsi_for_stmt (stmt);
basic_block bb = bb_for_stmt (stmt); basic_block bb = bb_for_stmt (stmt);
tree gcov_type_node = get_gcov_type ();
tree optype; tree optype;
op = stmt; op = stmt;
...@@ -440,10 +446,10 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -440,10 +446,10 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
optype = TREE_TYPE (op); optype = TREE_TYPE (op);
/* Check if the stored value matches. */ /* Check if the stored value matches. */
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (optype, "PROF"); tmp2 = create_tmp_var (optype, "PROF");
tmp3 = create_tmp_var (optype, "PROF"); tmp3 = create_tmp_var (optype, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref1); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1, ref1);
stmt2 = build2 (MODIFY_EXPR, optype, tmp2, stmt2 = build2 (MODIFY_EXPR, optype, tmp2,
build1 (NOP_EXPR, optype, tmp1)); build1 (NOP_EXPR, optype, tmp1));
stmt3 = build2 (MODIFY_EXPR, optype, tmp3, op); stmt3 = build2 (MODIFY_EXPR, optype, tmp3, op);
...@@ -459,8 +465,8 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -459,8 +465,8 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
/* Does not match; check whether the counter is zero. */ /* Does not match; check whether the counter is zero. */
label1 = build1 (LABEL_EXPR, void_type_node, label_decl1); label1 = build1 (LABEL_EXPR, void_type_node, label_decl1);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref2); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1, ref2);
stmt2 = build3 (COND_EXPR, void_type_node, stmt2 = build3 (COND_EXPR, void_type_node,
build2 (EQ_EXPR, boolean_type_node, tmp1, integer_zero_node), build2 (EQ_EXPR, boolean_type_node, tmp1, integer_zero_node),
build1 (GOTO_EXPR, void_type_node, label_decl3), build1 (GOTO_EXPR, void_type_node, label_decl3),
...@@ -472,13 +478,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -472,13 +478,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
/* Counter is not zero yet, decrement. */ /* Counter is not zero yet, decrement. */
label2 = build1 (LABEL_EXPR, void_type_node, label_decl2); label2 = build1 (LABEL_EXPR, void_type_node, label_decl2);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref2); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1, ref2);
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2,
build (MINUS_EXPR, GCOV_TYPE_NODE, build (MINUS_EXPR, gcov_type_node, tmp1, integer_one_node));
tmp1, integer_one_node)); stmt3 = build2 (MODIFY_EXPR, gcov_type_node, ref2, tmp2);
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref2, tmp2);
bsi_insert_before (&bsi, label2, BSI_SAME_STMT); bsi_insert_before (&bsi, label2, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
...@@ -488,11 +493,11 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -488,11 +493,11 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
/* Counter was zero, store new value. */ /* Counter was zero, store new value. */
label3 = build1 (LABEL_EXPR, void_type_node, label_decl3); label3 = build1 (LABEL_EXPR, void_type_node, label_decl3);
tmp1 = create_tmp_var (optype, "PROF"); tmp1 = create_tmp_var (optype, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, optype, tmp1, op); stmt1 = build2 (MODIFY_EXPR, optype, tmp1, op);
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2,
build1 (NOP_EXPR, GCOV_TYPE_NODE, tmp1)); build1 (NOP_EXPR, gcov_type_node, tmp1));
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref1, tmp2); stmt3 = build2 (MODIFY_EXPR, gcov_type_node, ref1, tmp2);
bsi_insert_before (&bsi, label3, BSI_SAME_STMT); bsi_insert_before (&bsi, label3, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
...@@ -502,13 +507,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -502,13 +507,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
/* Increment counter. */ /* Increment counter. */
label4 = build1 (LABEL_EXPR, void_type_node, label_decl4); label4 = build1 (LABEL_EXPR, void_type_node, label_decl4);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref2); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1, ref2);
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2,
build (PLUS_EXPR, GCOV_TYPE_NODE, build (PLUS_EXPR, gcov_type_node, tmp1, integer_one_node));
tmp1, integer_one_node)); stmt3 = build2 (MODIFY_EXPR, gcov_type_node, ref2, tmp2);
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref2, tmp2);
bsi_insert_before (&bsi, label4, BSI_SAME_STMT); bsi_insert_before (&bsi, label4, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
...@@ -521,13 +525,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base) ...@@ -521,13 +525,12 @@ tree_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned base)
it is unable to update them correctly, or because it will duplicate it is unable to update them correctly, or because it will duplicate
the block or its part). */ the block or its part). */
label5 = build1 (LABEL_EXPR, void_type_node, label_decl5); label5 = build1 (LABEL_EXPR, void_type_node, label_decl5);
tmp1 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp1 = create_tmp_var (gcov_type_node, "PROF");
tmp2 = create_tmp_var (GCOV_TYPE_NODE, "PROF"); tmp2 = create_tmp_var (gcov_type_node, "PROF");
stmt1 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp1, ref3); stmt1 = build2 (MODIFY_EXPR, gcov_type_node, tmp1, ref3);
stmt2 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, tmp2, stmt2 = build2 (MODIFY_EXPR, gcov_type_node, tmp2,
build (PLUS_EXPR, GCOV_TYPE_NODE, build (PLUS_EXPR, gcov_type_node, tmp1, integer_one_node));
tmp1, integer_one_node)); stmt3 = build2 (MODIFY_EXPR, gcov_type_node, ref3, tmp2);
stmt3 = build2 (MODIFY_EXPR, GCOV_TYPE_NODE, ref3, tmp2);
bsi_insert_before (&bsi, label5, BSI_SAME_STMT); bsi_insert_before (&bsi, label5, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt1, BSI_SAME_STMT);
bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT); bsi_insert_before (&bsi, stmt2, BSI_SAME_STMT);
......
...@@ -1242,7 +1242,8 @@ tree_divmod_fixed_value_transform (tree stmt) ...@@ -1242,7 +1242,8 @@ tree_divmod_fixed_value_transform (tree stmt)
/* Compute probability of taking the optimal path. */ /* Compute probability of taking the optimal path. */
prob = (count * REG_BR_PROB_BASE + all / 2) / all; prob = (count * REG_BR_PROB_BASE + all / 2) / all;
tree_val = build_int_cst_wide (GCOV_TYPE_NODE, val & 0xffffffffull, val >> 32); tree_val = build_int_cst_wide (get_gcov_type (),
val & 0xffffffffull, val >> 32);
result = tree_divmod_fixed_value (stmt, op, op1, op2, tree_val, prob, count, all); result = tree_divmod_fixed_value (stmt, op, op1, op2, tree_val, prob, count, all);
TREE_OPERAND (modify, 1) = result; TREE_OPERAND (modify, 1) = result;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment