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

--- Comment #7 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #6)
> What I mean is if you ever traversing a hashtable, the hash should not use
> the value of a pointer because it could change between runs.

Thanks.

Unfortunately I'm doing that in quite a few places in the new implementation, I
think.

The new implementation folds instances of symbolic values and regions into
unique instances, and then uses pointer equality on them (which is good), and
also pointer hashing (which is likely bad, and likely leading to changeable
results).

I suspect what I need to do is to come up with a deterministic hash for each of
these objects that doesn't rely on pointer values, and to use that value
instead, rather than their addresses.  Given the uniqueness of values/regions
per analysis run, I think I'll add a globally unique ID per value/region and
base the hash off of that.

There are a few places I'm hashing based on trees, for constants and types.  Is
there a good way to hash those? (avoiding pointer values)

Reply via email to