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

--- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #21)
> So the issue is not that we remove id_string.55 var from the hash but
> that somehow marking the id_string.55 using *id_string.55 faults then?
> Why?  Is that really *X with X DECL_VALUE_EXPR being id_string.55 again
> and X isn't marked before we process this hashtable?

We first see in the DECL_VALUE_EXPR hash map an entry for id_string.55 ->
FRAME_*.id_string.55, id_string.55 is not marked (nothing but DECL_VALUE_EXPR
of id_string refers to it), so we delete that entry, then later on in the hash
table
we find id_string -> *id_string.55 mapping, id_string is marked, so we mark
also
*id_string.55 and therefore keep that.  Except that we've deleted
DECL_VALUE_EXPR for it, so now id_string.55 has DECL_HAS_VALUE_EXPR_P but
DECL_VALUE_EXPR == NULL.

Reply via email to