It certainly merits investigation on the GCC side to see if this data is coming out as it ought to. Butk, we have to cope with the data as it exists, even bad old data from buggy old compilers.
So far the only violation of our assumption for the algorithm design is this case of direct self-reference. That is far simpler to handle than the general case of circular chains of references. For hashing purposes, we can treat a direct self reference as hashing to zero. If we come across cases of indirect circularity in the data, then we'll have to reconsider more fully. But this alone doesn't seem like it fouls our plans.
Thanks, Roland