https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116526
--- Comment #13 from Filip Kastl <pheeck at gcc dot gnu.org> ---
Testing this:
```
diff --git a/gcc/coverage.cc b/gcc/coverage.cc
index f2a095a1279..14cf70c3975 100644
--- a/gcc/coverage.cc
+++ b/gcc/coverage.cc
@@ -883,9 +883,12 @@ build_fn_info (const struct coverage_data *data, tree
type, tree key)
{
vec<constructor_elt, va_gc> *ctr = NULL;
tree var = data->ctr_vars[ix];
+
+ bool ctr_var_exists = var && symtab_node::get (var);
+
unsigned count = 0;
- if (var)
+ if (ctr_var_exists)
count
= tree_to_shwi (TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (var))))
+ 1;
@@ -894,7 +897,7 @@ build_fn_info (const struct coverage_data *data, tree type,
tree key)
build_int_cstu (get_gcov_unsigned_t (),
count));
- if (var)
+ if (ctr_var_exists)
CONSTRUCTOR_APPEND_ELT (ctr, DECL_CHAIN (TYPE_FIELDS (ctr_type)),
build_fold_addr_expr (var));
```