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));

```

Reply via email to