https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101574

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Well.

  {
    &nowarn_map,
    1,
    sizeof (nowarn_map),
    &gt_ggc_mx_hash_map_xint_hash_t_nowarn_spec_t_,
    &gt_pch_nx_hash_map_xint_hash_t_nowarn_spec_t_
  },

void
gt_ggc_mx_hash_map_xint_hash_t_nowarn_spec_t_ (void *x_p)
{
  hash_map<xint_hash_t,nowarn_spec_t> * const x =
(hash_map<xint_hash_t,nowarn_spec_t> *)x_p;
  if (ggc_test_and_set_mark (x))
    {
      gt_ggc_mx (x);
    }
}

So that's supposed to pick up the hash_map and hash_table overloads of
gt_ggc_mx.  In particular int_hash lacks ggc_* method overloads I think,
see how the various ggc_* hash traits work.

given the layout of the nowarn_spec hash-map I think all data should be
in-line, and thus only the hashtable memory itself needs to be marked
and thus you should see all of the table poisoned?  Breaking at
the above toplevel marker and following what it does might reveal
the error.

Reply via email to