===================================================================
@@ -189,7 +189,7 @@ static void read_counts_file (const char *, unsign
static tree build_var (tree, tree, int);
static void build_fn_info_type (tree, unsigned, tree);
static void build_info_type (tree, tree);
-static tree build_fn_info (const struct coverage_data *, tree, tree);
+static tree build_fn_info (const struct coverage_data *, tree);
static tree build_info (tree, tree);
static bool coverage_obj_init (void);
static vec<constructor_elt, va_gc> *coverage_obj_fn
@@ -1668,16 +1668,9 @@ build_fn_info_type (tree type, unsigned counters,
finish_builtin_struct (ctr_info, "__gcov_ctr_info", fields, NULL_TREE);
- /* key */
- field = build_decl (BUILTINS_LOCATION, FIELD_DECL, NULL_TREE,
- build_pointer_type (build_qualified_type
- (gcov_info_type, TYPE_QUAL_CONST)));
- fields = field;
-
/* ident */
field = build_decl (BUILTINS_LOCATION, FIELD_DECL, NULL_TREE,
get_gcov_unsigned_t ());
- DECL_CHAIN (field) = fields;
fields = field;
/* lineno_checksum */
@@ -1705,10 +1698,10 @@ build_fn_info_type (tree type, unsigned counters,
/* Returns a CONSTRUCTOR for a gcov_fn_info. DATA is
the coverage data for the function and TYPE is the gcov_fn_info
- RECORD_TYPE. KEY is the object file key. */
+ RECORD_TYPE. */
static tree
-build_fn_info (const struct coverage_data *data, tree type, tree key)
+build_fn_info (const struct coverage_data *data, tree type)
{
tree fields = TYPE_FIELDS (type);
tree ctr_type;
@@ -1716,11 +1709,6 @@ static tree
vec<constructor_elt, va_gc> *v1 = NULL;
vec<constructor_elt, va_gc> *v2 = NULL;
- /* key */
- CONSTRUCTOR_APPEND_ELT (v1, fields,
- build1 (ADDR_EXPR, TREE_TYPE (fields), key));
- fields = DECL_CHAIN (fields);
-
/* ident */
CONSTRUCTOR_APPEND_ELT (v1, fields,
build_int_cstu (get_gcov_unsigned_t (),
@@ -2556,7 +2544,7 @@ static vec<constructor_elt, va_gc> *
coverage_obj_fn (vec<constructor_elt, va_gc> *ctor, tree fn,
struct coverage_data const *data)
{
- tree init = build_fn_info (data, gcov_fn_info_type, gcov_info_var);
+ tree init = build_fn_info (data, gcov_fn_info_type);
tree var = build_var (fn, gcov_fn_info_type, -1);
DECL_INITIAL (var) = init;
===================================================================
@@ -380,7 +380,7 @@ gcov_compute_histogram (struct gcov_summary *sum)
{
gfi_ptr = gi_ptr->functions[f_ix];
- if (!gfi_ptr || gfi_ptr->key != gi_ptr)
+ if (!gfi_ptr)
continue;
ci_ptr = &gfi_ptr->ctrs[ctr_info_ix];
@@ -430,9 +430,6 @@ gcov_exit_compute_summary (struct gcov_summary *th
{
gfi_ptr = gi_ptr->functions[f_ix];
- if (gfi_ptr && gfi_ptr->key != gi_ptr)
- gfi_ptr = 0;
-
crc32 = crc32_unsigned (crc32, gfi_ptr ? gfi_ptr->cfg_checksum : 0);
crc32 = crc32_unsigned (crc32,
gfi_ptr ? gfi_ptr->lineno_checksum : 0);
@@ -688,7 +685,7 @@ gcov_exit_merge_gcda (struct gcov_info *gi_ptr,
if (length != GCOV_TAG_FUNCTION_LENGTH)
goto read_mismatch;
- if (!gfi_ptr || gfi_ptr->key != gi_ptr)
+ if (!gfi_ptr)
{
/* This function appears in the other program. We
need to buffer the information in order to write
@@ -832,10 +829,8 @@ gcov_write_func_counters (struct gcov_info *gi_ptr
else
{
gfi_ptr = gi_ptr->functions[f_ix];
- if (gfi_ptr && gfi_ptr->key == gi_ptr)
+ if (gfi_ptr)
length = GCOV_TAG_FUNCTION_LENGTH;
- else
- length = 0;
}
gcov_write_tag_length (GCOV_TAG_FUNCTION, length);
@@ -1474,7 +1469,7 @@ gcov_clear (void)
const struct gcov_fn_info *gfi_ptr = gi_ptr->functions[f_ix];
const struct gcov_ctr_info *ci_ptr;
- if (!gfi_ptr || gfi_ptr->key != gi_ptr)
+ if (!gfi_ptr)
continue;
ci_ptr = gfi_ptr->ctrs;
for (t_ix = 0; t_ix != GCOV_COUNTERS; t_ix++)
===================================================================
@@ -180,7 +180,6 @@ tag_function (unsigned tag ATTRIBUTE_UNUSED, unsig
fprintf (stderr, "Function id=%d fixed up\n", curr_fn_info->ident);
}
- curr_fn_info->key = curr_gcov_info;
curr_fn_info->ident = gcov_read_unsigned ();
curr_fn_info->lineno_checksum = gcov_read_unsigned ();
curr_fn_info->cfg_checksum = gcov_read_unsigned ();
@@ -833,9 +832,9 @@ gcov_merge (struct gcov_info *info1, struct gcov_i
const struct gcov_fn_info *gfi_ptr2 = info2->functions[f_ix];
const struct gcov_ctr_info *ci_ptr1, *ci_ptr2;
- if (!gfi_ptr1 || gfi_ptr1->key != info1)
+ if (!gfi_ptr1)
continue;
- if (!gfi_ptr2 || gfi_ptr2->key != info2)
+ if (!gfi_ptr2)
continue;
if (gfi_ptr1->cfg_checksum != gfi_ptr2->cfg_checksum)
@@ -1136,7 +1135,7 @@ gcov_profile_scale (struct gcov_info *profile, flo
const struct gcov_fn_info *gfi_ptr = gi_ptr->functions[f_ix];
const struct gcov_ctr_info *ci_ptr;
- if (!gfi_ptr || gfi_ptr->key != gi_ptr)
+ if (!gfi_ptr)
continue;
ci_ptr = gfi_ptr->ctrs;
@@ -1178,7 +1177,7 @@ gcov_profile_normalize (struct gcov_info *profile,
const struct gcov_fn_info *gfi_ptr = gi_ptr->functions[f_ix];
const struct gcov_ctr_info *ci_ptr;
- if (!gfi_ptr || gfi_ptr->key != gi_ptr)
+ if (!gfi_ptr)
continue;
ci_ptr = gfi_ptr->ctrs;
@@ -1264,7 +1263,7 @@ compute_one_gcov (const struct gcov_info *gcov_inf
{
unsigned t_ix;
const struct gcov_fn_info *gfi_ptr = gcov_info->functions[f_ix];
- if (!gfi_ptr || gfi_ptr->key != gcov_info)
+ if (!gfi_ptr)
continue;
const struct gcov_ctr_info *ci_ptr = gfi_ptr->ctrs;
for (t_ix = 0; t_ix < GCOV_COUNTERS_SUMMABLE; t_ix++)
@@ -1296,9 +1295,9 @@ compute_one_gcov (const struct gcov_info *gcov_inf
const struct gcov_fn_info *gfi_ptr1 = gcov_info1->functions[f_ix];
const struct gcov_fn_info *gfi_ptr2 = gcov_info2->functions[f_ix];
- if (!gfi_ptr1 || gfi_ptr1->key != gcov_info1)
+ if (!gfi_ptr1)
continue;
- if (!gfi_ptr2 || gfi_ptr2->key != gcov_info2)
+ if (!gfi_ptr2)
continue;
const struct gcov_ctr_info *ci_ptr1 = gfi_ptr1->ctrs;
@@ -1358,7 +1357,7 @@ gcov_info_count_all_cold (const struct gcov_info *
unsigned t_ix;
const struct gcov_fn_info *gfi_ptr = gcov_info->functions[f_ix];
- if (!gfi_ptr || gfi_ptr->key != gcov_info)
+ if (!gfi_ptr)
continue;
const struct gcov_ctr_info *ci_ptr = gfi_ptr->ctrs;
for (t_ix = 0; t_ix < GCOV_COUNTERS_SUMMABLE; t_ix++)
===================================================================
@@ -224,13 +224,10 @@ struct gcov_ctr_info
/* Information about a single function. This uses the trailing array
idiom. The number of counters is determined from the merge pointer
- array in gcov_info. The key is used to detect which of a set of
- comdat functions was selected -- it points to the gcov_info object
- of the object file containing the selected comdat function. */
+ array in gcov_info. */
struct gcov_fn_info
{
- const struct gcov_info *key; /* comdat key */
gcov_unsigned_t ident; /* unique ident of function */
gcov_unsigned_t lineno_checksum; /* function lineo_checksum */
gcov_unsigned_t cfg_checksum; /* function cfg checksum */