From 251e2ff23fc7a7c7a319dee3fa6acac3d8c2642a Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 4 Apr 2005 19:41:14 +0000 Subject: system.h (GCOV_SIZE_TYPE): Unposion. * system.h (GCOV_SIZE_TYPE): Unposion. * gcov-io.h (GCOV_TYPE_NODE): Delete, replacing with... (GCOV_TYPE_SIZE): ...this new macro. * coverage.h (get_gcov_type, GCOV_TYPE_NODE): Declare. * coverage.c (get_gcov_type, get_gcov_unsigned_t): New functions. (rtl_coverage_counter_ref): Use GCOV_TYPE_SIZE. (build_fn_info_type, build_fn_info_value, build_ctr_info_type) (build_ctr_info_value, build_gcov_info): Use get_gcov_unsigned_t instead of unsigned_intSI_type_node. * rtl-profile.c (rtl_gen_interval_profiler, rtl_gen_pow2_profiler) (rtl_gen_one_value_profiler_no_edge_manipulation) (rtl_gen_const_delta_profiler): Use GCOV_TYPE_SIZE. * value-prof.c: Include coverage.h. From-SVN: r97570 --- gcc/ChangeLog | 16 ++++++++++++++++ gcc/coverage.c | 45 ++++++++++++++++++++++++++++++--------------- gcc/coverage.h | 4 ++++ gcc/gcov-io.h | 6 +----- gcc/rtl-profile.c | 16 ++++++---------- gcc/system.h | 3 +-- gcc/value-prof.c | 1 + 7 files changed, 59 insertions(+), 32 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c4716f..20e9b39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2004-04-04 Richard Sandiford + + * system.h (GCOV_SIZE_TYPE): Unposion. + * gcov-io.h (GCOV_TYPE_NODE): Delete, replacing with... + (GCOV_TYPE_SIZE): ...this new macro. + * coverage.h (get_gcov_type, GCOV_TYPE_NODE): Declare. + * coverage.c (get_gcov_type, get_gcov_unsigned_t): New functions. + (rtl_coverage_counter_ref): Use GCOV_TYPE_SIZE. + (build_fn_info_type, build_fn_info_value, build_ctr_info_type) + (build_ctr_info_value, build_gcov_info): Use get_gcov_unsigned_t + instead of unsigned_intSI_type_node. + * rtl-profile.c (rtl_gen_interval_profiler, rtl_gen_pow2_profiler) + (rtl_gen_one_value_profiler_no_edge_manipulation) + (rtl_gen_const_delta_profiler): Use GCOV_TYPE_SIZE. + * value-prof.c: Include coverage.h. + 2005-04-02 Daniel Berlin Diego Novillo diff --git a/gcc/coverage.c b/gcc/coverage.c index a4f4d00..a5a8f19 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -120,7 +120,22 @@ static tree build_ctr_info_type (void); static tree build_ctr_info_value (unsigned, tree); static tree build_gcov_info (void); static void create_coverage (void); + +/* Return the type node for gcov_type. */ + +tree +get_gcov_type (void) +{ + return lang_hooks.types.type_for_size (GCOV_TYPE_SIZE, false); +} + +/* Return the type node for gcov_unsigned_t. */ +static tree +get_gcov_unsigned_t (void) +{ + return lang_hooks.types.type_for_size (32, true); +} static hashval_t htab_counts_entry_hash (const void *of) @@ -399,8 +414,7 @@ coverage_counter_alloc (unsigned counter, unsigned num) rtx rtl_coverage_counter_ref (unsigned counter, unsigned no) { - unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1); - enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0); + enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); rtx ref; gcc_assert (no < fn_n_ctrs[counter] - fn_b_ctrs[counter]); @@ -412,7 +426,8 @@ rtl_coverage_counter_ref (unsigned counter, unsigned no) (tree_ctr_tables[counter])))); SYMBOL_REF_FLAGS (ctr_labels[counter]) = SYMBOL_FLAG_LOCAL; } - ref = plus_constant (ctr_labels[counter], gcov_size / BITS_PER_UNIT * no); + ref = plus_constant (ctr_labels[counter], + GCOV_TYPE_SIZE / BITS_PER_UNIT * no); ref = gen_rtx_MEM (mode, ref); set_mem_alias_set (ref, new_alias_set ()); MEM_NOTRAP_P (ref) = 1; @@ -602,10 +617,10 @@ build_fn_info_type (unsigned int counters) tree array_type; /* ident */ - fields = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); + fields = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ()); /* checksum */ - field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); + field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ()); TREE_CHAIN (field) = fields; fields = field; @@ -636,12 +651,12 @@ build_fn_info_value (const struct function_list *function, tree type) tree array_value = NULL_TREE; /* ident */ - value = tree_cons (fields, build_int_cstu (unsigned_intSI_type_node, + value = tree_cons (fields, build_int_cstu (get_gcov_unsigned_t (), function->ident), value); fields = TREE_CHAIN (fields); /* checksum */ - value = tree_cons (fields, build_int_cstu (unsigned_intSI_type_node, + value = tree_cons (fields, build_int_cstu (get_gcov_unsigned_t (), function->checksum), value); fields = TREE_CHAIN (fields); @@ -674,7 +689,7 @@ build_ctr_info_type (void) tree gcov_merge_fn_type; /* counters */ - field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); + field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ()); TREE_CHAIN (field) = fields; fields = field; @@ -711,7 +726,7 @@ build_ctr_info_value (unsigned int counter, tree type) /* counters */ value = tree_cons (fields, - build_int_cstu (unsigned_intSI_type_node, + build_int_cstu (get_gcov_unsigned_t (), prg_n_ctrs[counter]), value); fields = TREE_CHAIN (fields); @@ -785,11 +800,11 @@ build_gcov_info (void) const_type = build_qualified_type (type, TYPE_QUAL_CONST); /* Version ident */ - field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); + field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ()); TREE_CHAIN (field) = fields; fields = field; - value = tree_cons (field, build_int_cstu (unsigned_intSI_type_node, - GCOV_VERSION), value); + value = tree_cons (field, build_int_cstu (TREE_TYPE (field), GCOV_VERSION), + value); /* next -- NULL */ field = build_decl (FIELD_DECL, NULL_TREE, build_pointer_type (const_type)); @@ -798,11 +813,11 @@ build_gcov_info (void) value = tree_cons (field, null_pointer_node, value); /* stamp */ - field = build_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); + field = build_decl (FIELD_DECL, NULL_TREE, get_gcov_unsigned_t ()); TREE_CHAIN (field) = fields; fields = field; - value = tree_cons (field, build_int_cstu (unsigned_intSI_type_node, - local_tick), value); + value = tree_cons (field, build_int_cstu (TREE_TYPE (field), local_tick), + value); /* Filename */ string_type = build_pointer_type (build_qualified_type (char_type_node, diff --git a/gcc/coverage.h b/gcc/coverage.h index 033d3fd..d004e23 100644 --- a/gcc/coverage.h +++ b/gcc/coverage.h @@ -47,4 +47,8 @@ extern gcov_type *get_coverage_counts (unsigned /*counter*/, unsigned /*expected*/, const struct gcov_ctr_summary **); +extern tree get_gcov_type (void); + +#define GCOV_TYPE_NODE get_gcov_type () + #endif diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index 904f541..d0bacff 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -214,11 +214,7 @@ typedef HOST_WIDEST_INT gcov_type; #include #endif #else /*!IN_GCOV */ -#if LONG_LONG_TYPE_SIZE > 32 -#define GCOV_TYPE_NODE intDI_type_node -#else -#define GCOV_TYPE_NODE intSI_type_node -#endif +#define GCOV_TYPE_SIZE (LONG_LONG_TYPE_SIZE > 32 ? 64 : 32) #endif #if defined (HOST_HAS_F_SETLKW) diff --git a/gcc/rtl-profile.c b/gcc/rtl-profile.c index d07d564..614525d 100644 --- a/gcc/rtl-profile.c +++ b/gcc/rtl-profile.c @@ -83,14 +83,13 @@ rtl_gen_edge_profiler (int edgeno, edge e) static void rtl_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) { - unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1); - enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0); + enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); rtx mem_ref, tmp, tmp1, mr, val; rtx sequence; rtx more_label = gen_label_rtx (); rtx less_label = gen_label_rtx (); rtx end_of_code_label = gen_label_rtx (); - int per_counter = gcov_size / BITS_PER_UNIT; + int per_counter = GCOV_TYPE_SIZE / BITS_PER_UNIT; edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn), PREV_INSN (value->hvalue.rtl.insn)); @@ -169,13 +168,12 @@ rtl_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base) static void rtl_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) { - unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1); - enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0); + enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); rtx mem_ref, tmp, mr, uval; rtx sequence; rtx end_of_code_label = gen_label_rtx (); rtx loop_label = gen_label_rtx (); - int per_counter = gcov_size / BITS_PER_UNIT; + int per_counter = GCOV_TYPE_SIZE / BITS_PER_UNIT; edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn), PREV_INSN (value->hvalue.rtl.insn)); @@ -245,8 +243,7 @@ static rtx rtl_gen_one_value_profiler_no_edge_manipulation (histogram_value value, unsigned tag, unsigned base) { - unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1); - enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0); + enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); rtx stored_value_ref, counter_ref, all_ref, stored_value, counter, all; rtx tmp, uval; rtx sequence; @@ -340,8 +337,7 @@ static void rtl_gen_const_delta_profiler (histogram_value value, unsigned tag, unsigned base) { histogram_value one_value_delta; - unsigned gcov_size = tree_low_cst (TYPE_SIZE (GCOV_TYPE_NODE), 1); - enum machine_mode mode = mode_for_size (gcov_size, MODE_INT, 0); + enum machine_mode mode = mode_for_size (GCOV_TYPE_SIZE, MODE_INT, 0); rtx stored_value_ref, stored_value, tmp, uval; rtx sequence; edge e = split_block (BLOCK_FOR_INSN (value->hvalue.rtl.insn), diff --git a/gcc/system.h b/gcc/system.h index f285e87..d1b9d2e 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -646,8 +646,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; PROMOTED_MODE EXPAND_BUILTIN_VA_END \ LINKER_DOES_NOT_WORK_WITH_DWARF2 FUNCTION_ARG_KEEP_AS_REFERENCE \ GIV_SORT_CRITERION MAX_LONG_TYPE_SIZE MAX_LONG_DOUBLE_TYPE_SIZE \ - MAX_WCHAR_TYPE_SIZE GCOV_TYPE_SIZE SHARED_SECTION_ASM_OP \ - INTEGRATE_THRESHOLD \ + MAX_WCHAR_TYPE_SIZE SHARED_SECTION_ASM_OPINTEGRATE_THRESHOLD \ FINAL_REG_PARM_STACK_SPACE MAYBE_REG_PARM_STACK_SPACE \ TRADITIONAL_PIPELINE_INTERFACE DFA_PIPELINE_INTERFACE \ DBX_OUTPUT_STANDARD_TYPES BUILTIN_SETJMP_FRAME_VALUE \ diff --git a/gcc/value-prof.c b/gcc/value-prof.c index 4712b52..0ef054e 100644 --- a/gcc/value-prof.c +++ b/gcc/value-prof.c @@ -37,6 +37,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "tree-flow.h" #include "tree-flow-inline.h" #include "diagnostic.h" +#include "coverage.h" #include "tree.h" #include "gcov-io.h" -- cgit v1.1