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
This commit is contained in:
parent
d58a2b8348
commit
251e2ff23f
@ -1,3 +1,19 @@
|
||||
2004-04-04 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
* 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 <dberlin@dberlin.org>
|
||||
Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -214,11 +214,7 @@ typedef HOST_WIDEST_INT gcov_type;
|
||||
#include <sys/types.h>
|
||||
#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)
|
||||
|
@ -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),
|
||||
|
@ -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 \
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user